日志记录功能对于开发和测试您的应用程序以及部署 MySQL 路由器非常方便。要使用日志记录,请在名为 [logger]
的部分的配置文件中启用日志记录 level
选项。例如
[logger]
level = INFO
使用 logging_folder
选项设置日志文件的位置,该选项在配置文件的 [DEFAULT]
部分中定义为目录路径。日志文件名为 mysqlrouter.log
。例如
[DEFAULT]
# Logs are sent to /path/to/folder/mysqlrouter.log
logging_folder = /path/to/folder
[logger]
level = DEBUG
将 logging_folder
设置为空字符串会将日志发送到控制台 (stdout)。
两个常见的日志记录级别是 INFO
(默认)和 DEBUG
INFO
:包括如上所示的信息性消息,并且是默认设置。DEBUG
:包括在路由器源代码内部生成的消息,用于诊断。DEBUG
提供有关路由器内部工作原理的详细信息。虽然应用程序可能对此不感兴趣,但如果您遇到问题或路由器行为不如预期,则使用DEBUG
可能会有所帮助。
以下示例显示了 DEBUG
日志记录级别的消息外观;比较 INFO
和 DEBUG
消息
2019-04-07 18:25:56 INFO [0x700009673000] Connections using ssl_mode 'PREFERRED'
2019-04-07 18:25:56 INFO [0x700009673000] Connected with metadata server running on 127.0.0.1:3310
2019-04-07 18:25:56 DEBUG [0x700009673000] Updating metadata information for cluster 'devCluster'
2019-04-07 18:25:56 DEBUG [0x700009673000] Updating replicaset status from GR for 'default'
2019-04-07 18:25:56 DEBUG [0x700009673000] Replicaset 'default' has 3 members in metadata, 3 in status table
2019-04-07 18:25:56 DEBUG [0x700009673000] End updating replicaset for 'default'
2019-04-07 18:25:56 INFO [0x700009673000] Changes detected in cluster 'devCluster' after metadata refresh
2019-04-07 18:25:56 INFO [0x700009673000] Metadata for cluster 'devCluster' has 1 replicasets:
路由器支持日志轮换;此处列出了包含示例实现的场景。
Windows 不支持此功能。
按需轮换
按需日志轮换可以通过两个步骤完成:重命名日志文件,然后通知路由器,以便它创建并切换到新的日志文件。
直接从系统的 shell 或可以作为计划任务自动调用的脚本执行日志轮换。例如
sudo mv /var/log/mysqlrouter/mysqlrouter.log /var/log/mysqlrouter/mysqlrouter.log.old
kill -HUP $(pidof mysqlrouter)
logrotate
logrotate 机制也可以轮换路由器的日志文件。轮换后,将通知路由器重新打开日志文件,这是通过向路由器进程发送 HUP 来实现的。示例 logrotate 配置文件
/var/log/mysqlrouter/mysqlrouter.log {
rotate 9
size 10M
create 0755 mysqlrouter mysqlrouter
postrotate
kill -HUP $(pidof mysqlrouter)
endscript
}
该示例将日志轮换为 mysqlrouter.log、mysqlrouter.log.1、...、mysqlrouter.log.9。轮换是根据当前 mysqlrouter.log 文件的大小触发的,前提是大小大于 10MB。假设此配置保存为 /etc/mysqlrouter/logrotate.conf
,则它可能会定期执行(添加到 cron 中),如下所示
[sudo] logrotate /etc/mysqlrouter/logrotate.conf