1.演示实验环境
--主库版本:
root@(none)>show variables like 'version';
+---------------+---------------------+
| Variable_name | Value |
+---------------+---------------------+
| version | 5.7.23-23-31.31-log |
+---------------+---------------------+
1 row in set (0.01 sec) --复制模式
root@(none)>show variables like '%gtid_mode%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| gtid_mode | ON |
+---------------+-------+
1 row in set (0.00 sec) --复制进程
root@(none)>show processlist;
+----+-----------------+---------------------+-------+------------------+-------+---------------------------------------------------------------+------------------+-----------+---------------+
| Id | User | Host | db | Command | Time | State | Info | Rows_sent | Rows_examined |
+----+-----------------+---------------------+-------+------------------+-------+---------------------------------------------------------------+------------------+-----------+---------------+
| 1 | event_scheduler | localhost | NULL | Daemon | 14232 | Waiting on empty queue | NULL | 0 | 0 |
| 9 | repl | 192.168.2.101:53422 | NULL | Binlog Dump GTID | 11941 | Master has sent all binlog to slave; waiting for more updates | NULL | 0 | 0 |
| 14 | root | localhost | NULL | Query | 0 | starting | show processlist | 0 | 0 |
+----+-----------------+---------------------+-------+------------------+-------+---------------------------------------------------------------+------------------+-----------+---------------+
8 rows in set (0.00 sec) root@(none)> --从库状态
root@(none)>show slave status \G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.2.100
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000014
Read_Master_Log_Pos: 194
Relay_Log_File: relay-bin.000005
Relay_Log_Pos: 407
Relay_Master_Log_File: mysql-bin.000014
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 194
Relay_Log_Space: 695
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
Master_UUID: 015d4d11-0363-11e9-bb6c-0800279a3030
Master_Info_File: /mysql/3306/data/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set: 015d4d11-0363-11e9-bb6c-0800279a3030:1-4
Executed_Gtid_Set: 015d4d11-0363-11e9-bb6c-0800279a3030:1-4
Auto_Position: 1
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:
1 row in set (0.00 sec)
root@(none)> 2.主库binlog被purge的情形
--停止从库,模拟从库宕机状态
root@pxc01>stop slave;
Query OK, 0 rows affected (0.02 sec) root@pxc01>show slave status \G;
*************************** 1. row ***************************
Slave_IO_State:
Master_Host: 192.168.2.100
Master_User: repl
Master_Port: 3306
............
Slave_IO_Running: No
Slave_SQL_Running: No --此时主库上的gtid_purged为空
root@(none)>show variables like '%gtid_purged%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| gtid_purged | |
+---------------+-------+
1 row in set (0.01 sec) root@(none)> --查看主库binlog
root@pxc01>show binary logs;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000009 | 154 |
| mysql-bin.000010 | 635 |
| mysql-bin.000011 | 201 |
| mysql-bin.000012 | 177 |
| mysql-bin.000013 | 1087 |
| mysql-bin.000014 | 706 |
+------------------+-----------+ --查看测试数据
root@pxc01>select * from tbx;
+------+
| id |
+------+
| 1 |
| 2 |
| 3 |
+------+
3 rows in set (0.00 sec) root@pxc01> --从主库删除记录
root@pxc01>delete from tbx;
Query OK, 3 rows affected (0.09 sec) root@pxc01> --切换日志
root@pxc01>flush logs;
Query OK, 0 rows affected (0.08 sec) root@pxc01> --新增记录
root@pxc01>insert into tbx values(4);
root@pxc01>insert into tbx values(5);
root@pxc01>insert into tbx values(6); --查看主库binlog
root@pxc01>show binary logs;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000009 | 154 |
| mysql-bin.000010 | 635 |
| mysql-bin.000011 | 201 |
| mysql-bin.000012 | 177 |
| mysql-bin.000013 | 1087 |
| mysql-bin.000014 | 1019 |
| mysql-bin.000015 | 962 |
+------------------+-----------+ --清理binlog
root@pxc01>purge binary logs to 'mysql-bin.000015';
Query OK, 0 rows affected (0.08 sec) root@pxc01>show binary logs;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000015 | 962 |
+------------------+-----------+
1 row in set (0.00 sec) root@pxc01> --此时可以看到相应的gtid_purged值
root@pxc01>show variables like '%gtid_purged%';
+---------------+------------------------------------------+
| Variable_name | Value |
+---------------+------------------------------------------+
| gtid_purged | 015d4d11-0363-11e9-bb6c-0800279a3030:1-7 |
+---------------+------------------------------------------+
1 row in set (0.01 sec) root@pxc01> --下面启动从库
root@(none)>start slave;
Query OK, 0 rows affected (0.06 sec) root@(none)>show slave status \G;
*************************** 1. row ***************************
Slave_IO_State: Slave_IO_Running: No
Slave_SQL_Running: Yes
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.'
Retrieved_Gtid_Set: 015d4d11-0363-11e9-bb6c-0800279a3030:1-6
Executed_Gtid_Set: 015d4d11-0363-11e9-bb6c-0800279a3030:1-6
Auto_Position: 1 -- 从库上gtid_purged参数,此时为空
root@(none)>show variables like '%gtid_purged%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| gtid_purged | |
+---------------+-------+
1 row in set (0.01 sec) root@(none)> --停止从库
root@(none)>stop slave; --下面尝试使用gtid_purged进行跳过事务。
root@(none)>set global gtid_purged = '015d4d11-0363-11e9-bb6c-0800279a3030:1-7';
ERROR 1840 (HY000): @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty.
root@(none)>
提示:仅仅当GLOBAL.GTID_EXECUTED为空才能被设置 --查看从库当前的gtid_executed。gtid_executed肯定是不为空,且这些gtid记录在从库的binary log中
root@(none)>show global variables like '%gtid_executed%'\G
*************************** 1. row ***************************
Variable_name: gtid_executed
Value: 015d4d11-0363-11e9-bb6c-0800279a3030:1-6
*************************** 2. row ***************************
Variable_name: gtid_executed_compression_period
Value: 1000
2 rows in set (0.01 sec) root@(none)> --下面我们在从库上reset master,即清空从库binlog
root@(none)>reset master;
Query OK, 0 rows affected (0.10 sec) --再次查看gtid_executed已经为空值
root@(none)>show global variables like '%gtid_executed%'\G
*************************** 1. row ***************************
Variable_name: gtid_executed
Value:
*************************** 2. row ***************************
Variable_name: gtid_executed_compression_period
Value: 1000
2 rows in set (0.01 sec) root@(none)> --此时再次设置gtid_purged的值
root@(none)>set global gtid_purged = '015d4d11-0363-11e9-bb6c-0800279a3030:1-7';
Query OK, 0 rows affected (0.06 sec) --启动从库
root@(none)>start slave;
root@(none)>show slave status \G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.2.100
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000015
Read_Master_Log_Pos: 962
Relay_Log_File: relay-bin.000006
Relay_Log_Pos: 1175
Relay_Master_Log_File: mysql-bin.000015
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 962
Relay_Log_Space: 2141
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
Master_UUID: 015d4d11-0363-11e9-bb6c-0800279a3030
Master_Info_File: /mysql/3306/data/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set: 015d4d11-0363-11e9-bb6c-0800279a3030:1-6:8-10
Executed_Gtid_Set: 015d4d11-0363-11e9-bb6c-0800279a3030:1-10
Auto_Position: 1
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:
1 row in set (0.00 sec) 注当前主从记录是不一致的:前期在主库delete的事务未传到从库,需要手动删除!
主库记录:
root@pxc01>select * from tbx;
+------+
| id |
+------+
| 4 |
| 5 |
| 6 |
+------+
3 rows in set (0.00 sec) root@pxc01> 从库记录:
root@pxc01>select * from tbx;
+------+
| id |
+------+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
+------+
6 rows in

