面试题答案
一键面试中继日志清理策略
- 自动清理:
- MySQL从库默认会自动清理已经应用的中继日志。参数
relay_log_purge
默认值为1,表示自动清理。当从库应用完中继日志中的事件后,会自动删除这些中继日志文件,以避免中继日志占用过多磁盘空间。
- MySQL从库默认会自动清理已经应用的中继日志。参数
- 手动清理:
- 若需要手动清理中继日志,可以使用
PURGE RELAY LOGS
语句。例如,PURGE RELAY LOGS TO 'relay - log.000003';
会删除所有编号小于等于relay - log.000003
的中继日志文件(前提是这些日志中的事件已经全部应用)。但在手动清理时要非常小心,确保所有需要应用的事件都已经处理完毕,否则可能导致复制中断。
- 若需要手动清理中继日志,可以使用
调整相关参数优化中继日志使用
relay_log
:- 该参数指定中继日志的文件名前缀。合理设置此参数有助于组织和识别中继日志。例如,
relay_log = /var/lib/mysql/mysql - relay - log
,将中继日志存储在指定目录下,并使用mysql - relay - log
作为文件名前缀。
- 该参数指定中继日志的文件名前缀。合理设置此参数有助于组织和识别中继日志。例如,
relay_log_space_limit
:- 此参数用于限制中继日志占用的总空间大小。当所有中继日志文件的总大小接近这个限制值时,MySQL会自动删除较早的中继日志文件(前提是其中的事件已经应用)。例如,设置
relay_log_space_limit = 1024M
,可以防止中继日志占用过多磁盘空间。
- 此参数用于限制中继日志占用的总空间大小。当所有中继日志文件的总大小接近这个限制值时,MySQL会自动删除较早的中继日志文件(前提是其中的事件已经应用)。例如,设置
max_relay_log_size
:- 它限制单个中继日志文件的最大大小。当一个中继日志文件达到此大小限制时,MySQL会创建一个新的中继日志文件。合理设置该参数可以避免单个中继日志文件过大,例如设置
max_relay_log_size = 512M
,有助于管理和维护中继日志。
- 它限制单个中继日志文件的最大大小。当一个中继日志文件达到此大小限制时,MySQL会创建一个新的中继日志文件。合理设置该参数可以避免单个中继日志文件过大,例如设置
slave_parallel_workers
:- 从MySQL 5.7开始支持多线程复制,此参数设置从库用于并行应用中继日志事件的线程数。适当增加该值可以提高中继日志的应用速度,从而提升复制性能。例如,对于具有多核CPU的服务器,可以根据CPU核心数设置
slave_parallel_workers = 4
等。但需要注意,过高的线程数可能会带来额外的资源竞争,需根据实际情况调整。
- 从MySQL 5.7开始支持多线程复制,此参数设置从库用于并行应用中继日志事件的线程数。适当增加该值可以提高中继日志的应用速度,从而提升复制性能。例如,对于具有多核CPU的服务器,可以根据CPU核心数设置