mysql的ace上市公司_MySQL DBA MySQL复制技术的变革(九)

本文深入探讨了MySQL复制中的ROW+GTID格式的优缺点,以及半同步复制的机制和挑战。GTID用于简化事务追踪和确保复制的准确性,而半同步复制在提高数据一致性的同时可能导致延迟。增强半同步旨在解决主库崩溃时的数据一致性问题,但可能引入新的风险。文章还分析了复制的瓶颈并给出了优化建议,包括选择合适的binlog格式和监控复制延迟。

复制环境搭建:基于ROW+GTID

statement格式复制不足及解决办法

GTID用于解决什么问题

半同步复制有什么缺点?增强半同步用于解决什么问题?半同步会不会有延迟?

复制的瓶颈点及改进建议

复制建议选择

f016617387f6b492dab566fca02e3a4e.png

04c2d379e0c673abcaf3d17ee220d6d8.png

statement格式复制不足

理解binlog

记录最小的单位是一个Event。前4个字节是magic number,接下来的19个字节记录Format desc event:FDE

一个事务由多个Event组成

(hexdump mysql-bin.00000x |head -n 3)

now()取到的是set timestamp的值

sysdate()取到的是系统的时间

show binlog events in 'mysql-bin.00000x'

row格式,binlog每条语句都带有库名

statement是加use

row格式优点

相对statement格式更加安全的复制格式

在某些情况下复制速度更快(sql复杂,表有主键)

系统的特殊函数也可以复制

更少的锁

缺点

binary log比较大(支持binlog_row_image)

单条语句更新【删除】表的行数过多,会形成大量的binlog

无法从binlog看见用户执行的sql(Event:binlog_row_query_log_events,记录用户的query)

uuid()结果太多离散,insert写入慢

e220c9c098ffdf208e7b26b43a9c1d59.png

GTID用于解决什么问题

事务是由谁产生的,产生了多少事务,复制架构中求事务个数差集非常简单

gtid_purged  --表示已经过期的日志的位置

监控方便

半同步

半同步复制有什么缺点?

增强半同步用于解决什么问题?

半同步会不会有延迟?

rpl_semi_sync_master_wait_point=after_commit

redo(xid)->binlog->redo commit(同时redo中写入binlog filename,pos)--表示日志是完整的,commit阶段完成

Xid同一个binlog是顺序增长的

redo->Xid

-- 写完binlog后,binlog会持久化到磁盘,在此阶段,如果server crash,重启mysqld时候,他会扫描redo中处于prepare状态xid,同时扫描last binary log,看看xid有没有在binlog里面,如果在,则commit,如果没有则rollback

业务层幻读

引擎层已经commit,但是dump线程还未dump binlog时master crash,那么主库的数据就会比从库多

c470724baa4636085a2f833e87a5f8b7.png

增强半同步

半同步复制有什么缺点?

rpl_semi_sync_master_wait_point=after_sync

如果在dump线程还未dump binlog时master crash,那么主库重启后的数据会比从库多

幽灵事务--掉电情况会发生

rpl_semi_sync_master_timeout

没有从库会hang住

1c0c3b8d2755f04560e37a762e733d3f.png

业务层幻读

814019611e98a4df3d64cf29af0618a9.png

c4da9ae2d66ac58608355aa833b99138.png

363ff2852b3c0b1b6f886db23400240c.png

ed27969d86b3911766eb69b38203f68a.png

cc4e0a19d9ff0ff137a9754ce98afb17.png

3485f7c6e4abc9c8d5d3de49fbf466dd.png

d1db9e812d4d66af2b3d1574147ca49b.png

3e0bc843bfd3c10b1b2058828562b427.png

5140a2b9257ff6b1429a093c0e18e659.png

c9232261794b6c95ef245ceed127a88f.png

5b8e42a2665b2a6340890d68ff594216.png

b0a71270652013648833edb67e526e86.png

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值