2020-03-01日志管理2


 binlog日志的GTID新特性

GTID 介绍

对于binlog中的每个事物都会生成一个GTID的号码

DDL,DCL一个event就是一个事物,就会有一个GTID号

从begin到commit就会分配一个GTID号

5.7 中的GTID,即使不开也会有自动生成SET @@SESSION.GTID_NEXT='ANONYMOUS'

由server_uuid:TID组成

TID是一个自增长的数据

GTID的幂等性

如果拿有gtid的日志恢复时,检查系统中是否有相同的gtid号,有相同的就自动跳过

会影响binlog的恢复和主从复制

配置gtid

vim/etc/my.cnfgtid-mode=on

enforce-gtid-consistency=true

systemctl restart mysqld

基于gtid的恢复

[root@localhost binlog]# mysqlbinlog --include-gtids='5b65d91d-5bb1-11ea-b30e-000c291bec8a:1-3' mysql-bin.000004 >/tmp/gtid.sql

mysql>set sql_log_bin=0;

msyql>source /tmp/gtid.sql

mysql>set sql_log_bin=1;

报错Unknown database 'gtid'

为什么报错?

因为幂等性的检查 1-3的事物已经做过了 gtid不做重复的事物

处理方法就是跳过gtid1-3

[root@localhost binlog]# mysqlbinlog --skip-gtids --include-gtids='5b65d91d-5bb1-11ea-b30e-000c291bec8a:1-3' mysql-bin.000004 >/tmp/gtid.sql

mysql>set sql_log_bin=0;

msyql>source /tmp/gtid.sql

mysql>set sql_log_bin=1;

--skip-gtids 作用:导出时忽略原有的gtid的信息,恢复时生成新的gtid

具备GTID后,截取查看某些事务日志:

--include-gtids

--exclude-gtids

mysqlbinlog--include-gtids='dff98809-55c3-11e9-a58b-000c2928f5dd:1-6'

--exclude-gtids='dff98809-55c3-11e9-a58b-000c2928f5dd:4'/data/binlog/mysql-bin.000004

慢日志

作用

记录运行比较慢的语句,优化的过程中常用的日志工具

如何配置

开关

开关:slow_query_log=1

文件位置及名字

 slow_query_log_file=/data/mysql/slow.log

设定慢查询时间:long_query_time=0.1没走索引的语句也记录:

log_queries_not_using_indexes

vim/etc/my.cnf

slow_query_log=1

slow_query_log_file=/data/mysql/slow.log

long_query_time=0.1

log_queries_not_using_indexes

systemctl restart mysqld

mysqldumpslow 分析慢日志

模拟慢查询

需要优化语句的排序

次数

时间

mysqldumpslow-s c-t10/data/mysql/slow.log

# 第三方工具(自己扩展)

https://www.percona.com/downloads/percona-toolkit/LATEST/

yum install perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL perl-Digest-MD5toolkit

工具包中的命令:.

/pt-query-diagest 

/data/mysql/slow.logAnemometer基于pt-query-digest将MySQL慢查询可视化

补充说明

show variables like 'gtid%'

二进制日志清理

show variables like'%expire%';

expire_logs_days0

自动清理时间,

是要按照全备周期+1setglobalexpire_logs_days=8;

永久生效:my.cnfexpire_logs_days=15;企业建议,

至少保留两个全备周期+1的binlog

手工清理

PURGEBINARYLOGSBEFOREnow()-INTERVAL3day;

PURGEBINARYLOGSTO'mysql-bin.000010';

注意:不要手工 rm binlog文件

1.my.cnf binlog关闭掉,启动数据库

2.把数据库关闭,开启binlog,启动数据库

删除所有binlog,并从000001开始重新记录日志

reset master  日志清零  慎用! 主做从蹦

show variables like 'slow_query_log%'

show variables like 'long%'

你可能感兴趣的:(2020-03-01日志管理2)