`
hochiang
  • 浏览: 21394 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

mysql 双主同步

 
阅读更多
主服务器IP:192.168.0.250

从服务器IP:192.168.0.252

实现目标:主从两台机器MySQL数据双向同步



数据库准备工作

分别A,B在两台服务器上执行锁表操作:

mysql>FLUSH TABLES WITH READ LOCK"

A点
将需要配置同步的数据库Dump出来:

shell>mysqldump -uroot -p mysql > /tmp/mysql.sql

将dump出来的文件拷贝到另外一台服务器上,方法随意。我用scp

shell>scp -P 22000 /tmp/mysql.sql root@192.168.0.252ter:/data
B

如果这台服务器已经建好库了,那么可以直接导数据:

shell>mysql -uroot -p  mysql < /data/mysql.sql

如果还没有该库,那么再导数据之前我们需要先建库。
CREATE DATABASE "databasename

最后我们需要在两台服务器上别分创建一个账号,用来同步数据。

shell>mysql -u root -p
A点
mysql>GRANT REPLICATION SLAVE, REPLICATION CLIENT, SUPER ON *.* TO 'BEIFEN'@'192.168.0.252' IDENTIFIED BY '123456' WITH GRANT OPTION;

mysql>FLUSH PRIVILEGES;
B点

mysql>GRANT REPLICATION SLAVE, REPLICATION CLIENT, SUPER ON *.* TO 'BEIFEN'@'192.168.0.250' IDENTIFIED BY '123456' WITH GRANT OPTION;

mysql>FLUSH PRIVILEGES;

修改my.cnf

首先,我们需求修改bind-address选项。保证mysql监听在一个可以被对方访问到的网口上,当然如果你监听在0.0.0.0上就不会有这个问题了,但是这么做通常会带来一些安全问题。我一般会让它监听内网地址

bind-address = 192.168.0.250(主服务器)

bind-address = 192.168.0.252(从服务器)


A点
将以下内容加到主服务器的my.cnf里
server-id = 250
log_bin = /data/mysql-bin.log
relay-log = mysql-relay
log_slave_updates = 1
binlog-ignore-db = mysql,information_schema
binlog_format = mixed
auto-increment-increment = 2
auto-increment-offset = 1
server-id服务器标识,我们必须给两台机器分配不同的server-id.

log-bin,开启mysql的binlog(二进制日志).开启后mysql会将所有的修改操作记录到binlog中,可以用mysqlbinlog工具查看,里面都是一条一条的sql语句。slave I/O会读取主机的binlog,然后把读取到的内容在slave上执行,这就是mysql主从同步的基本原理。

binlog-do-db,设置哪些数据库写binlog。

binlog-ingore-db,设置哪些数据库不写binlog。

通过这两个选项我们就可以设置哪些库同步哪些库不同步。

auto-increment-incrment和auto-increment-offset这两个选项的设置是为了防止2台服务器互相复制产生关键字段的冲突。如果他们用不同的便宜,比如一个按照1,3,5,7增加而另外一台按照那个2,4,6,8增加。auto-incrment-increment=2自动增加的字段每次步进是2,auto-increment-offset=1自动增加的字段的初始值是1


B点
将以下内容添加到从服务器
server-id = 252
log_bin = /data/mysql-bin.log
relay-log = mysql-relay
log_slave_updates = 1
binlog-ignore-db = mysql,information_schema
binlog_format = mixed
auto-increment-increment = 2
auto-increment-offset = 2 
注意这里auto_increment_offset选项的值跟主服务器上不一样。



分别重启A,B mysql服务

[root@hisdg1 ~]# service mysql restart

或者

shell>mysql -u root -p -e "RESET MASTER"


  A点
配置主机到从机同步

记录主机的master状态

mysql> show master status\G

*************************** 1. row ***************************

            File: log-bin.log.000002

        Position: 2842

    Binlog_Do_DB:

Binlog_Ignore_DB: mysql,test

1 row in set (0.00 sec)

根据主机显示结果在从机上配置master参数

mysql>CHANGE MASTER TO MASTER_HOST='192.168.0.252',MASTER_USER='BEIFEN',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=2842;

其中MASTER_HOST、MASTER_USER、MASTER_PASSWORD这些参数可以在my.cnf里。但是我个人更喜欢在mysql里配置,一方面安全点,另一方面MASTER_LOG_FILE和MASTER_LOG_POS这些参数还是得在mysql里面配置,不如一块在myql里配置来的方便。


B点
配置从机到主机同步(上一节的步骤反过来执行一遍)。

记录从机上的master状态

mysql> show master status\G

*************************** 1. row ***************************

            File: log-bin.log.000008

        Position: 12131228

    Binlog_Do_DB: databasename

Binlog_Ignore_DB: mysql,test

1 row in set (0.00 sec)

根据从机显示的结果在主机上配置master参数

mysql>CHANGE MASTER TO MASTER_HOST='192.168.0.250',MASTER_USER='rsync',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000008',MASTER_LOG_POS=12131228;

MASTER_LOG_FILE和MASTER_LOG_POS可不用设置。

分别开启A,B slave线程

mysql>start slave;



解锁

mysql>unlock tables;

转自:http://blog.itpub.net/29065182/viewspace-1329202/

server_id = 2
log-bin = e:/mysql-log/mysql-bin
log-error = e:/mysql-log/mysql-error.log
binlog-do-db = xxx
binlog-ignore-db = information_schema
binlog-ignore-db = mysql
binlog-ignore-db = test
binlog-ignore-db = performance_schema

log-slave-updates
slave-skip-errors = all
auto_increment_increment=2
auto_increment_offset=2
expire_logs_days = 30

replicate-do-db = xxx
replicate-ignore-db = information_schema
replicate-ignore-db = mysql
replicate-ignore-db = test
replicate-ignore-db = performance_schema

log-bin=fabian                             #M/S 需开启log-bin 日记文件
server-id=1                                #指定server-id 必须不一致,M/s 结构时 M binlog-do-db=TSC                           #同步数据库名称
binlog-ignore-db=mysql                     #忽略数据名称
replicate-do-db=TSC                        #用于控制slave来执行同步的行为
replicate-ignore-db=mysql                  #用于控制slave来执行同步的行为
log-slave-updates                          #把更新的记录写到二进制文件中
slave-skip-errors=all                      #跳过错误,继续执行复制
auto_increment_increment=2                 #设置主键单次增量
auto_increment_offset=1                    #设置单次增量中主键的偏移量
#expire_logs_days = 20                     #设置log-bin 超过多少天删除
max-binlog-size= 512M

# auto_increment_increment、auto_increment_offset 可以防止双主主键冲突问题

启动slave后这2个状态必须为YES
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
分享到:
nfs
评论

相关推荐

    mysql双主同步配置方案

    mysql双主同步配置方案

    mysql双主同步+keepalived高可用群集

    mysql【1】主从同步之人机交互自动化配置脚本-CSDN博客 ...mysql【3】keepalived+mysql双主同步,实现故障转移群集 https://blog.csdn.net/u014332402/article/details/136137707 这3篇文章所使用的所有自动化配置脚本

    Keepalived+MySQL双主.docx

    Keepalived+MySQL 双主同步复制 Keepalived 是一个开源软件,用于实现高可用性和负载均衡。它可以与 MySQL 等数据库结合,实现双主同步复制。下面是 Keepalived+MySQL 双主同步复制的实现步骤和关键点。 一、环境...

    MySql主从、双主同步文档

    #### 四、MySQL双主同步配置案例 ##### 1. 准备环境 - 服务器A (MYSQL_A): IP地址为192.168.1.6 - 服务器B (MYSQL_B): IP地址为192.168.1.30 ##### 2. 配置服务器A为主服务器 - 在服务器A上执行`show master ...

    mysql同步,双向同步

    MySQL双向同步配置详解 MySQL同步是指将多个数据库服务器之间的数据保持实时同步的过程。这种技术可以应用于分布式系统、数据备份、灾难恢复等场景。在这个资源中,我们将详细介绍如何配置 MySQL 双向同步。 MySQL...

    mysql 双主单活+keepalived 实现高可用

    MySQL双主复制是一种同步策略,其中两个服务器(主节点A和主节点B)互相复制数据。当在一个节点上执行写操作时,这些更改会立即同步到另一个节点。这样,即使一个节点发生故障,另一个节点也可以无缝接管服务,确保...

    MySQL主主双向同步测试报告.pdf

    MySQL主主双向同步是一种高可用性和高冗余性的数据库部署模式,它允许两台MySQL服务器互相作为主服务器和从服务器,实现数据的实时双向同步。这样,任何一台服务器上的数据更改都会被复制到另一台服务器上,提高了...

    mysql5.7双向实时同步

    在企业级应用中,这种同步策略常用于构建主主复制架构,以确保即使在一台服务器故障时,另一台服务器也能接管工作,避免数据丢失。 在配置MySQL 5.7的双向同步之前,需要注意以下关键点: 1. **版本匹配**:确保...

    MySQL 高可用性—keepalived+mysql双主.docx

    总的来说,通过Keepalived和MySQL双主配置,我们可以构建一个高可用的数据库环境,当一台MySQL服务器出现问题时,服务可以立即切换到另一台,减少宕机时间和数据丢失的风险,从而提高系统的稳定性和可靠性。

    mysql双机热备同步

    在 MySQL 中,主从关系同步是指一个主服务器将数据同步到一个或多个从服务器上。主服务器负责写入数据,而从服务器负责读取数据。在 MySQL 双机热备同步中,主服务器是 192.168.5.10,而从服务器是 192.168.5.4。 ...

    Mysql5.5数据库双向同步

    - **双向同步**:当两个MySQL服务器互相作为对方的主服务器时,形成的数据流动循环称为双向同步。 #### 1.2 双向同步的优势与挑战 - **优势**:提高系统的可用性和容错能力,任何一方出现故障时,另一方可以接管...

    mysql双主一从配置文档

    MySQL 双主一从配置文档 MySQL 双主一从配置是指在 MySQL 数据库中同时启用两个主服务器和一个从服务器,以实现数据的高可用性和灾难恢复。这种配置可以提供高性能、可扩展性和容错性。 标题:MySQL 双主一从配置...

    mysql双向同步终极秘籍

    ### MySQL双向主主同步终极秘籍 在当前的IT环境中,数据的一致性和可靠性变得尤为重要。MySQL作为一种广泛使用的开源关系型数据库系统,在企业级应用中扮演着重要角色。本文将详细介绍如何实现MySQL的双向主主同步...

    mysql双主带双从

    ### MySQL双主带双从架构详解与搭建步骤 在高可用性和数据冗余需求日益增长的背景下,MySQL的双主带双从(Multi-Master with Slave Replication)架构成为了一种有效的解决方案。此架构不仅提高了数据库系统的可用...

    docker mysql双主配置1

    首先,我们来了解一下【标题】"docker mysql双主配置1"所涉及的核心概念。MySQL的双主复制是一种高可用性和容错性的解决方案,它允许两个MySQL服务器互相作为彼此的主服务器和从服务器,即数据更改在任一服务器上...

    MySQL数据库双活同步复制方案详解.pdf

    MySQL数据库双活同步复制方案是为了实现数据库的高可用性和数据一致性,确保在主数据库出现故障时,能够无缝切换到备用数据库,保持业务连续性。以下将详细解释几种常见的双活同步复制策略。 **1. 基于MySQL原生...

    使用Bucardo搭建PostgreSQL数据库双主同步.docx

    使用 Bucardo 搭建 PostgreSQL 数据库双主同步 本文将指导您使用 Bucardo 搭建 PostgreSQL 数据库双主同步,涵盖 Bucardo 的介绍、搭建前准备、安装 Perl 和 PostgreSQL、安装依赖包等方面的知识点。 一、Bucardo ...

    mysql集群双主双从 windows

    MySQL集群是一种高可用性和高可扩展性的数据库解决方案,尤其在Windows环境下,为了保证服务的连续性和数据的一致性,双主双从配置被广泛应用。这种配置模式意味着有两个主节点互相同步,同时各自都有一个从节点进行...

    MySQL数据库双活同步复制方案详解.docx

    MySQL数据库双活同步复制方案是...综上所述,MySQL双活同步复制方案的选择应根据业务需求、数据一致性要求、并发性能、系统规模和现有基础设施来决定。每个方案都有其优势和限制,需要全面评估以找到最适合的解决方案。

Global site tag (gtag.js) - Google Analytics