mysql-binlog

1. 常用的binlog日志操作命令

1. 查看bin-log是否开启
show variables like 'log_%';

2. 查看所有binlog日志列表
show master logs;

3.查看master状态
show master status;

4. 重置(清空)所有binlog日志
reset master;

2. 查看binlog日志内容

1、使用mysqlbinlog自带查看命令法
mysqlbinlog binlog.000020 

2 若要看到具体的sql需要加 -v
mysqlbinlog binlog.000020 -v


show binlog events in 'binlog.000020';

3. 查看当前拥有的binlog
show binary logs;

4. 删除binlog
purge binary logs before 'xxx'

mysql-binlog_第1张图片
mysql-binlog_第2张图片

3. relaylog

show relaylog events in 'docker-relay-bin-group_replication_applier.000033';

4. reset master,reset slave , reset slave all 的区别

1. reset master
   1.1 删除所有binlog,并重头开始生成一个新的binlog
   1.2 清空binlog索引文件
   1.3 在gtid,会同时清理变量gtid_executed,gtid_purged,mysql.gtid_executed的内容


2. reset slave
   2.1  删除所有relay log,并从头开始生成一个新的relay log
   2.2  清空relay log索引文件
   2.3  清空mysql.slave_relay_log_info,mysql.slave_worker_info表的内容
   2.4  清空mysql.slave_master_info表空的binlog位置信息,但会保留链接信息
   PS:在gtid中,因为有gtid_executed,所以复制可以继续,不会中断,但如果是基于位置点的复制,则i/o线程需要从现有的binlog日志重新拉取数据,则     主从中断

3. reset slave all
   3.1  会直接情况mysql.slave_slave_info 中的所有内容,包括链接信息,这时要恢复主从的话,只能通过change master to 命令
   3.2  执行时必须执行 stop salve;
   3.3  不会清除与gtid相关的任何信息

5. 跳过指定事务

1. 传统复制
   stop slave;
   set global sql_slave_skip_counter=1;
   start slave;

2. gtid复制
   gtid中跳过事务的本质是注入空事务
   show slave status\G;
   set session gtid_next='xxx:xxx';
   begin;
   commit;
   set session gtid_next='automatic';
   start slave;
   

你可能感兴趣的:(mysql,数据库)