标签:int 建立 install 扩展 user system 服务器 从库 ant
一、 MHA:Master High Availability 对主节点进行监控,可实现自动故障转移至其它从节点;通过提升某一从节点为新的主节点,基于主从复制实现,还需要客户端配合实现,目前MHA主要支持一主多从的架构,要搭建MHA,要求一个复制集群中必须最少有三台数据库服务器,一主二从,即一台充当master,一台充当备用master,另外一台充当从库,出于机器成本的考虑,淘宝进行了改造,目前淘宝TMHA已经支持一主一从
官网:https://code.google.com/archive/p/mysql-master-ha/
(1) 从宕机崩溃的master保存二进制日志事件(binlog events)
(2) 识别含有最新更新的slave
(3) 应用差异的中继日志(relay log)到其他的slave
(4) 应用从master保存的二进制日志事件(binlog events)
(5) 提升一个slave为新的master
(6) 使其他的slave连接新的master进行复制
(1)Manager工具包主要包括以下几个工具:
masterha_check_ssh 检查MHA的SSH配置状况
masterha_check_repl 检查MySQL复制状况
masterha_manger 启动MHA
masterha_check_status 检测当前MHA运行状态
masterha_master_monitor 检测master是否宕机
masterha_master_switch 故障转移(自动或手动)
masterha_conf_host 添加或删除配置的server信息
(2)Node工具包:这些工具通常由MHA Manager的脚本触发,无需人为操作)主要包括以下几个工具:
save_binary_logs 保存和复制master的二进制日志
apply_diff_relay_logs 识别差异的中继日志事件并将其差异的事件应用于其他的slave
filter_mysqlbinlog 去除不必要的ROLLBACK事件(MHA已不再使用此工具)
purge_relay_logs 清除中继日志(不会阻塞SQL线程)
(可选:为了尽可能的减少主库硬件损坏宕机造成的数据丢失,因此在配置MHA的同时建议配置成MySQL 5.5的半同步复制)
secondary_check_script: 通过多条网络路由检测master的可用性
master_ip_ailover_script: 更新Application使用的masterip
shutdown_script: 强制关闭master节点
report_script: 发送报告
init_conf_load_script: 加载初始配置参数
master_ip_online_change_script:更新master节点ip地址
global配置,为各application提供默认配置
application配置:为每个主从复制集群
(1)在管理节点上安装两个包:
mha4mysql-manager (须开启epel源,必要时yum install mha4*)
mha4mysql-node
(2)在被管理节点安装:
mha4mysql-node
vim /etc/mastermha/app1.cnf
[server default]
user=mhauser
password=123456
master_binlog_dir=/data/bin/
manager_workdir=/data/mastermha/app1/
manager_log=/data/mastermha/app1/manager.log
remote_workdir=/data/mastermha/app1/
ssh_user=root
repl_user=repluser
repl_password=123456
ping_interval=1
[server1]
hostname=192.168.30.16
candidate_master=1
[server2]
hostname=192.168.30.66
candidate_master=1
[server3]
hostname=192.168.30.6
candidate_master=1
vim /etc/my.cnf
[mysqld]
log-bin=/data/bin/mysql-bin
server_id=1
skip_name_resolve=1
mysql>show master logs
mysql>grant replication slave on *.* to repluser@‘192.168.30.%‘ identified by ‘123456‘;
mysql>grant all on *.* to mhauser@‘192.168.30.%’identified by‘123456‘;
vim /etc/my.cnf
[mysqld]
server_id=2 #不同节点此值各不相同
log-bin=/data/bin/mysql-bin
read_only
relay_log_purge=0
skip_name_resolve=1
mysql>CHANGE MASTER TO
MASTER_HOST=‘MASTER_IP‘,
MASTER_USER=‘repluser‘,
MASTER_PASSWORD=‘123456‘,
MASTER_LOG_FILE=‘mariadb-bin.000001‘,
MASTER_LOG_POS=245;
(1)MHA验证和启动
masterha_check_ssh --conf=/etc/mastermha/app1.cnf
masterha_check_repl --conf=/etc/mastermha/app1.cnf
masterha_manager --conf=/etc/mastermha/app1.cnf //此命令执行后会默认在前台执行,除非主节点出现问题导致自动提升从节点做新的主节点
(2)模拟主节点宕机:
systemctl stop mariadb
(3)排错日志
cat /data/mastermha/app1/manager.log | tail //可以查看哪个从节点被提升为新的主节点
标签:int 建立 install 扩展 user system 服务器 从库 ant
原文地址:https://blog.51cto.com/14230230/2391303