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. MySQL 存储过程和存储函数学习

    #一.存储过程和存储函数的创建案例 CREATE PROCEDURE myprocedure(in a int,in b int ,OUT c INT) BEGIN set c=a+b; end; c ...

  2. [GO]断言

    使用if实现断言 package main import "fmt" type Student struct { name string id int } func main() ...

  3. Thinkphp 导出csv 先存储在服务器,然后输出链接下载

    public function exportQiandao() { // header("Content-type:text/html;charset=gb2312"); ini_ ...

  4. Getting Started with Node.js on Heroku

    NodeJS应用托管平台 https://devcenter.heroku.com/articles/getting-started-with-nodejs#dyno-sleeping-and-sca ...

  5. sql语句有几种写法

    sql语句有几种写法 1:SELECT * FROM tablename ORDER BY RAND() LIMIT 想要获取的数据条数: 2:SELECT *FROM `table` WHERE i ...

  6. 学习python5面向

    类有一个名为 __init__() 的特殊方法(构造方法),该方法在类实例化时会自动调用 面向过程:根据业务逻辑从上到下写代码 面向对象:将数据与函数绑定到一起,进行封装,这样能够更快速的开发程序,减 ...

  7. .net Tuple特性

    .net 4.0 引入了 Tuple特性: 在C# 4.0之前我们函数有多个返回值,通常是使用ref,out .到了c# 4.0 应当使用元组Tuple而不是使用输出参数,在任何时候都应避免使用ref ...

  8. MFC学习(二):消息映射

    1. 消息映射表的组成 宏DECLARE_MESSAGE_MAP,用在类的声明中,用来声明消息映射表. 宏BEGIN_MESSAGE_MAP,在使用类声明外,用来定义链接节点和填写链表节点中的数据,其 ...

  9. Winform Log4net 配置写不同文件

    以下配置了二种写文件,第一种根据日期写文件yyyyMMdd.txt,第二种是写固定文件login.txt. 1, 下载Log4net组件: http://logging.apache.org/log4 ...

  10. WPF 实现INotifyPropertyChanged .Net Framework 4.5

    自己动手写了一个基类来实现INotifyPropertyChanged接口,以后可以直接使用. using System.ComponentModel; using System.Runtime.Co ...