MHA集群搭建

                      **mha  mysql 架构架构集群环境**
        要点:其中master对外提供写服务,备选Candicate master(实际为slave1)提供读服务,slave2也提供读服务,一旦master宕机,将会把备选master提升为新的master,slave指向新的master
  Manager工具包主要包括以下几个工具:
  1.  masterha_check_ssh --conf=/etc/masterha/app1.cnf   测试ssh 是否免密登录  All SSH connection tests passed successfully. 代表成功
  2. 测试repl 主从账户是否建立好:masterha_check_repl --conf=/etc/masterha/app1.cnf 出现MySQL Replication Health is OK. 代表连接成功
  3. 启动MHA  :         nohup masterha_manager --conf=/etc/masterha/app1.cnf > /tmp/mha_manager.log 2>&1&
  4. 查看监控日志:tail -f /etc/masterha/app1/manager.log
  5. 检查启动的状态

masterha_check_status --conf=/etc/masterha/app1.cnf

                       **出现宕机解决方法**
 首先查看监控日志,检查启动状态,停止mha (  masterha_stop --conf=/etc/app1.cnf),查看(ps -aux |grep manages)如果从服务器宕机就重启mysql;如果主服务器宕机重启主服务器mysql 数据库,关闭slave(stop slave) ,把他更改成从服务器,(change master to master_host='ip账户',master_user='账户名',master_password='密码') 
    
		部署MHA: 四台机器  
						192.168.0.67
						192.168.0.68
                         192.168.0.69
                         192.168.0.70
  四台主机都要安装epel源
1.  rpm-ivh   (...epel 源)
2 . yum clean alll
3 .yum list

4 . 使用yum 安装全部依赖
yum -y install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager --skip-broken(有的主机可能会报错 咱们强制安装 输入 --nogpgcheck)
5 .上传MHA相关包 node 节点包 四台都要安装
rpm -ivh mha4mysql-node-0.54-0.el6.noarch.rpm
安装完成后会在/usr/bin/目录下生成以下脚本文件
[root@xuegod67 bin]# pwd
/usr/bin/
[root@xuegod67 bin]# ll app* filter* purge* save*
-r-xr-xr-x 1 root root 15498 Apr 20 10:05 apply_diff_relay_logs
-r-xr-xr-x 1 root root 4807 Apr 20 10:05 filter_mysqlbinlog
-r-xr-xr-x 1 root root 7401 Apr 20 10:05 purge_relay_logs
-r-xr-xr-x 1 root root 7263 Apr 20 10:05 save_binary_logs
6.安装MHA manager
(1)安装MHA Node软件包之前需要安装依赖。我这里使用yum完成,首先epel源要安装。注意:刚才我们已经配置epel源。

(2)安装MHA Manager。首先安装MHA Manger依赖的perl模块(我这里使用yum安装):

yum install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker perl-CPAN -y

安装MHA Manager软件包:
[root@xuegod67 ~]# rpm -ivh mha4mysql-manager-0.55-0.el6.noarch.rpm
安装完成后会在/usr/bin目录下面生成以下脚本文件,前面已经说过这些脚本的作用,这里不再重复

[root@xuegod67 ~]# ll /usr/bin/mast*
-rwxr-xr-x 1 root root 1995 12月 13 2012 /usr/bin/masterha_check_repl
-rwxr-xr-x 1 root root 1779 12月 13 2012 /usr/bin/masterha_check_ssh
-rwxr-xr-x 1 root root 1865 12月 13 2012 /usr/bin/masterha_check_status
-rwxr-xr-x 1 root root 3201 12月 13 2012 /usr/bin/masterha_conf_host
-rwxr-xr-x 1 root root 2517 12月 13 2012 /usr/bin/masterha_manager
-rwxr-xr-x 1 root root 2165 12月 13 2012 /usr/bin/masterha_master_monitor
-rwxr-xr-x 1 root root 2373 12月 13 2012 /usr/bin/masterha_master_switch
-rwxr-xr-x 1 root root 3879 12月 13 2012 /usr/bin/masterha_secondary_check
-rwxr-xr-x 1 root root 1739 12月 13 2012 /usr/bin/masterha_stop

7.配置所有主机相互SSH登录无密码验证(使用key登录,工作中常用)。但是有一点需要注意:不能禁止 password 登陆,否则会出现错误
ssh免密码登录
ssh-keygen -t rsa
ssh-copy-id 10.10.10.68
四台主机都要重复这种操作

         **主从搭建**

1.在68上搭建主
注意:binlog-do-db 和 replicate-ignore-db 设置必须相同。 MHA 在启动时候会检测过滤规则,如果过滤规则不同,MHA 不启动监控和故障转移。

(1)在xuegod68配置主数据库服务器

