设为首页收藏本站 JeeStudy企业开发官网①

JEE Study|JAVA EE|企业级开发学习网

 找回密码
 立即加入

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 1757|回复: 0
打印 上一主题 下一主题

MySQL8.0大师之路:第11章:MySQL服务器管理-11.19 MySQL 服务器日志维护

[复制链接]

219

主题

221

帖子

1418

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1418

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

跳转到指定楼层
楼主
发表于 2020-4-23 13:36:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
服务器日志维护
    MySQL Server可以创建多个不同的日志文件来帮助您查看正在发生的活动。但是,您必须定期清理这些文件,以确保日志不会占用过多的磁盘空间。

    使用启用了日志记录的MySQL时,您可能需要不时备份和删除旧日志文件,并告诉MySQL开始记录新文件。


    在Linux(Red Hat)安装中,可以使用mysql-log-rotate脚本进行日志维护。如果您是从RPM发行版安装的MySQL,则该脚本应该已经自动安装。如果要使用二进制日志进行复制,请谨慎使用此脚本。在确定所有从站都已处理完二进制日志之前,请勿删除二进制日志。


    在其他系统上,您必须自己安装一个简短的脚本,该脚本是从cron(或其等效文件)开始的,用于处理日志文件。


    服务器的二进制日志过期后,二进制日志文件会自动删除。可以在启动时以及刷新二进制日志时删除文件。默认的二进制日志有效期为30天。要指定替代的到期期限,请使用binlog_expire_logs_seconds系统变量。如果使用的是复制,则应指定一个有效期限,该期限不小于您的从服务器可能落后于主服务器的最大时间。要按需删除二进制日志,请使用PURGE BINARY LOGS语句。


    要强制MySQL开始使用新的日志文件,请刷新日志。当执行FLUSH LOGS语句或mysqladmin flush-logs,mysqladmin refresh,mysqldump --flush-logs或mysqldump --master-data命令时,将发生日志刷新。另外,当当前二进制日志文件大小达到max_binlog_size系统变量的值时,服务器会自动刷新二进制日志。


    FLUSH LOGS支持可选的修饰符,以启用对单个日志的选择性刷新(例如FLUSH BINARY LOGS)。


    日志刷新操作具有以下效果:
•如果启用了二进制日志记录,则服务器将关闭当前的二进制日志文件,并使用下一个序号打开一个新的日志文件。
•如果启用了对日志文件的常规查询日志记录或慢速查询日志记录,则服务器将关闭并重新打开日志文件。
•如果使用--log-error选项启动服务器以导致将错误日志写入文件,则服务器将关闭并重新打开日志文件。


     执行日志刷新语句或命令需要使用具有RELOAD特权的帐户连接到服务器。在Unix和类似Unix的系统上,刷新日志的另一种方法是向服务器发送信号,这可以由root或拥有服务器进程的帐户来完成。 信号使无需连接服务器即可执行日志刷新:
•SIGHUP信号刷新所有日志。但是,SIGHUP具有除日志刷新以外的其他效果,这可能是不希望的。
•从MySQL 8.0.19开始,SIGUSR1导致服务器刷新错误日志,常规查询日志和慢速查询日志。
如果您只想刷新那些日志,可以将SIGUSR1用作更轻量级的信号,它不具有与日志无关的SIGHUP效果。


    如前所述,刷新二进制日志会创建一个新的二进制日志文件,而刷新常规查询日志,慢查询日志或错误日志只会关闭并重新打开日志文件。对于后一种日志,要在Unix上创建新的日志文件,请先刷新当前日志文件,然后再刷新它。在刷新时,服务器使用原始名称打开新的日志文件。例如,如果将常规查询日志,慢速查询日志和错误日志文件命名为mysql.log,mysql-slow.log和err.log,则可以使用一系列


在命令行中这样的命令:

cd mysql-data-directory
mv mysql.log mysql.log.old
mv mysql-slow.log mysql-slow.log.old
mv err.log err.log.old
mysqladmin flush-logs

在Windows上,请使用重命名而不是mv。
此时,您可以备份mysql.log.old,mysql-slow.log.old和err.log.old,然后从磁盘中删除它们。
要在运行时重命名常规查询日志或慢速查询日志,请首先连接到服务器并禁用该日志:

SET GLOBAL general_log = 'OFF';
SET GLOBAL slow_query_log = 'OFF';

在禁用日志的情况下,从外部重命名日志文件(例如,从命令行)。然后再次启用日志:

SET GLOBAL general_log = 'ON';
SET GLOBAL slow_query_log = 'ON';

此方法可在任何平台上使用,并且不需要重新启动服务器。


为了在外部重命名文件后服务器重新创建给定的日志文件,文件位置必须是服务器可写的。并非总是如此。例如,在Linux上,服务器可能将错误日志写为/ var / log / mysqld.log,其中/ var / log由root拥有,而mysqld不可写。在这种情况下,日志刷新操作无法创建新的日志文件。要解决这种情况,您必须在重命名原始日志文件后手动创建具有适当所有权的新日志文件。例如,以root用户身份执行以下命令:

mv /var/log/mysqld.log /var/log/mysqld.log.old
install -omysql -gmysql -m0644 /dev/null /var/log/mysqld.log










知识改变命运!

JAVA EE 学习     JAVA EE 资料
JEE Study:企业级开发学习网!
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

QQ|Archiver|手机版|小黑屋|JEE Study ( 京ICP备16036936   JeeStudy企业开发官网①

GMT+8, 2024-4-20 18:06 , Processed in 0.197486 second(s), 24 queries .

Powered by JeeStudy!

© 2008-2020 JEE Study 企业级开发学习网

快速回复 返回顶部 返回列表