我在一个新启动的MySQL从服务器上耗尽了磁盘空间。大部分磁盘空间位于/var/log/mysql中,在这里我可以看到mysql-bin.000XXX和mysql-relay-bin.000XXX日志,每个日志都是1.1G。
传统的只读MySQL奴隶需要这两种方式吗?mysql-bin.000XXX可以追溯到000001,这让我相信它们没有被使用。
以下是来自我的my.cnf的相关信息:
## Slave my.cnf
binlog_format = mixed
log_bin = /var/log/mysql/mysql-bin.log
sync_binlog = 1
pid_file = /var/run/mysqld/mysqld.pid
log_error = /var/log/mysql/error.log
general_log = 0
general_log_file = /var/log/mysql/general.log
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 3
server_id = 2
relay-log = /var/log/mysql/mysql-relay-bin.log
replicate-wild-do-table = my_table_prefix_%.%
log_slave_updates = 1
read_only = 1下面是我的日志目录的ls -lah:
-rw-r----- 1 mysql mysql 1.1G Mar 29 19:48 mysql-bin.000001
-rw-r----- 1 mysql mysql 1.1G Mar 29 19:55 mysql-bin.000002
-rw-r----- 1 mysql mysql 1.1G Mar 29 20:03 mysql-bin.000003
...
-rw-r----- 1 mysql mysql 1.1G Mar 29 20:11 mysql-bin.000286
...
-rw-r----- 1 mysql mysql 254 Mar 31 12:27 mysql-relay-bin.000015
-rw-r----- 1 mysql mysql 1.1G Mar 31 12:27 mysql-relay-bin.000016
-rw-r----- 1 mysql mysql 326 Mar 31 12:27 mysql-relay-bin.000017
...
-rw-r----- 1 mysql mysql 1.1G Mar 31 12:27 mysql-relay-bin.000769从服务器正在慢慢地赶上掌握和适当清除mysql-relay-bin文件。但是看起来mysql-bin文件将永远堆叠在一起。
和奴隶地位:
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 127.0.0.1
Master_User: repl_user
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000291
Read_Master_Log_Pos: 15703910
Relay_Log_File: mysql-relay-bin.000016
Relay_Log_Pos: 662979789
Relay_Master_Log_File: mysql-bin.000011
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table: my_table_prefix_%.%
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 662979592
Relay_Log_Space: 271579588573
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 729594
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 100
Master_UUID: 5e12-f712611e5-b2f1-f206553c91-3b124
Master_Info_File: /var/lib/mysql/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Reading event from the relay log
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:发布于 2016-03-31 22:12:32
你是正确的。传统上,复制奴隶需要启用二进制日志,除非您计划有一天将其故障转移到它。
在从服务器上使用二进制日志的唯一原因是
至于你的实际情况,这里有两个建议(选一)
首先,以root@localhost的身份登录到mysql,然后运行
mysql> STOP SLAVE;
mysql> RESET MASTER;接下来,从my.cnf中注释掉这一行
#log_bin = /var/log/mysql/mysql-bin.log
#log_slave_updates = 1接下来,重新启动mysql
service mysql restart最后,手动删除这些日志。
cd /var/log/mysql
rm -f mysql-bin.*如果不想重新启动mysql,请执行以下操作
首先,以“`root@localhost”的身份登录到mysql,然后运行
mysql> SET GLOBAL expire_logs_days = 1;
mysql> RESET MASTER;然后,将这一行添加到my.cnf中
expire_logs_days = 1这样,奴隶仍然会堆积二进制日志,但是会自动删除24小时以上的二进制日志。
https://dba.stackexchange.com/questions/134005
复制相似问题