环境:
mysql 5.7.25+MHA(0.58)+redhat6.9
下载及文档
http://code.google.com/p/mysql-master-ha/
分别下载:
mha4mysql-node-0.58
mha4mysql-manger-0.58
版本要选下,主页的版本,编译的时候失败
安装
1.安装node
[root@DEV-ZZZZ] mha4mysql-node-0.58]# perl Makefile.PL
*** Module::AutoInstall version 1.06
*** Checking for Perl dependencies…
[Core Features]
- DBI …loaded. (1.609)
- DBD::mysql …loaded. (4.013)
*** Module::AutoInstall configuration finished.
Checking if your kit is complete…
Looks good
Writing Makefile for mha4mysql::node
make && make install
2.安装manger
perl Makefile.PL
make && make install
3.配置互信
由于MHA manager通过SSH访问所有的node节点,各个node节点也同样通过SSH来相互发送不同的relay log 文件,所以要在每一个node和manager上配置SSH无密码登陆。
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub root@xxx.xxx.xxx.26
ssh-copy-id -i ~/.ssh/id_rsa.pub root@xxx.xxx.xxx.27
ssh-copy-id -i ~/.ssh/id_rsa.pub root@xxx.xxx.xxx.28
ssh-copy-id -i ~/.ssh/id_rsa.pub root@xxx.xxx.xxx.29
(如果mange和备库再同一个节点,本身给自己也要做)
4.创建mha目录结构
主路径:/usr/local/masterha
cd masterha
mkdir config
mkdir data
mkdir log
mkdir scripts
他可以管理多个mha ,所以最好就是分不同的集群(建议而已,目录结构习惯)
下级目录为dev1 对应的集群名称,里面包含
config —配置文件
data —管理数据
log —日志
scripts —脚本
5.创建配置文件
[server default]
# mysql user and password
user=rep_mha #MHA管理账户
password=rep_mha
ssh_user=root
repl_user=repl
repl_password=xxx@xxxxx
ssh_user=root
ping_interval=2 #ping间隔时间,用来检查master是否正常
# working directory on the manager
manager_workdir=/usr/local/masterha/dev1/data #MHA工作目录
# working directory on MySQL servers
remote_workdir=/usr/local/masterha/dev1/data #MHA工作目录
master_ip_failover_script=/usr/local/masterha/dev1/scripts/master_ip_failover
master_ip_online_change_script=/usr/local/masterha/dev1/scripts/master_ip_online_change
[server1]
hostname=xxx.xxx.xxx.27
master_binlog_dir=/usr/local/mysql/data
#指定MASTER节点binlog存放目录
candidate_master=1
#master宕机后,优先启用这台作为master
[server2]
hostname=xxx.xxx.xxx.28
master_binlog_dir=/usr/local/mysql/data
#指定MASTER节点binlog存放目录
candidate_master=1
#master宕机后,优先启用这台作为master
[server3]
hostname=xxx.xxx.xxx.29
master_binlog_dir=/usr/local/mysql/data
#指定MASTER节点binlog存放目录
no_master=1
#设置na_master=1,使服务器不能成为master
6.创建管理用户
grant all privileges on . to ‘rep_mha’@‘xxx.xxx.xxx.26’ identified by ‘xxx@xxxxx’;
grant all privileges on . to ‘xxx@xxxxx’@‘xxx.xxx.xxx.27’ identified by ‘xxx@xxxxx’;
grant all privileges on . to ‘xxx@xxxxx’@‘xxx.xxx.xxx.28’ identified by ‘xxx@xxxxx’;
grant all privileges on . to ‘xxx@xxxxx’@‘xxx.xxx.xxx.29’ identified by ‘xxx@xxxxx’;
flush privileges;
创建repl用户,在主和备主都需要互相
7.检查
检查ssh互信
masterha_check_ssh --conf=/usr/local/masterha/config/mha.cnf
Tue May 21 17:19:23 2019 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.
Tue May 21 17:19:23 2019 - [info] Reading application default configuration from /usr/local/masterha/config/mha.cnf..
Tue May 21 17:19:23 2019 - [info] Reading server configuration from /usr/local/masterha/config/mha.cnf..
Tue May 21 17:19:23 2019 - [info] Starting SSH connection tests..
Tue May 21 17:19:24 2019 - [debug]
Tue May 21 17:19:23 2019 - [debug] Connecting via SSH from root@xxx.xxx.xxx.27(xxx.xxx.xxx.27:22) to root@xxx.xxx.xxx.28(xxx.xxx.xxx.28:22)..
Tue May 21 17:19:23 2019 - [debug] ok.
Tue May 21 17:19:23 2019 - [debug] Connecting via SSH from root@xxx.xxx.xxx.27(xxx.xxx.xxx.27:22) to root@xxx.xxx.xxx.29(xxx.xxx.xxx.29:22)..
Tue May 21 17:19:24 2019 - [debug] ok.
Tue May 21 17:19:24 2019 - [debug]
Tue May 21 17:19:24 2019 - [debug] Connecting via SSH from root@xxx.xxx.xxx.28(xxx.xxx.xxx.28:22) to root@xxx.xxx.xxx.27(xxx.xxx.xxx.27:22)..
Tue May 21 17:19:24 2019 - [debug] ok.
Tue May 21 17:19:24 2019 - [debug] Connecting via SSH from root@xxx.xxx.xxx.28(xxx.xxx.xxx.28:22) to root@xxx.xxx.xxx.29(xxx.xxx.xxx.29:22)..
Tue May 21 17:19:24 2019 - [debug] ok.
Tue May 21 17:19:25 2019 - [debug]
Tue May 21 17:19:24 2019 - [debug] Connecting via SSH from root@xxx.xxx.xxx.29(xxx.xxx.xxx.29:22) to root@xxx.xxx.xxx.27(xxx.xxx.xxx.27:22)..
Tue May 21 17:19:24 2019 - [debug] ok.
Tue May 21 17:19:25 2019 - [debug]