基于gtids的主从复制搭建

slave服务器不小心写入数据的解决方案

如果数据⽐较少,可以通过跳过当前语句的⽅式解决,但是如果从服务器写⼊的数据⽐较多,架构必须重新搭建

可通过变量sql_slave_skip_counter临时跳过事务进⾏处理

mysql> set GLOBAL sql_slave_skip_counter=N # n代表跳过的n个事务

mysql> stop slave;

mysql> start slave;

跳过事务应该在slave上运⾏

传统的ab复制⽅式可以使⽤,基于GTIDs的⽅式不⽀持

基于gtids的主从复制搭建

GTIDs是完全基于事务的,因此不⽀持MYISAM存储引擎

gtids的限制条件:

  1. 不⽀持⾮事务引擎(MyISAM)因为可以回导致多个gtid分布给同⼀个事务

  2. create table select语句不⽀持(主库语法报错)

  3. create、drop temprary table语法不⽀持

  4. 必须使⽤enforce-gtid-consistency参数

  5. sql-slave-skip-counter不⽀持

  6. gtid复制环境中必须统⼀开启gtid或者关闭gtid

  7. 在5.7之前使⽤mysql upgrade命令也会出现问题

步骤:

replication是基于传统的⽅式部署,并且已经在运⾏,利⽤已经存在的环境升级⾄基于GTIDs的replication

  1. 修改配置⽂件,⽀持GTIDs(主从)

主服务器:

gtid-mode=on

log-slave-updates=1

enforce-gtid-consistency

从服务器:

log-bin=/usr/local/mysql/data/binlog

gtid-mode=on

log-slave-updates=1

enforce-gtid-consistency

skip-slave-start

  1. 重启数据库(主从)

service mysql8 restart

  1. 为了保证数据⼀直,master和slave都设置为只读

mysql> set @@global.read_only=ON;

Query OK, 0 rows affected (0.01 sec)

  1. 从服务器上重新配置同步

即slave重新配置change master to

mysql> stop slave;

Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> reset slave;

Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> change master to

-> master_host='192.168.118.20',

-> master_user='slave',

-> master_password='slave',

-> master_port=3306,

-> master_auto_position=1;

Query OK, 0 rows affected, 8 warnings (0.01 sec)

mysql> start slave;

Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> show slave status\G

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

Slave_IO_State: Waiting for source to send event

Master_Host: 192.168.118.20

Master_User: slave

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: binlog.000015

Read_Master_Log_Pos: 157

Relay_Log_File: relaylog.000002

Relay_Log_Pos: 367

Relay_Master_Log_File: binlog.000015

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

5.关闭主从服务器的只读模式

mysql> set @@global.read_only=OFF;

Query OK, 0 rows affected (0.00 sec)

相关推荐
xyzzklk1 天前
解决Salesforce无法向外发送邮件
android·java·开发语言·网络·crm·salesforce·客户关系管理
修炼者1 天前
Gradle三阶段
android
morchalen1 天前
安卓framework学习6:Contacts 联系人 APP 日志
android
KANGBboy1 天前
java知识四(面向对象编程)
android·java·开发语言
AD钙奶-lalala1 天前
Android Studio新建项目默认不使用Compose模版
android·ide·android studio
故渊at1 天前
第一板块:Android 系统基石与运行原理 | 第二篇:Android 编译、打包与安装机制
android·系统架构·apk·打包·application·dalvik·android编译
yuezhilangniao1 天前
MySQL 8.0.32 二进制安装脚本 和初始化 操作系统版本rocky86
数据库·mysql·adb
故渊at1 天前
第一板块:Android 系统基石与运行原理 | 第三篇:ART 与 Dalvik 运行时环境原理
android·对象模型·内存布局·运行原理·art·dalvik
李白的天不白1 天前
mysql 版本错误导致读取格式错乱
adb
私人珍藏库1 天前
【Android】Wallcraft 3.62.0-最强4 K壁纸软件-解锁高级版
android·智能手机·app·工具·软件·多功能