DAY5-MySQL日志管理

Posted yujiaershao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DAY5-MySQL日志管理相关的知识,希望对你有一定的参考价值。

 

 

日志文件


错误日志 --log-error error-log=/data/mysql/mysql3306/error.log
常规日志 --general_log=/data/mysql/mysql3306/general_log
慢查询日志 --slow_query-log=/data/mysql/mysql3306/slow_log       分析工具:mysqldumpslow/pt-query-digest 
二进制日志 --log-bin=/data/mysql/mysql3306/mysql-bin       (保留7天日志 expire-logs-days = 7)    分析工具: mysqlbinlog/binlog2sql
审计日志 (官方收费插件) --audit_log --audit_log_file audit.log

 

 

二进制日志

33DDL DML DCL DQL

什么时候进行切换:
1、flush logs; (如果卡着不动,有可能有大事务没结束,一个事务只能写到一个binlog里面)
2、超过日志设置 max_binlog_size
3、数据库重启

二进制日志记录的格式:
binlog_format=row
statement: 记录执行的SQL语句 (过去式,主从版本不统一,迁移,升级的过度状态)
insert into t1 (id,c1) values (1,uuid()); 主从不一致。
row: 记录更改前后的数据 (生产用)
mixed: (不要用)

查看binlog:
show binary logs;
show master status; 5.7 gtid: select @@server_uuid; 查到自己的server还是从别的地方拿到执行的事务。
show binlog events in ‘mysql-bin.000001‘;
MySQL的二进制是以‘事件(event)为单位存储到日志中,一个insert,update。。。有多个事件组成。
event:begin,table_map,x_event,commit;
position:字节偏移量(位置)show master status显示的position就是日志的大小。

查看二进制日志:
无法用文本查看
日志以紧凑二进制格式存储,以事件组合
使用mysqlbinlog查看
mysqlbinlog -v --base64-output=decode-rows mysql-bin.000001 > t.log

删除二进制日志:
基于时间删除
set global expire_logs_days=7;
purge binary logs before now()-interval 3 day3;
基于文件名删除
purge binary logs to ‘mysql-bin.000010‘;


审计日志:
audit——log_policy选项设置
默认all

日志文件生成一个服务器活动审计记录:
内容包括,在系统生发生的错误记录,
客户机连接和断开的时间,
连接期间执行的操作,
访问的数据库和表。

 

MySQL常用命令

help show; 帮助信息
pager more; 分页查看
pager less; 上下查看
pager cat; 返回

 

information_schema:
中央信息库,磁盘找不到,只能select。

查看schema下面的表的存储引擎:
select table_name,engine from information_schema.tables where tables_schema=‘test‘
查看表的字符集:
select character_set_name.collation_name from information_schema.colltions where is_default=‘Yes‘;
查看每个库下面有多少长表:
select table_schema , count(*) from information_schema.tables group by table_schema;

库改名:
1、create database newdata;
rename olddata.t1 to newdata.t1;
2、select concat("rename table olddata.",table_name," to new.",table_name," ;" from information_schema.tables where table_schema=‘olddata‘ into outfile ‘/tmp/rename.sql‘;
source /tmp/rename.sql;
3、终端 mysql -e " " > rename.sql

统计库大小:
单位M : select sum(data_length+index_length)/1024/1024 from information_schema.tables where table_schema=‘test‘;
统计每张表的大小:
单位M :select table_name,sum(data_length+index_length)/1024/1024 from information_schema.tables where table_schema=‘test‘ group by table_name;

show核心语句
show open tables; 查看当然打开的表
show table status like ‘‘; 不建议高并发使用
show columns from tb;
show full columns from tb;
show databases like "t%";
show columns from db where ‘Default‘ is null;
show character set ;
show collation;

show global variables ; 全局global
show variables; 当前session

show @@ xxx; 全局

show @ xxx;   session

 

 

练习脚本:
1、error如果有变更,将变更打印出来:
备份error,diff备份文件和线上文件

 

 

 


 

































































以上是关于DAY5-MySQL日志管理的主要内容,如果未能解决你的问题,请参考以下文章

Linux学习之日志管理(二十一)

Linux 日志管理

Linux 日志管理

Linux 日志管理

MySQL 日志管理备份与恢复

Linux实操篇—— 日志管理