MySQL数据库日志总结(二)中,有哪些可以提出?
摘要:日志信息滚动切割 在应用binlog日志过程中,经常需要对日志文件进行日志切割(滚动更新),可以有效避免日志文件数据量过大问题; 在某些场景中,如果需要对binlog日志文件进行备份操作时,也可以对原有使用的binlog日志文件进行滚动更新
日志信息滚动切割
在应用binlog日志过程中,经常需要对日志文件进行日志切割(滚动更新),可以有效避免日志文件数据量过大问题;
在某些场景中,如果需要对binlog日志文件进行备份操作时,也可以对原有使用的binlog日志文件进行滚动更新;
常用的日志滚动更新方法:
# 方法一:
mysql> flush logs;
-- 滚动更新前的日志文件就会处于静止状态,不会在进行数据信息的更新
# 方式二:
[root@cheng ~ ]# mysql -uroot -p123456 flush-logs
# 方式三:
mysql> restart;
-- mysql 8.0之后支持的数据库中重启服务;之前的版本只支持shutdown关闭数据库;
[root@cheng ~ ]# /etc/init.d/mysqld restart
# 方式四:
mysql> select @@max_binlog_size;
+--------------------------+
| @@max_binlog_size |
+--------------------------+
| 1073741824 |
+--------------------------+
-- 配置binlog日志最大数据存储量,默认大小为1G,到达最大日志存储量也会进行自动切割;
日志信息清理方法
在系统中日志信息,随着时间的推移将会越来越多,将严重占用磁盘空间,因此需要对日志做相应清理工作;
对于日志信息常用的清理方式有两种:
方式一:进行日志信息自动清理
mysql> show variables like '%expire%';
+-------------------------------------+-----------+
| Variable_name | Value |
+-------------------------------------+-----------+
| binlog_expire_logs_seconds | 2592000 |
| expire_logs_days | 0 |
+-------------------------------------+-----------+
3 rows in set (0.00 sec)
-- 在最新数据库8.0中,可以以秒为单位进行日志信息清理,默认是30天进行日志清理,或者也可以以天为单位进行清理;
-- 在最先数据库8.0前,主要是以天为单位进行清理,但默认清理功能并未激活;
-- 在企业实战环境中,建议过期时间最少保留一轮全备周期以上,有条件最好是保留两轮+1;
方式二:进行日志信息手工清理
mysql> help purge binary logs;
-- 获取清理日志命令帮助信息
mysql> purge binary logs to 'mysql-bin.010'
-- 删除到指定日志文件前结束
mysql> PURGE BINARY LOGS BEFORE '2025-12-02 22:46:26';
-- 可以基于日志时间点信息进行日志清理
说明:在对数据库服务日志信息进行清理时,最好使用数据库服务自带的清理工具进行清理,不建议使用rm做日志清理;
日志信息远程备份:
可以实现将数据库中(特别是主库)生成的binlog日志文件,及时备份保存到专门的日志备份服务器中,并且整个备份操作都是在线的;
[root@cheng-01 ~]# mkdir -p /binlog_backup
[root@cheng-01 ~]# cd /binlog_backup/
[root@cheng-01 binlog_backup]# mysqlbinlog -R --host=192.168.30.101 --user=root --password=123456 --raw --stop-never binlog.000008 &
-- 备份过程可以放后台一直运行,但是需要注意当连接的数据库服务器停止或重启了,也会导致备份中断;
# 数据库服务多实例情况binlog日志备份
mysqlbinlog -R --host=10.0.0.51 -P 3306 --user=root --password=123456 --raw --stop-never binlog.000002 &
mysqlbinlog -R --host=1
