您好,欢迎访问一九零五行业门户网

mysql互为主从配置(双主模型)

一、a、b双主模型的实现条件:1.开启二进制日志2.开启中继日志3.解决自动增长列的问题如果a服务器上自动增长的列编号有一个35,此时还没有同步到b服务器上,在b
一、a、b双主模型的实现条件:
1. 开启二进制日志
2. 开启中继日志
3. 解决自动增长列的问题
如果a服务器上自动增长的列编号有一个35,此时还没有同步到b服务器上,在b服务器上插入一条数据,,编号也是35。当同步a的35到b服务器上来的话,必然产生数据丢失。
解决办法:
让在a上插入的行的自动增长都为奇数,让b服务器上的自动增长都为偶数。这样就解决了自动增长的问题。
假设a是一台生产环境中的数据库,现在想添加b服务器,实现双主模型。
二、步骤:
1. 在a、b服务器上创建具有复制权限的帐号
2. 在a、b服务器上修改配置文件(开启二进制日志、中继日志等)
3. 将a服务器上存在的数据文件导入到b服务器中
注意:导入数据的时候,先关闭b服务器的二进制日志。
4. 让b先成为slave,再让a成为slave
5. 测试
三、开始配置
1. 创建授权用户
mysql> grant replication slave on *.* to 'slave'@'192.168.2.96' identified by '12345';query ok, 0 rows affected (0.00 sec)#a服务器mysql> grant replication slave on *.* to 'slave'@'192.168.2.93' identified by '12345';query ok, 0 rows affected (0.00 sec)#b服务器
2. 编辑配置文件
[root@oracle ~]# vim /etc/my.cnflog-bin=mysql-bin#开启二进制日志server-id=1relay-log=mysql-relay-bin#开启中继日志log_slave_updates = on#从服务器将时间记录到二进制日志中auto_increment_increment=2#自动增长的步长auto_increment_offset=1#自动增长的起始数值#a服务器的配置[root@node2 ~]# vim /etc/my.cnfserver-id=2#log-bin=mysql-bin#log_slave_updates = onauto_increment_increment=2auto_increment_offset=2#b服务器的配置,先关闭二进制日志重启服务
[root@oracle ~]# service mysqld restartshutting down mysql..[ ok ]starting mysql.[ ok ]创建测试用的表
mysql> select * from info;+-----+-------+-----+| sid | name | age |+-----+-------+-----+| 1 | zhang | 23 || 2 | li | 12 || 3 | cheng | 34 || 4 | wang | 22 || 5 | chen | 44 |+-----+-------+-----+5 rows in set (0.00 sec)#在a服务器上创建测试用的表
3. 将表导入到b服务器上
[root@oracle ~]# mysqldump --databases data --lock-all-tables --master-data=2 > /root/dump.sql[root@oracle ~]# scp /root/dump.sql root@192.168.2.96:/root/#a服务器上dump+拷贝[root@node2 ~]# mysql
4. 让b服务器先成为slave
mysql> change master to master_host='192.168.2.93',master_user='slave',master_password='12345',master_port=3306,master_log_file='mysql-bin.000007', master_log_pos=1068;#master_log_file和master_log_pos在dump.sql中有记录[root@node2 ~]# vim /etc/my.cnf#将刚刚注释掉的参数生效log-bin=mysql-binlog_slave_updates = on[root@node2 ~]# service mysqld restartshutting down mysql..[确定]starting mysql.[确定]   再让a服务器成为slave
mysql> show master status;+------------------+----------+--------------+------------------+-------------------+| file| position | binlog_do_db | binlog_ignore_db | executed_gtid_set |+------------------+----------+--------------+------------------+-------------------+| mysql-bin.000001 |120 ||||+------------------+----------+--------------+------------------+-------------------+1 row in set (0.00 sec)#在b上查看二进制日志信息mysql> change master to master_host='192.168.2.96',master_user='slave',master_password='12345',master_port=3306,master_log_file='mysql-bin.000001', master_log_pos=120;mysql> start slave;查看a、b服务器的状态:
mysql> show slave status\g;*************************** 1. row ***************************slave_io_state: waiting for master to send eventmaster_host: 192.168.2.96master_user: slavemaster_port: 3306connect_retry: 60master_log_file: mysql-bin.000001read_master_log_pos: 120relay_log_file: mysql-relay-bin.000002relay_log_pos: 283relay_master_log_file: mysql-bin.000001slave_io_running: yesslave_sql_running: yes#a服务器上的状态mysql> show slave status\g;*************************** 1. row ***************************slave_io_state: waiting for master to send eventmaster_host: 192.168.2.93master_user: slavemaster_port: 3306connect_retry: 60master_log_file: mysql-bin.000008read_master_log_pos: 120relay_log_file: mysql-relay-bin.000003relay_log_pos: 283relay_master_log_file: mysql-bin.000008slave_io_running: yesslave_sql_running: yes#在b服务器上查看状态5. 测试:
mysql> insert into info(name,age) values('sun',25),('ding',29);#在a服务器上插入2行数据mysql> select * from info;+-----+-------+-----+| sid | name | age |+-----+-------+-----+| 1 | zhang | 23 || 2 | li | 12 || 3 | cheng | 34 || 4 | wang | 22 || 5 | chen | 44 || 7 | sun | 25 || 9 | ding | 29 |+-----+-------+-----+7 rows in set (0.00 sec)#在b服务器上查看的结果
mysql> insert into info(name,age) values('bb',33),('bc',21);#在b服务器上插入2行数据mysql> select * from info;+-----+-------+-----+| sid | name | age |+-----+-------+-----+| 1 | zhang | 23 || 2 | li | 12 || 3 | cheng | 34 || 4 | wang | 22 || 5 | chen | 44 || 7 | sun | 25 || 9 | ding | 29 || 10 | bb | 33 || 12 | bc | 21 |+-----+-------+-----+9 rows in set (0.00 sec)#在a服务器上查看这样双主模型就已经实现了。
本文出自 “my favorite technology” 博客,请务必保留此出处
其它类似信息

推荐信息