MySQL高可用方案MHA的部署和原理(4)

      2> 配置文件中设置了master_ip_failover_script和secondary_check_script两个选项,对应的文件在上面提供的百度云盘中有。 

2. 设置relay log清除方式(在每个Slave上)

mysql> set global relay_log_purge=0; Query OK, 0 rows affected (0.00 sec)

MHA在发生切换过程中,从库在恢复的过程中,依赖于relay log的相关信息,所以我们这里要将relay log的自动清楚设置为OFF,采用手动清楚relay log的方式。

在默认情况下,从服务器上的中继日志会在SQL线程执行完后被自动删除。但是在MHA环境中,这些中继日志在恢复其它从服务器时可能会被用到,因此需要禁用中继日志的自动清除。改为定期手动清除SQL线程应用完的中继日志。

在ext3文件系统下,删除大的文件需要一定的时间,这样会导致严重的复制延迟,所以在Linux中,一般都是通过硬链接的方式来删除大文件。

3. 设置定期清理relay脚本

MHA节点中包含了purge_relay_logs脚本,它可以为relay log创建硬链接,执行set global relay_log_purge=1,等待几秒钟以便SQL线程切换到新的中继日志,再执行set global relay_log_purge=0。

下面看看脚本的使用方法:

# purge_relay_logs --user=monitor --password=monitor123 -disable_relay_log_purge --workdir=/tmp/

2017-04-24 20:27:46: purge_relay_logs script started.
Found relay_log.
info: /var/lib/mysql/relay-log.info
Opening
/var/lib/mysql/mysqld-relay-bin.000001 ..
Opening
/var/lib/mysql/mysqld-relay-bin.000002 ..
Opening
/var/lib/mysql/mysqld-relay-bin.000003 ..
Opening
/var/lib/mysql/mysqld-relay-bin.000004 ..
Opening
/var/lib/mysql/mysqld-relay-bin.000005 ..
Opening
/var/lib/mysql/mysqld-relay-bin.000006 ..
Executing SET GLOBAL relay_log_purge
=1; FLUSH LOGS; sleeping a few seconds so that SQL thread can delete older relay log files (if i
t keeps up); SET GLOBAL relay_log_purge
=0; .. ok.2017-04-24 20:27:50: All relay log purging operations succeeded.

其中,

--user:mysql用户名

--password:mysql用户的密码

--host: mysqlserver地址

--workdir:指定创建relay log的硬链接的位置,默认的是/var/tmp。由于系统不同分区创建硬链接文件会失败,故需要指定具体的硬链接的位置。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/95041e4822abbf40207265617861b798.html