主库binlog被purge的情形的更多相关文章

  1. 主库binlog(master-log)与从库relay-log的关系

    主库binlog: # at # :: server id end_log_pos CRC32 COMMIT/*!*/; # at # :: server id end_log_pos CRC32 e ...

  2. Mysql设置主库binlog文件自动清理

    mysql主库中设置了打开binlog模式后,会在datadir目录下生成大量的日志文件,mysql默认是不会自动清理的,我们来设置下mysql自动清理binlog文件 一.打开mysql [root ...

  3. 使用mysqlbinlog对主库binlog进行同步

    #!/bin/bash BASEDIR="/usr/local/mysql" BIN="$BASEDIR/bin" MYSQLBINLOG="$BIN ...

  4. gtid error set test

    1.从库报主键重复(Errno: 1062)#create test data 1062create table t1 (id tinyint not null primary key,ename v ...

  5. MySQL GTID 错误处理汇总

    MySQL GTID是在传统的mysql主从复制的基础之上演化而来的产物,即通过UUID加上事务ID的方式来确保每一个事物的唯一性.这样的操作方式使得我们不再需要关心所谓的log_file和log_P ...

  6. MySQL 常见面试知识点

    之前简单总结了一下MySQL的场景面试知识点 1.讲下MVCC原理 2.MySQL高可用架构介绍 3.OSC(在线更改表结构)原理 4.MySQL性能调优有哪些关键点/经验 5.MySQL在线备份方案 ...

  7. binlog——逻辑复制的基础

    Ⅰ.binlog定义和作用 1.1 定义 记录每次数据库的逻辑操作(包括表结构变更和表数据修改) 包含:binlog文件和index文件 1.2 作用 复制:从库读取主库binlog,本地回放实现复制 ...

  8. 正确清理binlog日志

    摘要: MySQL中的binlog日志记录了数据库中数据的变动,便于对数据的基于时间点和基于位置的恢复,但是binlog也会日渐增大,占用很大的磁盘空间,因此,要对binlog使用正确安全的方法清理掉 ...

  9. 【MySQL】MySQL主从库配置和主库宕机解决方案

    1.转载:https://blog.csdn.net/zfl589778/article/details/51441719/ 2.效果:亲测有效,数据写入成功. 3.主机宕机后,如果不是长时间宕机,且 ...

随机推荐

  1. console对象的理解

    console对象代表浏览器的JS控制台,虽然不是标准,但已经成为事实的标准 console对象的作用 a.显示代码运行错误信息 b.提供一个命令行接口,用来与网页互动 console对象拥有很多方法 ...

  2. 1146 ID Codes

    题目链接: http://poj.org/problem?id=1146 题意: 给定一个字符串(长度不超过50), 求这个字符串的下一个字典序的字符串, 如果已经是最大字典序, 那么输出 " ...

  3. java网站如何集成facebook第三方登录

    第一次接触Facebook第三方登录,可能有些地方做的并不全面,只是尝试着做了一个小demo,因为国内接入Facebook的项目并不多,并且多数都是Android或iOS的实现,所以资料也特别少,在此 ...

  4. 两款JSON类库Jackson与JSON-lib的性能对比(新增第三款测试)

    本篇文章主要介绍了"两款JSON类库Jackson与JSON-lib的性能对比(新增第三款测试)",主要涉及到两款JSON类库Jackson与JSON-lib的性能对比(新增第三款 ...

  5. jQuary总结5:传递一个dom对象

    1 传递一个dom对象 //html <div></div> <p id="p"></p> //js var p = documen ...

  6. SpringMVC源码解读 - HandlerMapping - AbstractUrlHandlerMapping系列request分发

    AbstractHandlerMapping实现HandlerMapping接口定的getHandler 1. 提供getHandlerInternal模板方法给子类实现 2. 如果没有获取Handl ...

  7. Android 控件在布局中按比例放置[转]

    转自:http://netsky1990.blog.51cto.com/2220666/997452       在Android开发中常用到线性布局LinearLayout对界面进行具体的创建,其中 ...

  8. 编写高质量代码改善C#程序的157个建议——建议82:Parallel简化但不等同于Task默认行为

    建议82:Parallel简化但不等同于Task默认行为 建议81说到了Parallel的使用方法,不知道大家是否注意到文中使用的字眼:在同步状态下简化了Task的使用.也就是说,在运行Paralle ...

  9. MySQL中如何为查询的数据添加自增序号、顺序呢?

    背景介绍 很多时候我们在使用mysql查询数据的时候都会遇到一个问题,就是查询出来了一堆数据,但是查询的数据的表并没有序号,然而部分数据库显示工具是有外带序号显示,但是这种序号不是由sql产生的,而是 ...

  10. 慎用uniapp开发商业级应用

    官方的社区反馈问题只给解决简单的前端问题,涉及到IDE的问题长期没人回复没人认领 官方公布的各渠道联系方式都得不到回复,先后出现了两个无法解决的问题 第一个问题(现在你都可以去他们社区搜索,没人回复没 ...