ann*_*nna 13 mysql replication mysql-5 mysql-5.5
我有一个关于在复制环境中删除二进制日志的问题:
我们有一个有 1 个主站和 2 个从站的环境(运行 mysql 5.5)。有时,我们会在繁重的处理时间内遇到空间问题,从而导致 bin 日志目录已满。日志每 3 天过期一次。我想知道,是否有理由将日志在所有盒子上保存 3 天 - 主机和两个从机?例如,将日志在主服务器上保存 3 天,而在从服务器上保存 1 天是否有意义?最好的方法是什么?
谢谢!
Rol*_*DBA 12
如果您的 Slaves 不是 Master,那么 Slaves 根本不需要二进制日志记录。您可以限制从站累积的中继日志空间量。为了限制 4G 的中继日志,relay_log_space_limit
在每个 Slave 上添加到 /etc/my/.cnf
[mysqld]
relay_log_space_limit=4G
Run Code Online (Sandbox Code Playgroud)
并重新启动mysql
如果你不能设置它,至少你应该有某种警报来SHOW SLAVE STATUS\G
检查Relay_Log_Space
(中继日志消耗的总字节数)的值。
至于Master,你可以设置expire_logs_days
为1,但我对你有一个严重的警告......
如果复制中断,您有 1 天的时间来修复它。否则,Master 上的二进制日志可能会轮换,并且您无法运行任何 CHANGE MASTER TO 命令来重新对齐复制。我会expire_logs_days
在 3 点离开Master。
如果您有任何夜间批量处理要做,也许应该SET SQL_LOG_BIN=0;
在会话开始时在主服务器上运行批量处理。当然,这不会复制到 Slave。您可以对两个从站并行执行相同的批量加载。
您可以做的另一件事是管理 Master 二进制日志累积。
SHOW SLAVE STATUS\G
在两个奴隶上运行。看看Relay_Master_Log_File
。这代表了 Master 上的二进制日志,其最后一个命令是在 Slave 上执行的。
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.4.92.250
Master_User: replicant
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.009677
Read_Master_Log_Pos: 855227755
Relay_Log_File: relay-bin.000674
Relay_Log_Pos: 757296783
Relay_Master_Log_File: mysql-bin.009590
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 757296646
Relay_Log_Space: 94274010765
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: 80561
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
在本例中,Relay_Master_Log_File 是 mysql-bin.009590。在此之前的所有二进制日志都可以从 Master 中删除。你可以在 Master 上运行这个:
PURGE BINARY LOGS TO 'mysql-bin.009590';
Run Code Online (Sandbox Code Playgroud)
这将删除旧日志并仍然保持复制状态。
二进制日志是将所有已完成的 SQL 事务串行编译(如 FIFO 队列)作为 SQL 语句或行更改的文件。中继日志是一个从远程服务器(又名 Master)收集二进制日志条目的文件。
在 MySQL 复制中
如果你故障转移到一个从站,并且你想让它成为一个主站
log-bin=mysql-bin
在 Slave 上添加到 /etc/my.cnf您必须设置将其他 Slave 复制到新升级的 Master,并确保 Slave 上的数据与新升级的 Master 匹配
根据选项上的MySQL 文档relay-log
,您应该定义它。原因如下:
由于 MySQL 解析服务器选项的方式,如果指定此选项,则必须提供一个值;仅当未实际指定选项时才使用默认基本名称。如果使用 --relay-log 选项而不指定值,可能会导致意外行为;此行为取决于使用的其他选项、指定它们的顺序以及它们是在命令行还是在选项文件中指定。有关 MySQL 如何处理服务器选项的更多信息,请参阅第 4.2.3 节,“指定程序选项”。
归档时间: |
|
查看次数: |
21591 次 |
最近记录: |