基于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)

相关推荐
Libraeking2 小时前
破壁行动:在旧项目中丝滑嵌入 Compose(混合开发实战)
android·经验分享·android jetpack
市场部需要一个软件开发岗位3 小时前
JAVA开发常见安全问题:Cookie 中明文存储用户名、密码
android·java·安全
JMchen1234 小时前
Android后台服务与网络保活:WorkManager的实战应用
android·java·网络·kotlin·php·android-studio
crmscs5 小时前
剪映永久解锁版/电脑版永久会员VIP/安卓SVIP手机永久版下载
android·智能手机·电脑
localbob5 小时前
杀戮尖塔 v6 MOD整合版(Slay the Spire)安卓+PC端免安装中文版分享 卡牌肉鸽神作!杀戮尖塔中文版,电脑和手机都能玩!杀戮尖塔.exe 杀戮尖塔.apk
android·杀戮尖塔apk·杀戮尖塔exe·游戏分享
机建狂魔5 小时前
手机秒变电影机:Blackmagic Camera + LUT滤镜包的专业级视频解决方案
android·拍照·摄影·lut滤镜·拍摄·摄像·录像
hudawei9965 小时前
flutter和Android动画的对比
android·flutter·动画
lxysbly7 小时前
md模拟器安卓版带金手指2026
android
儿歌八万首8 小时前
硬核春节:用 Compose 打造“赛博鞭炮”
android·kotlin·compose·春节
消失的旧时光-194310 小时前
从 Kotlin 到 Dart:为什么 sealed 是处理「多种返回结果」的最佳方式?
android·开发语言·flutter·架构·kotlin·sealed