MySQL主主复制(主从复制)

一、准备工作:

1.主从数据库版本最好一致

2.主从数据库内数据保持一致

1(从2)数据库:192.168.206.132 /linux

主2(从1)数据库:192.168.206.134 /linux

二、主数据库master1修改:

1.修改mysql.conf,在[mysqld]部分插入:

server-id=1

log-bin=mysql-bin

auto_increment_offset=1

auto_increment_increment=2

#在主主同步配置时,需要将两台服务器的auto_increment_increment增长量都配置为2,而要把auto_increment_offset分别配置为1和2。这样才可以避免两台服务器同时做更新时自增长字段的值之间发生冲突。

#master开启二进制日志后默认记录所有库所有表的操作,可以通过配置来指定只记录指定的数据库甚至指定的表的操作,具体在my.cnf配置文件的[mysqld]下可添加修改如下选项:

# 不同步哪些数据库  

binlog-ignore-db = mysql  

binlog-ignore-db = test  

binlog-ignore-db = information_schema  

# 只同步哪些数据库,除此之外,其他不同步  

binlog-do-db = game  

# 如之前查看master状态时就可以看到库的状态:

mysql> show master status;

+------------------+----------+--------------+------------------+-------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+--------------+------------------+-------------------+

| mysql-bin.000002 |      956 |              |                  |                   |

+------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

2.重启mysql,创建用于同步的用户账号rep1

mysql> CREATE USER 'rep1'@'192.168.206.134' IDENTIFIED BY 'Slavepasswd';

mysql> GRANT REPLICATION SLAVE ON *.* TO 'rep1'@'192.168.206.134';

mysql> flush privileges;

3.查看master状态,记录二进制文件名(mysql-bin.000002)和位置(792):

mysql> show master status;

+------------------+----------+--------------+------------------+-------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+--------------+------------------+-------------------+

| mysql-bin.000002 |      792 |              |                  |                   |

+------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

4.在master服务器的防火墙上开启mysql端口

、主数据库master2修改:

1.修改mysql.conf,在[mysqld]部分插入:

server-id=2

log-bin=mysql-bin

auto_increment_offset=2

auto_increment_increment=2

#在主主同步配置时,需要将两台服务器的auto_increment_increment增长量都配置为2,而要把auto_increment_offset分别配置为1和2。这样才可以避免两台服务器同时做更新时自增长字段的值之间发生冲突。

#master开启二进制日志后默认记录所有库所有表的操作,可以通过配置来指定只记录指定的数据库甚至指定的表的操作,具体在mysql配置文件的[mysqld]可添加修改如下选项:

# 不同步哪些数据库  

binlog-ignore-db = mysql  

binlog-ignore-db = test  

binlog-ignore-db = information_schema  

# 只同步哪些数据库,除此之外,其他不同步  

binlog-do-db = game  

# 如之前查看master状态时就可以看到库的状态:

mysql> show master status;

+------------------+----------+--------------+------------------+-------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+--------------+------------------+-------------------+

| mysql-bin.000002 |      956 |              |                  |                   |

+------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

2.重启mysql,创建用于同步的用户账号rep1

mysql> CREATE USER 'rep2'@'192.168.206.132' IDENTIFIED BY 'Slavepasswd';

mysql> GRANT REPLICATION SLAVE ON *.* TO 'rep2'@'192.168.206.132';

mysql> flush privileges;

3.查看master状态,记录二进制文件名(mysql-bin.000002)和位置(792):

mysql> show master status;

+------------------+----------+--------------+------------------+-------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+--------------+------------------+-------------------+

| mysql-bin.000002 |      792 |              |                  |                   |

+------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

4.在master服务器的防火墙上开启mysql端口

数据库Slave1(主master2)修改:

1.执行同步SQL语句(需要主服务器主机名,登陆凭据,二进制文件的名称和位置):

mysql> change master to master_host='192.168.206.132',master_user='rep1',master_password='Slavepasswd',master_log_file='mysql-bin.000002',master_log_pos=792;

2.启动slave同步进程:

mysql> start slave;

3.查看slave状态:

mysql> show slave status\G

数据库Slave2(主master1)修改:

1.执行同步SQL语句(需要主服务器主机名,登陆凭据,二进制文件的名称和位置):

mysql> change master to master_host='192.168.206.134',master_user='rep2',master_password='Slavepasswd',master_log_file='mysql-bin.000002',master_log_pos=792;

2.启动slave同步进程:

mysql> start slave;

3.查看slave状态:

mysql> show slave status\G

主主同步可以理解为两台主机各为主备,但要注意的是在开启主从同步之前,需要将两台数据库的数据完全同步。

单主从复制的话则不需要添加auto_increment_offset和auto_increment_increment参数,开启bin-log二进制日志,添加server-id即可实现一主一从复制或一主多从复制。

以上就是MySQL主主备份的全部内容。

  • 15
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值