前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >​一些不规范的GTID使用场景

​一些不规范的GTID使用场景

作者头像
jeanron100
发布2019-05-23 20:56:03
4970
发布2019-05-23 20:56:03
举报
文章被收录于专栏:杨建荣的学习笔记

这是学习笔记的第 1987 篇文章

GTID是一种很不错的复制解决方案,但是在使用中还是碰到一些问题,经过整理我梳理了如下的一些不规范的GTID使用场景

l 从库可写

如果在从库端写入了数据,GTID_Set就包含两个源,在使用中可能会混淆,比较规范的方式是对从库开启只读模式,如果碰到数据修复的场景,我们可以使用sql_log)bin=0来临时修复。

l Purge binlog

GTID复制错误中很常见的就属这个错误了:

the master has purged binary logs containing GTIDs that the slave requires

如果主库端对于binary log的保留时间过短,同时主从网络链路的问题,都可能导致要应用的GTID事务已经在主库被清理。

l 复制模式为MASTER_AUTO_POSITION =0

如果我们开启了GTID,还是建议使用GTID协议的数据复制方式,如果依旧使用偏移量的复制方式,在主从切换的时候很容易出问题。

同时,在一些特殊的数据修复场景中,我们使用change master to xxx,master_auto_position=0;

配置复制关系时,语句不带relay_log_file和relay_log_pos选项都会导致relay log被清理,所以一组相对完整的语句为:

change master to master_user=[Master_user],master_port=[Master_port],master_host=[Master_Host],master_port=[Master_port],master_log_file=[Relay_Master_Log_File],master_log_pos=[Exec_Master_Log_Pos],relay_log_file=[Relay_Log_File],relay_log_pos=[Relay_Log_Pos],master_auto_position=0;

Change master master_auto_position=1;

l 在线启停GTID

官方明确说GTID是可以在线启停的,但是不建议在线做这样的操作,一来是维稳,因为这种操作的频率是很低的,不排除有一些复杂的bug,二来是对于配置GTID应该是统一的规划,反复变化说明管理是混乱的,一般建议在参数文件中配置后启动数据库。

l mysqldump导出导入可能导致从库混乱

l mysqldump会默认开启set-gtid-purged 选项,在导出的dump文件中会包含set @@gtid_purge=xxx的语句,如果在跨服务器环境中导入数据,可能导致操作失误而直接对主库做了reset master操作。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杨建荣的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档