设为首页 加入收藏

TOP

mysql高可用之mha(四)
2015-11-21 01:50:33 来源: 作者: 【 】 浏览:8
Tags:mysql 可用 mha
mysql> change master to master_host='10.10.10.56',master_port=3306,master_user='rep',master_password='123456',master_log_file='mysql-bin.XXXX',master_log_pos=XXXX; mysql> start slave mysql> show slave status\G; 查看Slave_IO_Running,Slave_SQL_Running是否为yes
(3)两台slave设置read_only( 从库对外只提供读,因为slave可能选为master,因此不把它写入配置文件)

mysql -e 'set global read_only=1'

(4)master和slave都添加管理账号

mysql> grant all privileges on *.* to 'mha'@'10.10.10.%' identified by '123456';
Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
具体搭建过程在此不详细说了,可以参考前面atlas的相关博文,但是请注意以下要点:

(1)log-bin必须在candicate mater(备选主机)上必须设置,如果备选主机没有设置log-bin,那么在故障转移过程mha manager会检测不到log-bin,则备选主机不会成为新的master,即使你设置过candicate master=1;如果所有slave没有设置log-bin,则mha manager不会启动故障转移。

(2)replication用户必须在所有的slave上存在,否则masterha_check_repl会不成功

(3)replication过滤规则(binlog-do-db和replicate-ignore-db等)必须在所有msyql上一致,否则masterha_check_repl会不成功

5.mha配置

(1)创建mha配置文件目录并编辑配置文件

[root@rd-mysql-test4 mha4mysql-manager-0.53]#mkdir -p /etc/mha/
[root@rd-mysql-test4 mha4mysql-manager-0.53]#cp samples/conf/app1.conf /etc/mha
[root@rd-mysql-test4 mha4mysql-manager-0.53]#mkdir -p /var/log/masterha/app1
[root@rd-mysql-test4 mha4mysql-manager-0.53]#vim /etc/mha/app1.conf
[server default]
#manger mha工作目录,用于产生相关状态文件
manager_workdir=/var/log/masterha/app1
#manger mha日志
manager_log=/var/log/masterha/app1/manager.log
#mha产生日志的目录,需要足够的权限
remote_workdir=/tmp
#master保存binlog的目录,如果master故障,但是ssh能通则用于拷贝复制二进制日志,保证数据一致性
master_binlog_dir=/data/mysql
#mysql管理用户和密码,最好是root,以便执行所有mysqlm命令,如stop slaves,change master等
user=mha
password=123456
#复制用户和密码
repl_user=rep
repl_password=123456
#ssh的用户名和密码,为了方便拷贝复制,我们用root用户
ssh_user=root
ssh_port=1022
#mha manager使用ping sql statement检测master的频率,如果超过3次不通则认定mysql master崩溃
ping_interval=1
#默认使用ping_type=SELECT检测,但是从0.53开始使用更可靠的CONNECT,从0.53开始使用更可靠的INSERT
ping_type=CONNECT

#故障转移使用的脚本
#master_ip_failover_script=/usr/local/bin/master_ip_failover
#在线切换脚本
#master_ip_online_change_script=/usr/local/bin/master_ip_online_change
#发送报警信息脚本
#report_script=/usr/local/bin/send_report
#通过多种网络路径检测ssh是否能够连接到master脚本,若其中一个路径不通,则会通过另一个路径ssh连接到master
#secondary_check_script=/usr/local/bin/masterha_secondary_check -s rd-mysql-test2 -s rd-mysql-test3 --user=mha --master_host=rd-mysql-test1 --master_ip=10.10.10.56 --master_port=3306
#关闭master脚本防止脑裂
#shutdown_script=/usr/local/bin/power_manager

[server1]
hostname=10.10.10.56
port=3306

[server2]
hostname=10.10.10.57
port=3306
#备选master参数
candidate_master=1
#如果slave的relay log落后于master超过100M,将此选为新master时会花费较长时间,因此mha manager不会将此slave选为新的master。通过过设置此参数可以忽略这种情况
check_repl_delay=0

[server3]
hostname=10.10.10.58
port=3306

注意:以上相关执行脚本命令的已经全都注释点,后面我们会通过手动执行的方式来充分了解,当我们全都弄明白了在恢复自动执行。

(2)设置relay log的清除方式

默认情况下,slave上的relay log在sql thread执行完成后会自动清除,但是这些relay log可能在恢复其他slave时仍然需要。因此我们禁用relay log自动清除功能,使用定期清除relay log的方法。然而在手动清除的时候我们需要考虑到复制延迟的问题,在ext3文件系统中,删除大文件会花费很长的时间,这会导致严重的复制延迟。为了避免这种情况,我们可以通过建立硬链接的方式来避免。

mha node用purge_relay_logs工具来实现,它会创建硬链接,执行set global relay_log_purge

首页 上一页 1 2 3 4 5 6 7 下一页 尾页 4/10/10
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇阿里云远程如何访问mysql 下一篇eclipse连接mysql

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: