MHA+MYSQL主从同步结构
MHA由日本dena公司youshimaton开发
是一套优秀的实现mysql高可用的解决方案
数据库的自动故障切换操作能做到在0-30秒内完成
MHA能确保在故障切换过程中最大限度保证数据的一致性,
以达到真正意义的高可用。
perl 编写
MHA组成:
MHA manager 管理节点
管理所有数据库的服务器
可以单独部署在一台独立的机器上
也可以部署在某台数据库服务器上
MHA Node 数据节点
存储数据的mysql服务器
运行在每台mysql服务器上
由manager定时探测集群中的master节点
当master故障时,manager自动将拥有最新数据的slave提升为新的master
实例:
客户端1台 管理机1台 数据库服务器3台一主两从
数据库:show master status; show slave status;
查看日志是否打开,是否是从服务器
重启mysqld
配置数据库之间可以互相无密码连接
ssh-keygen
ssh-copy-id root@ip
管理机无密码连接数据库群
ssh-keygen
ssh-copy-id root@ip
配置mysql一主多从
51主数据服务器
开启日志 /etc/my.cnf
log_bin=master51
server_id=51
:wq
登录授权从服务器用户:
grant replication slave on *.* to repluster@"密码" identified by "密码”;
52从数据服务器
·/etc/my.cnf
server_id=52
:wq
systemctl restart mysqld
登录指定主数据服务信息 show master status;看主数据服务器的日志指定日志文件和位置偏移量
change master to master_host="主ip" ,master_user="repluster",master_password="密码“,
master_log_file="master51.0001",master_log_pos=22;
start slave;
show slave status \G;
53主机和52主机一样
show master status;
show grants for repluster@"%";
show slave status \G;
57管理主机:
安装软件包
创建并编辑主配置文件
创建故障切换脚本并编辑
把vip地址指定给在当前的主服务器51
yum -y install perl*
rpm -ivh mha4.mysql-node-0.56-0.e16.noarch.rpm
yum -y install mha4.mysql-node-0.56-0.e16.noarch.rpm
tar -zxvf mha4.mysql-manager-0.56.tar.gz
perl Makefile.pl //需要yum list | grep -i " " 依赖包
make
make install
安装完成命令
masterha_check_ssh 检查mha的ssh配置状况
masterha_check_repl 检查mysql复制状况
masterha_manager 启动mha
masterha_check_status 检测mha运行状态
masterha_stop 停止mha
模板文件:
mkdir /etc/mha
cp /var/ftp/upload/mha/mha4mysql-manager-0.56/samples/conf/app1.cnf /etc/mha
vim /etc/mha/app1.cnf
manager_workdir=/etc/mha
manager_log=/etc/mha/manager.log
master_ip_failover_script=/etc/mha/master_ip_failover 故障切换脚本,需拷贝模板
ssh_user=root
ssh_port=22
repl_user=用户名(主服务授予的从连接的用户名)
repl_password=密码
user=root 数据服务器授权用户登录监视
password=密码
[server1]
hostname=数据服务器ip地址
port=3306
candidate_master=1
[server2]
....
:wq
cp /var/.../samples/scripts/master_ip_failover /etc/mha/
vim /etc/mha/master_ip_failover 在35行my后
my $vip="192.168.4.100"; 定义vip地址
my $key="1"; 定义地址编号
my $ssh_start_vip="/sbin/ifconfig eth0:$key $vip"; 绑定vip
my $ssh_stop_vip="/sbin/ifconfig eth0:$key down"; 释放vip
:wq
chmod +x /etc/mha/master_ip_failover
51主服务器数据库
ifconfig eth0:1 192.168.4.100/24
ifconfig eth0:1
安装软件
创建授权用户
优化数据库
cd mha-soft-student
都配yum -y install ./mha4mysql-node-0.56-noarch.rpm 节点
主配会同步给从:grant all on *.* to root@"%" identified by "密码";
select user,host from mysql.usrer;
多从服务器都要配置授权同步的用户:
grant replication slave on *.* to repluser@"%" identified by “密码”;
优化配置:
开通半同步复制:
数据都配以下:vim /etc/my.cnf 在[mysql]下
plugin-load="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so
rpl_semi_sync_master_enabled=1
rpl_semi_sync_slave_enabled=1 //启用模块
relay_log_purge=0 //禁止自动删除日志文件
:wq
systemctl restart mysqld
开启从服务器bin-log日志
vim /etc/my.cnf
log_bin=master52|53
:wq
57管理主机:
masterha_check_ssh --conf=/etc/mha/app1.cnf 检查ssh
masterha_check_repl --conf=/etc/mha/app1.cnf 检查从服务复制主从正常
masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover(无8小时内第二次限制切换)
masterha_check_status --conf=/etc/mha/app1.cnf
masterha_stop --conf=/etc/mha/app1.cnf
主数据:grant select,insert on gamedb.* ya@"%" identified by "密码“;
create database gamedb;
create table gamedb.t1(id int);
客户端:mysql -hvip -uya -p密码 -e "mysql命令"
51主数据停止mysqld服务
客户端:mysql -hvip -uya -p密码 -e "mysql命令"
52:show slave status;
53:show slave status \G | grep -i "master_host"
57:masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover
masterha_check_status --conf=/etc/mha/app1.cnf