一、a、b双主模型的实现条件:1.开启二进制日志2.开启中继日志3.解决自动增长列的问题如果A服务器上自动增长的列编号有一个35,此时还没有同步到B服务器上,在B
一、a、b双主模型的实现条件:
1. 开启二进制日志
2. 开启中继日志
3. 解决自动增长列的问题
如果A服务器上自动增长的列编号有一个35,此时还没有同步到B服务器上,在B服务器上插入一条数据,,编号也是35。当同步A的35到B服务器上来的话,必然产生数据丢失。
解决办法:
让在A上插入的行的自动增长都为奇数,让B服务器上的自动增长都为偶数。这样就解决了自动增长的问题。
豆包大模型
字节跳动自主研发的一系列大型语言模型
834 查看详情
假设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 statusG;*************************** 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 statusG;*************************** 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” 博客,请务必保留此出处
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/540126.html
微信扫一扫
支付宝扫一扫