与
ESC
输入关键词搜索文章

mysql5.6 GTID 创建一个运行中slave从库

全文约 588 字预计阅读 2 分钟
最近才刚开始接触mysql5.6新的主从GTID同步,掉不少坑。 环境:一主一从运行有1年时间了,主库的master日志比较多,在my.cnf上添加expire_logs_days = 30,重启,发现日志少了。 现在要来添加多一个从库。 首先上主库执行: mysql> show master status; +-------------------+----------+--------------+--------------------------------------------------------+-------------------------------------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +-------------------+----------+--------------+--------------------------------------------------------+-------------------------------------------------+ | master-bin.000440 | 6288490 | | mysql,performance_schema,information_schema,test| 6f723299-523b-11e5-a5bf-00163e0007c9:1-54549749 | +-------------------+----------+--------------+--------------------------------------------------------+-------------------------------------------------+ 1 row in set (0.00 sec) 复制下:6f723299-523b-11e5-a5bf-00163e0007c9:1-54549749 接着就导出数据了 /mysql/bin/mysqldump -uroot -pxxx --set-gtid-purged=OFF database | gzip > /data/backup.sql.gz 我这里用了压缩 gunzip解压后 再来登陆slave数据库,执行source /data/backup.sql;导入了 执行同步命令:change master to master_host = 'ip',master_port = 3306,master_user = 'repluser',master_password='password',master_auto_position = 1; 然后就要用gtid_purged来绕过,之前已经执行过的日志记录,从刚才导出sql的新地方开始执行同步即可。(GTID_PURGED :已经被删除的binlog的事务,它是GTID_EXECUTED的子集) mysql> set global gtid_purged = '6f723299-523b-11e5-a5bf-00163e0007c9:1-54549749'; ERROR 2006 (HY000): MySQL server has gone away No connection. Trying to reconnect... Connection id: 271 Current database: database ERROR 1840 (HY000): @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty.//这里的时候可能会出现错误 mysql> stop slave; mysql> reset master;//没事这里重置下再执行 set global gtid_purged 即可 mysql> set global gtid_purged = '6f723299-523b-11e5-a5bf-00163e0007c9:1-54549749'; mysql> start slave; mysql> show slave status\G;//在看看 如果没有执行gtid_purged来绕过同步,就会出现以下错误: 1、人工暂停SLAVE进程; 2、MASTER上继续写入数据; 3、MASTER上刷新LOG; 4、MASTER上删除旧BINLOG,只保留最新的BINLOG; 5、SLAVE上启动MASTER,这时候会报错,像下面这样: Last_IO_Errno: 1236 Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'The slave is connecting using CHANGE MASTER TO MASTER_AUTO_POSITION = 1, but the master has purged binary logs containing GTIDs that the slave requires.' 网上解答是:针对这种问题的处理方法可以这么做: 1、关闭MASTER_AUTO_POSITION,即设置 MASTER_AUTO_POSITION = 0; 2、手工CHANGE BINLOG FILE & POS; 这种情况下,不能再次设置 MASTER_AUTO_POSITION = 1,否则还会再次报错。 绕过后并没有问题,继续MASTER_AUTO_POSITION = 1。 我怎么感觉指定gtid_purged和指定master.bin与pos位置一个道理呢?
mysql5.6 GTID 创建一个运行中slave从库
分享

发表评论

评论 0 条

暂无评论,来说点什么吧。