我运行一个高流量的 MySQL 服务器 - 并且我观察到我的 binlog 只能达到 50mb,并且 MySQL 再次创建一个新的。
我已经max_binlog_size
设置为 1GB - 但出于某种原因 - MySQL 不接受它。还有其他我应该注意的设置吗?
我使用的是 MySQL 4.1.22、CentOS 5(由 LiquidWeb 管理的服务器)。
root@host2 [~]# mysqladmin variables | grep bin
| binlog_cache_size | 32768 |
| innodb_locks_unsafe_for_binlog | OFF |
| log_bin | ON |
| max_binlog_cache_size | 18446744073709551615 |
| max_binlog_size | 1073741824 |
| sync_binlog | 0 |
还有一个观察:根据“ls -al”的输出,binlog 的日期在分钟部分几乎相同,也就是说,几乎总是每小时的第 41 分钟轮换。
这很奇怪,因为我找不到任何可以做到这一点的 cron 脚本。我问过 LiquidWeb 系统管理员,他们说他们也没有控制这一点。
那么,有人有什么想法吗?
---
root@host2 [~]# ls -al /home/master_mysql/
total 1069004
drwxr-xr-x 3 mysql mysql 4096 Nov 15 23:41 ./
drwx--x--x 13 root root 4096 Nov 14 17:15 ../
-rw-rw---- 1 mysql mysql 122 Nov 14 19:42 mysql-bin.000001
-rw-rw---- 1 mysql mysql 27841530 Nov 14 21:41 mysql-bin.000002
-rw-rw---- 1 mysql mysql 7899803 Nov 14 21:55 mysql-bin.000003
-rw-rw---- 1 mysql mysql 79 Nov 14 21:56 mysql-bin.000004
-rw-rw---- 1 mysql mysql 16789873 Nov 14 22:41 mysql-bin.000005
-rw-rw---- 1 mysql mysql 33813877 Nov 14 23:41 mysql-bin.000006
-rw-rw---- 1 mysql mysql 48819373 Nov 15 00:41 mysql-bin.000007
-rw-rw---- 1 mysql mysql 41505054 Nov 15 01:41 mysql-bin.000008
-rw-rw---- 1 mysql mysql 44608575 Nov 15 02:41 mysql-bin.000009
-rw-rw---- 1 mysql mysql 40341521 Nov 15 03:41 mysql-bin.000010
-rw-rw---- 1 mysql mysql 33625553 Nov 15 04:41 mysql-bin.000011
-rw-rw---- 1 mysql mysql 28685183 Nov 15 05:41 mysql-bin.000012
-rw-rw---- 1 mysql mysql 28054132 Nov 15 06:41 mysql-bin.000013
-rw-rw---- 1 mysql mysql 31718242 Nov 15 07:41 mysql-bin.000014
-rw-rw---- 1 mysql mysql 34437340 Nov 15 08:41 mysql-bin.000015
-rw-rw---- 1 mysql mysql 39474942 Nov 15 09:41 mysql-bin.000016
-rw-rw---- 1 mysql mysql 43580287 Nov 15 10:41 mysql-bin.000017
-rw-rw---- 1 mysql mysql 51165432 Nov 15 11:41 mysql-bin.000018
-rw-rw---- 1 mysql mysql 48298102 Nov 15 12:41 mysql-bin.000019
-rw-rw---- 1 mysql mysql 44044967 Nov 15 13:35 mysql-bin.000020
-rw-rw---- 1 mysql mysql 53665390 Nov 15 14:41 mysql-bin.000021
-rw-rw---- 1 mysql mysql 46259278 Nov 15 15:41 mysql-bin.000022
-rw-rw---- 1 mysql mysql 44675487 Nov 15 16:41 mysql-bin.000023
-rw-rw---- 1 mysql mysql 41288305 Nov 15 17:41 mysql-bin.000024
-rw-rw---- 1 mysql mysql 45883369 Nov 15 18:41 mysql-bin.000025
-rw-rw---- 1 mysql mysql 40055136 Nov 15 19:41 mysql-bin.000026
-rw-rw---- 1 mysql mysql 39884190 Nov 15 20:41 mysql-bin.000027
-rw-rw---- 1 mysql mysql 43919061 Nov 15 21:41 mysql-bin.000028
-rw-rw---- 1 mysql mysql 45474412 Nov 15 22:41 mysql-bin.000029
-rw-rw---- 1 mysql mysql 43899660 Nov 15 23:41 mysql-bin.000030
-rw-rw---- 1 mysql mysql 3625113 Nov 15 23:45 mysql-bin.000031
-rw-rw---- 1 mysql mysql 1116 Nov 15 23:41 mysql-bin.index
drwxr-xr-x 2 root root 4096 Nov 14 19:00 restore_point_20091114/
---
谢谢!
答案1
鉴于大小完全不同,因此并未达到大小限制,而且确切时间也很明显——MySQL 会在重新启动时或当您告诉它重新打开其他(系统)日志时轮换其 binlog——这通常是 logrotate(或其他日志轮换工具)在其操作中会执行的操作。查找轮换日志的原因(如果 LiquidWeb 应该为您管理这一点,请小心... 非常小心)。
答案2
我同意 womble 的观点,max_binlog_size 应该可以,但看起来你正在刷新/轮换日志。检查 /etc/crontab 或 /var/spool/cron 内的任何 cron 是否有任何异常。此外,也许可以将 my.cnf 设置为 sql_log_off = on(我的是 5.1,但这应该对你有用)以在 mysqld.log 中获取更多信息,尽管很多信息可能只是垃圾。你有任何可以执行此操作的前端软件吗?祝你好运。