MySQL中常见的几种日志有以下几种:
binlog日志
概述
MySQL binlog是一种二进制日志,用于记录所有数据更改操作(包括增、删、改)。
使用场景
- 主从复制
- 逻辑备份(如:通过执行binlog来执行“增量备份”)
命令
# 开启二进制日志流程:
1. 修改MySQL配置文件,在mysqld节点下添加如下两行配置
log-bin=/var/lib/mysql/mysql-bin # binlog日志存储路径
binlog_format=ROW # 指定写入binlog文件中的格式为行格式
2. 重启MySQL,查看是否成功执行
# 查看binlog列表:
SHOW BINARY LOGS;
# 查看binlog的内容:
mysqlbinlog /var/lib/mysql/mysql-bin.000001
# 增量备份:
a. 备份当前数据,如:mysqldump -h$host -u$username -p$password $db > $sql_file
b. 获取当前的binlog文件名称及下一个读取位置 SHOW MASTER STATUS; 返回的结果有文件名及Position属性信息
c. 通过mysqlbinlog读取binlog日志内容并写入到一个sql文件
mysqlbinlog -h$host -u$username -p$password --start-position=$Position $binlog_file >> $sql_file
Redo Log日志
概述
InnoDB存储引擎文件中的一种日志,用于重做(ReDo)操作,即在断电或崩溃之前将未写入数据文件的数据从内存中刷到磁盘
使用场景
- 数据库数据恢复场景(如崩溃)
- 数据库修改性能优化(如修改大量数据需要包括Redo日志文件)
命令
# 查看当前Redo Log配置及状态:
SHOW VARIABLES LIKE 'innodb_log%';
# Redo Log文件切换:
SET GLOBAL innodb_fast_shutdown = 0;
SET GLOBAL innodb_flush_log_at_trx_commit = 0;
# 手动将Redo Log日志写入到数据文件
FLUSH TABLES WITH READ LOCK;
SET GLOBAL innodb_fast_shutdown = 0;
SET GLOBAL innodb_flush_log_at_trx_commit = 0;
FLUSH LOGS;
FLUSH TABLES;
UNLOCK TABLES;
# 手动触发Redo Log日志切换:
FLUSH LOGS;
两条示例说明:
- 假设需要备份半个月前至今天的数据,可以先通过mysqldump备份当前数据,然后获取半个月前的binlog文件名及Position属性,并通过mysqlbinlog命令读取binlog日志内容并写入到一个sql文件,然后将sql文件恢复到备份的另一台MySQL数据库上,即可实现数据库的增量备份。
- 假设需要将Redo Log日志切换到下一个日志文件,则可以通过执行FLUSH LOGS命令来手动触发Redo Log日志切换。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL中常见的几种日志汇总 - Python技术站