创建需要同步的数据库:
mysql> create database HA;
mysql> use HA;
mysql> create table test(id int,name varchar(20));
service mysqld stop
配置my.cnf:
vim /etc/my.cnf
log-bin=mysql-bin-master #启用二进制日志
server-id=1 #本机数据库ID 标示
binlog-do-db=HA #可以被从服务器复制的库。二进制需要同步的数据库名
binlog-ignore-db=mysql #不可以被从服务器复制的库
validate-password=off
重启mysql:
systemctl restart mysqld
授权:
mysql> grant replication slave on . to repl@‘10.10.10.%’ identified by ‘123456’;
mysql> flush privileges;
查看状态信息:
mysql> show master status;
导出数据库到从服务器(2个从)
mysqldump -uroot -p123456 –B HA >HA.sql
scp HA.sql 10.10.10.65:/root
scp HA.sql 10.10.10.66:/root

2.在69.70 上搭建从
(2)在xuegod69导入数据库并配置从服务:
[root@xuegod69 ~]# mysql -uroot -p123456 <HA.sql
配置my.cnf:
vim /etc/my.cnf
log-bin=mysql-slave1 #启用二进制日志
server-id=2 #本机数据库ID 标示
binlog-do-db=HA #可以被从服务器复制的库。二进制需要同步的数据库名
binlog-ignore-db=mysql #不可以被从服务器复制的库
log_slave_updates=1 #只有开启log_slave_updates,从库binlog才会记录主库同步的操作日志
validate-password=off
[root@xuegod69 ~]# systemctl restart mysqld 重启mysql
mysql> grant replication slave on . to ‘repl’@‘10.10.10.%’ identified by ‘123456’;
mysql> flush privileges;
建立主从关系
mysql> stop slave;
mysql> change master to master_host=‘10.10.10.68’,master_user=‘repl’,master_password=‘123456’;
(3)在xuegod70导入数据库并配置从服务:

[root@xuegod70 ~]# mysql -uroot -p123456 <HA.sql
配置my.cnf:
vim /etc/my.cnf
log-bin=mysql-slave2 #启用二进制日志
server-id=3 #本机数据库ID 标示
binlog-do-db=HA #可以被从服务器复制的库。二进制需要同步的数据库名
binlog-ignore-db=mysql #不可以被从服务器复制的库
log_slave_updates=1 #只有开启log_slave_updates,从库binlog才会记录主库同步的操作日志
validate-password=off
[root@xuegod70 ~]# systemctl restart mysqld 重启mysql
mysql> grant replication slave on . to ‘repl’@‘10.10.10.%’ identified by ‘123456’;
mysql> flush privileges;
建立主从关系
mysql> stop slave;
mysql> change master to master_host=‘10.10.10.68’,master_user=‘repl’,master_password=‘123456’;

注意;创建监控用户(在主从上都执行):

mysql> grant all privileges on . to ‘ly’@‘10.10.10.%’ identified by ‘123456’;
mysql> flush privileges;

到这里整个集群环境已经搭建完毕,剩下的就是配置MHA软件了。

[root@ xuegod67 ~]# mkdir -p /etc/masterha
[root@ xuegod67 ~]# mkdir -p /var/log/masterha/app1
[root@ xuegod67 ~]# vim /etc/masterha/app1.cnf
修改app1.cnf配置文件,修改后的文件内容如下(注意,配置文件中的注释需要去掉,我这里是为了解释清楚):

[root@rhel6-64-2 ~]# vi /etc/masterha/app1.cnf
[root@rhel6-64-2 ~]# cat /etc/masterha/app1.cnf
[server default]
manager_workdir=/etc/masterha/app1
manager_log=/etc/masterha/app1/manager.log
#日志文件及其路径,需要手动创建
user=gongzi
password=123456
#之前数据库远程登录的

ssh_user=root
#用于测试ssh登录的

repl_user=qianmen
repl_password=123456
#千门做主从的用户 这个也是每一台都要授权的

[server1]
hostname=172.28.7.203
port=3306
master_binlog_dir=/var/lib/mysql
candidate_master=1
check_repl_delay=0
#/var/lib/mysql这里路径也需要手工创建
[server2]
hostname=172.28.7.204
port=3306
master_binlog_dir=/var/lib/mysql
candidate_master=1
check_repl_delay=0

[server3]
hostname=172.28.7.205
port=3306
master_binlog_dir=/var/lib/mysql
ignore_fail=1
no_master=1

最后一步 测试 ssh
masterha_check_ssh --conf=/etc/masterha/app1.cnf

2、测试repl
masterha_check_repl --conf=/etc/masterha/app1.cnf 

查看监控日志
tail -f /etc/masterha/app1/manager.log
Ping(SELECT) succeeded, waiting until MySQL doesn’t respond…
一切准备就绪!就等着MYSQL无响应呢
成功搭建完成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值