赞
踩
关闭selinux:
vim /etc/selinux/config下
selinux=disables
关闭防火墙端口
firewall-cmd --add-port=3306/tcp –permanent
firewall-cmd --add-port=3306/tcp
安装:
yum install -y repel-release
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
/etc/yum.repos.d/下有epel.repo文件
yum -y install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-ParallelForkManager perl-Config-IniFiles ncftp perl-Params-Validate perl-CPAN perl-TestMock-LWP.noarch perl-LWP-Authen-Negotiate.noarch perl-devel perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker
编写/hosts文件(为克隆做准备)
vim /etc/hosts
192.168.xx master1
xxxx master2
xxxx slave
xxxx manager
systemctl stop mysqld关闭MySQL服务
rm -rf /usr/local/mysql/data/auto.cnf删除uuid
vim /etc/ld.so.conf下/usr/local/mysql/lib
ldconfig启动ld服务
Ping master1master2slave1manger测试是否能解析到ip
无密登录(私钥公钥)
ssh-keygen -t rsa(创建公私钥)
ll /root/.ssh下rsa.pub为公钥rsa为私钥(查看共私钥)
for i in master1 master2 slave1 manager;do ssh-copy-id $i ;done(生成私秘钥并且赋值,每台主机都是创建生成这样才可以无密钥登录)
for i in master1 master2 slave1 manager; do ssh $i hostname;done(打印每台的hostname)
检测是否支持安装插件
所有mysql数据库服务器,安装半同步插件(semisync_master.so,semisync_slave.so)
检查是否安装正确
在配置数据同步先将主mysql服务器拷贝到从mysql服务器上
scp /etc/my.cnf ip:/etc
更改主配
vim /etc/my.cnf
server-id = 1
log-bin=mysql-bin
binlog_format=mixed
log-bin-index=mysql-bin.index
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=1000
rpl_semi_sync_slave_enabled=1
relay_log_purge=0
relay-log = relay-bin
relay-log-index = slave-relay-bin.index
重置主服务mysql -uroot -p123456 -e “reset master”
重启mysql服务
Scp /etc/my.cnf ip:/etc(进入后更改server)
重置主服务重启MySQL服务
slave文件中配置:
Server-id = 3
log-bin = mysql-bin
relay-log = relay-bin
relay-log-index = slave-relay-bin.index
read_only = 1
rpl_semi_sync_slave_enabled=1
重置主服务重启MySQL服务
在master1主服务上创建权限用户
grant replication slave on . to rep@‘192.168.179.%’ identified by’123456’;
grant all privileges on . to ager@‘192.168.179.%’ identified by ‘123456’;
在master2主服务上创建权限用户
grant replication slave on . to rep@‘192.168.179.%’ identified by’123456’;
grant all privileges on . to ager@‘192.168.179.%’ identified by ‘123456’;
在slave1主服务上创建权限用户
grant all privileges on . to ager@‘192.168.179.%’ identified by ‘123456’;
查看半同步相关信息
查看半同步状态
在master2服务上
change master to
master_host='master1ip',
master_user='rep',
master_password='123456',
master_log_file='二进制',
master_log_pos=pos值;
开启从服务start slave
在slave1服务上
change master to
master_host='master1ip',
master_user='rep',
master_password='123456',
master_log_file='二进制',
master_log_pos=pos值;
开启从服务start slave
查看master1服务器的半同步状态
在manager主机上安装mha4mysql-manager-0.58.tar,mha4mysql-node-0.58.tar
在其余主机安装mha4mysql-node-0.58.tar
安装:
tar zxf mha4mysql-node-0.58.tar.gz
cd mha4mysql-node-0.58/
perl Makefile.PL
make && make install
在manager上
创建文件夹
mkdir /etc/masterha存放文件
mkdir -p /masterha/app1存放日志
mkdir /scripts存放脚本
cp samples/conf/* /etc/masterha
cp samples/scripts/* /scripts
编写配置文件
vim /etc/masterha/app1.cnf
[server default] manager_workdir=/masterha/app1 manager_log=/masterha/app1/manager.log user=ager password=123456 ssh_user=root repl_user=rep repl_password=123456 ping_interval=1 [server1] hostname=ip port=3306 master_binlog_dir=/usr/local/mysql/data candidate_master=1 [server2] hostname=ip port=3306 master_binlog_dir=/usr/local/mysql/data candidate_master=1 [server3] hostname=ip port=3306 master_binlog_dir=/usr/local/mysql/data no_master=1
保存退出
/etc/masterha/masterha_default.cnf
配关配置项的解释: manager_workdir=/masterha/app1 //设置manager的工作目录 manager_log=/masterha/app1/manager.log //设置manager的日志 user=manager //设置监控用户manager password=123456 //监控用户manager的密码 ssh_user=root //ssh连接用户 repl_user=mharep //主从复制用户 repl_password=123.abc //主从复制用户密码 ping_interval=1 //设置监控主库,发送ping包的时间间隔,默认 是3秒,尝试三次没有回应的时候自动进行railover master_binlog_dir=/usr/local/mysql/data //设置master 保存 binlog的位置,以便MHA可以找到master的日志,我这里的也就是mysql的数据目录 candidate_master=1 //设 置为候选master,如果设置该参数以后,发生主从切换以后将会将此从库提升为主库
检测ssh有效性
masterha_check_ssh --global_conf=/etc/masterha/masterha_default.cnf --conf=/etc/masterha/app1.cnf
集群赋值的有效性
masterha_check_repl --global_conf=/etc/masterha/masterha_default.cnf --conf=/etc/masterha/app1.cnf
如果测试不成功则在每台主机上ln -s /usr/local/mysql/bin/* /usr/local/bin(除manager)
启动 manager
nohup(离线管理) masterha_manager --conf=/etc/masterha/app1.cnf --conf=/etc/masterha/app1.cnf &>/tmp/master.log &(放到后台)
检查状态
masterha_check_status --conf=/etc/masterha/app1.cnf
上slave1上查看状态
MHA Manager 端日常主要操作步骤
1)检查是否有下列文件,有则删除。 发生主从切换后,MHAmanager服务会自动停掉,且在 manager_workdir(/masterha/app1)目录下面生成文件app1.failover.complete,若要启动MHA,必须先确保 无此文件) 如果有这个提示,那么删除此文件/ masterha/app1/app1.failover.complete [error] [/usr/share/perl5/vendor_perl/MHA/MasterFailover.pm, ln298] Last failover was done at 2015/01/09 10:00:47. Current time is too early to do failover again. If you want to do failover, manually remove / masterha/app1/app1.failover.complete and run this script again.
2)检查MHA复制检查:(需要把master设置成candicatade的从服务器)
3)停止MHA:
4)启动MHA:
当有slave 节点宕掉时,默认是启动不了的,加上 --ignore_fail_on_start 即使有节点宕掉也能启动MHA,如下:
5) 检查状态:
6) 检查日志:
7)主从切换后续工作 重构: 重构就是你的主挂了,切换到Candicate master上,Candicate master变成了主, 因此重构的一种方案原主库修复成一个新的slave 主库切换后,把原主库修复成新从库,然后重新执行以上5 步。原主库数据文件完整的情况下,可通过以下方式找出最后执行的CHANGE MASTER命令:
启动manager
注意:如果正常,会显示"PING_OK",否则会显示"NOT_RUNNING",这代表MHA监控没有开启。
定期删除中继日志 在配置主从复制中,slave上设置了参数relay_log_purge=0,所以slave节点需要定期删除中 继日志,建议每个slave节点删除中继日志的时间错开。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。