SUSE 11 SP3上部署MySQL MHA

本文档详细介绍了在SUSE 11 SP3系统上部署MySQL Master High Availability (MHA) 的过程,包括服务器准备工作、数据库安装与主从复制配置,以及MHA的安装与测试。主要涉及修改系统编码、关闭SELinux、安装MySQL、设置主从复制以及安装和配置MHA管理器。

SUSE上部署MHA

目录


第1章 准备工作

  • 1.1 服务器版本信息
TEST-108:~ # cat /etc/issue
Welcome to SUSE Linux Enterprise Server 11 SP3  (x86_64) - Kernel \r (\l).

TEST-108:~ # lsb_release -a
LSB Version:    core-2.0-noarch:core-3.2-noarch:core-4.0-noarch:core-2.0-x86_64:core-3.2-x86_64:core-4.0-x86_64:desktop-4.0-amd64:desktop-4.0-noarch:graphics-2.0-amd64:graphics-2.0-noarch:graphics-3.2-amd64:graphics-3.2-noarch:graphics-4.0-amd64:graphics-4.0-noarch
Distributor ID: SUSE LINUX
Description:    SUSE Linux Enterprise Server 11 (x86_64)
Release:    11
Codename:   n/a

  • 1.2 系统编码设置
TEST-108:~ # locale                   #<==查看语言环境
LANG=POSIX
LC_CTYPE=zh_CN.UTF-8
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=

为方便后期排错,我们将其更改为中文环境。

TEST-108:~ # echo "export LC_ALL="zh_CN.UTF-8"" >>/etc/profile
TEST-108:~ # echo "export LANG="zh_CN.UTF-8"" >>/etc/profile
TEST-108:~ # source /etc/profile
TEST-108:~ # echo $LANG
zh_CN.UTF-8

  • 1.3 查看防火墙状态
TEST-108:~ # chkconfig --list|grep fire
SuSEfirewall2_init        0:off  1:off  2:off  3:off  4:off  5:off  6:off
SuSEfirewall2_setup       0:off  1:off  2:off  3:off  4:off  5:off  6:off

[1] : http://www.wo81.com/tec/os/suse/2014-04-21/129.html SLES 11 SP3防火墙设置
[2] : http://blog.sina.com.cn/s/blog_4761faa40100nr95.html SUSE Linux 关闭防火墙的命令


  • 1.4 关闭SElinux

SUSE Linux 默认不会开启 SELinux
YaST–>系统–>运行级别–>关闭SELinux 即可.
如果你用了内核参数的形式的,必须修改GRUB,在 引导代码后添加:selinux=0

提示:在另外两台机器上也做上述同样的操作。


第2章 安装数据库

  • 2.1 机器规划

本次测试准备了三台SUSE系统的机器,IP地址为:10.0.0.108-10.0.0.110。

角色IP地址主机名
MHA manager10.0.0.110TEST-110
MySQL master10.0.0.108TEST-108
MySQL slave110.0.0.109TEST-109
MySQL slave210.0.0.110TEST-110

  • 2.2 安装MySQL master

2.2.1 创建mysql用户并进入

TEST-108:~ # useradd -m mysql
TEST-108:~ # passwd mysql
Changing password for mysql.
新口令:              #<==mysql
无效的口令:过于简单
重新输入新口令:     #<==mysql
口令已更改。

2.2.2 上传已经准备好的MySQL安装包

首先通过Xftp的方式将rzsz-0.12.20-934.22.x86_64.rpm的rpm包上传并安装,方便后期通过rz、sz命令执行上传和下载的工作。

TEST-108:~ # cd /home/mysql/
TEST-108:/home/mysql # rpm -ivh rzsz-0.12.20-934.22.x86_64.rpm 
Preparing...                ########################################### [100%]
   1:rzsz                   ########################################### [100%]

rzsz-0.12.20-934.22.x86_64.rpm的rpm包百度云分享
链接:http://pan.baidu.com/s/1c1UPRXY 密码:apmh

mysql@TEST-108:~> rz    #<==上传已经打包好的MySQL安装包
mysql@TEST-108:~> ll
-rw-r--r--  1 root  root  323661730  810 18:55 mysql_ok.tar.gz

mysql@TEST-108:~> tar xvf mysql_ok.tar.gz

mysql_ok.tar.gz的tar包百度云分享
链接:http://pan.baidu.com/s/1gf3VFI7 密码:pwk3


2.2.3 修改相关配置文件并启动

mysql@TEST-108:~> cd scripts/
mysql@TEST-108:~/scripts> cat modify_userdir.sh 
#!/bin/sh
userdir="/home/db"        #<==将用户家目录改为/home/mysql
sed -i "s#/usr/local#${userdir}#g"  ${userdir}/dbdata/my.cnf
sed -i "s#/dbdata#${userdir}/dbdata#g" ${userdir}/dbdata/my.cnf
sed -i "s#/home/db#${userdir}#g" ${userdir}/.bash_profile

mysql@TEST-108:~/scripts> sh modify_userdir.sh

修改启动脚本:

mysql@TEST-108:~/scripts> cat start_mysql.sh 
#!/bin/sh
userdir="/home/db"      #<==将用户家目录改为/home/mysql
cd ${userdir}/mysql;./bin/mysqld_safe --defaults-file=${userdir}/dbdata/my.cnf &
mysql@TEST-108:~/scripts> sh start_mysql.sh        #<==启动数据库
mysql@TEST-108:~/scripts> netstat -lntup|grep mysql #<==查看端口
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 :::3307                 :::*                    LISTEN      4442/mysqld         
mysql@TEST-108:~/scripts> mysql -uroot -S /tmp/mysql.sock                                         
                                              #<==进入数据库
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.23-enterprise-commercial-advanced-log MySQL Enterprise Server - Advanced Edition (Commercial)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

  • 2.3 安装MySQL Slave1和MySQL Slave2

提示: 在10.0.0.109和10.0.0.110这两台机器上按上述步骤再分别安装数据库。

2.3.1 启动过程中的错误排查

mysql@TEST-109:~> sh scripts/start_mysql.sh 
mysql@TEST-109:~> 170815 21:24:14 mysqld_safe Logging to '/home/mysql/dbdata/data/mysqld_3307.log'.
170815 21:24:14 mysqld_safe Starting mysqld daemon with databases from /home/mysql/dbdata/data
mysql@TEST-109:~> which mysql
which: no mysql in (/home/mysql/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/usr/lib/mit/bin:/usr/lib/mit/sbin)

解决方式:

mysql@TEST-109:~> echo "export PATH=/home/mysql/mysql/bin/:$PATH" >>.bash_profile 
mysql@TEST-109:~> source .bash_profile
mysql@TEST-109:~> which mysql
/home/mysql/mysql/bin/mysql

第3章 数据库主从复制

  • 3.1 准备工作

3.1.1 保证10.0.0.108~10.0.0.110这三台机器的server-id的唯一性。

mysql@TEST-108:~> egrep "server-id|log-bin" dbdata/my.cnf 
log-bin=mysql-bin
server-id = 1
mysql@TEST-109:~> egrep "server-id|log-bin" dbdata/my.cnf
log-bin=mysql-bin
server-id = 2
mysql@TEST-110:~> egrep "server-id|log-bin" dbdata/my.cnf
log-bin=mysql-bin
server-id = 3

3.1.2 保证10.0.0.108~10.0.0.110这三台机器的UUID的唯一性

mysql@TEST-108:~> cat dbdata/data/auto.cnf 
[auto]
server-uuid=f60c196f-4c71-11e6-8558-000c29ba27ff
mysql@TEST-109:~> cat dbdata/data/auto.cnf 
[auto]
server-uuid=f60c196f-4c71-11e6-8558-000c29ba27fa
mysql@TEST-110:~> cat dbdata/data/auto.cnf
[auto]
server-uuid=f60c196f-4c71-11e6-8558-000c29ba27fb

提示:修改完以后记得重启数据库!


  • 3.2 主库上建立用于主从复制的账号
mysql@TEST-108:~> mysql
mysql> grant replication slave on *.* to 'rep'@'10.0.0.%' identified by '123456';
Query OK, 0 rows affected (0.16 sec)
mysql> grant all on *.* to 'mysql'@'10.0.0.%' identified by '123456';    #<==创建mysql用户
Query OK, 0 rows affected (0.00 sec)

mysql> grant all on *.* to 'mysql'@'localhost' identified by '123456';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

  • 3.3 主库全备

锁表:

mysql@TEST-108:~> mysql -umysql -p123456
mysql> flush table with read lock;
Query OK, 0 rows affected (0.00 sec)
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000008 |      810 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

开启新窗口进行备份:

mysql@TEST-108:~> mysqldump -umysql -p123456 -B -A --events|gzip >/home/mysql/bak_$(date +%F).sql.gz
Warning: Using a password on the command line interface can be insecure.

解锁:

mysql> unlock table;
Query OK, 0 rows affected (0.00 sec)

  • 3.4 将全备导入到从库上
mysql@TEST-108:~> scp -P22 ./bak_2017-08-15.sql.gz mysql@10.0.0.109:/home/mysql/           #<==传到109机器上
Password: 
bak_2017-08-15.sql.gz                  100%  169KB 168.7KB/s   00:00
mysql@TEST-109:~> mysql
mysql> grant all on *.* to mysql@'10.0.0.%' identified by '123456';    #<==创建用户mysql
Query OK, 0 rows affected (0.84 sec)

mysql> grant all on *.* to mysql@'localhost' identified by '123456';
Query OK, 0 rows affected (0.14 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.04 sec)
mysql@TEST-109:~> zcat ./bak_2017-08-15.sql.gz |mysql -umysql -p123456  #<==在从库上导入数据 
Warning: Using a password on the command line interface can be insecure.

  • 3.5 登录109从库,配置复制参数
mysql@TEST-109:~> mysql -umysql -p123456
CHANGE MASTER TO
MASTER_HOST='10.0.0.108',           
MASTER_PORT=3307,                  
MASTER_USER='rep',                  
MASTER_PASSWORD='123456',    
MASTER_LOG_FILE='mysql-bin.000008',
MASTER_LOG_POS=810;  

  • 3.6 启动从库同步开关,测试主从复制配置情况
mysql> start slave;
Query OK, 0 rows affected (0.90 sec)

mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.0.0.108
                  Master_User: rep
                  Master_Port: 3307
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000008
          Read_Master_Log_Pos: 810
               Relay_Log_File: mysqld_3307-relay-bin.000002
                Relay_Log_Pos: 283
        Relay_Master_Log_File: mysql-bin.000008
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 810
              Relay_Log_Space: 462
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 1
                  Master_UUID: f60c196f-4c71-11e6-8558-000c29ba27ff
             Master_Info_File: /home/mysql/dbdata/data/master.info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
           Master_Retry_Count: 86400
                  Master_Bind: 
      Last_IO_Error_Timestamp: 
     Last_SQL_Error_Timestamp: 
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
           Retrieved_Gtid_Set: 
            Executed_Gtid_Set: 
                Auto_Position: 0
1 row in set (0.00 sec)

测试:在108主库上创建数据库yida,看从库109是否存在即可。

注意:按照上述步骤在从库110上实现主从同步!


第4章 安装MySQL MHA


  • 4.2 所有节点上安装mha4mysql-node

下面以10.0.0.108机器为例安装mha4mysql-node

TEST-108:~ # cd /usr/local/src/
TEST-108:/usr/local/src # rz
rz waiting to receive.
TEST-108:/usr/local/src # ll
总用量 56
-rw-r--r-- 1 root root 50172  84 20:45 mha4mysql-node-0.56.tar.gz
TEST-108:/usr/local/src # tar xf mha4mysql-node-0.56.tar.gz    #<==解压
TEST-108:/usr/local/src # cd mha4mysql-node-0.56/
TEST-108:/usr/local/src/mha4mysql-node-0.56 # perl Makefile.PL 
*** Module::AutoInstall version 1.03
*** Checking for Perl dependencies...
[Core Features]
- DBI        ...loaded. (1.607)
- DBD::mysql ...missing.    #<==缺少依赖

上传依赖包并安装

TEST-108:/usr/local/src # ll
总用量 760
-rw-r--r-- 1 root root  484102 1228 2012 libmysqlclient15-5.0.96-0.6.1.x86_64.rpm
-rw-r--r-- 1 root root   54234  221 2009 perl-Data-ShowTable-3.3-705.10.x86_64.rpm
-rw-r--r-- 1 root root  156868  224 2009 perl-DBD-mysql-4.008-4.3.x86_64.rpm
TEST-108:/usr/local/src # rpm -ivh perl-Data-ShowTable-3.3-705.10.x86_64.rpm
TEST-108:/usr/local/src # rpm -ivh libmysqlclient15-5.0.96-0.6.1.x86_64.rpm
TEST-108:/usr/local/src # rpm -ivh perl-DBD-mysql-4.008-4.3.x86_64.rpm
TEST-108:/usr/local/src # cd mha4mysql-node-0.56/
TEST-108:/usr/local/src/mha4mysql-node-0.56 # perl Makefile.PL    #<==再次执行
*** Module::AutoInstall version 1.03
*** Checking for Perl dependencies...
[Core Features]
- DBI        ...loaded. (1.607)
- DBD::mysql ...loaded. (4.008)
*** Module::AutoInstall configuration finished.
Writing Makefile for mha4mysql::node
TEST-108:/usr/local/src/mha4mysql-node-0.56 # make && make install  #<==编译
TEST-108:/usr/local/src/mha4mysql-node-0.56 # echo $?
0

mha4mysql-node的依赖包百度云分享
链接:http://pan.baidu.com/s/1bpniSaj 密码:1xkm


  • 4.3 更改数据库的配置文件

    在每台数据库上都安装完mha4mysql-node后,我们需要更改数据库上的配置文件。
    注意:Master和Slave上更改的不一样。

初始主节点master配置:
server-id = 1
relay-log=relay-bin
log-bin=mysql-bin

所有Slave节点依赖的配置
server-id = 2    #<==集群中的server-id必须唯一
relay-log=relay-bin
log-bin=mysql-bin
relay_log_purge=0
read_only=1

注意:每台机器在分别更改完配置文件后需重启数据库。


  • 4.4 每台机器上添加管理账号

下面以机器10.0.0.108为例进行演示:

mysql@TEST-108:~> mysql -uroot
mysql> grant all on *.* to mha@'10.0.0.%' identified by 'mha';
Query OK, 0 rows affected (0.00 sec)

mysql> grant all on *.* to mha@'localhost' identified by 'mha';
Query OK, 0 rows affected (0.01 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
TEST-108:~ # ln -s /home/mysql/mysql/bin/mysqlbinlog /usr/local/bin/mysqlbinlog    #<==创建软连接
TEST-108:~ # ln -s /home/mysql/mysql/bin/mysql /usr/local/bin/mysql   #<==创建软连接

注意:在另外两台机器上做如上的操作!


  • 4.5 安装mha4mysql-manager

4.5.1 上传安装包

TEST-110:~ # cd /usr/local/src/
TEST-110:/usr/local/src # rz
rz waiting to receive.

TEST-110:/usr/local/src # tar xf mha4mysql-manager-0.56.tar.gz

4.5.2 安装mha4mysql-manager

TEST-110:/usr/local/src # cd mha4mysql-manager-0.56/
TEST-110:/usr/local/src/mha4mysql-manager-0.56 # perl Makefile.PL 
*** Module::AutoInstall version 1.03
*** Checking for Perl dependencies...
[Core Features]
- DBI                   ...loaded. (1.607)
- DBD::mysql            ...loaded. (4.008)
- Time::HiRes           ...loaded. (1.9711)
- Config::Tiny          ...missing.    #<==缺少依赖
- Log::Dispatch         ...missing.
- Parallel::ForkManager ...missing.
- MHA::NodeConst        ...loaded. (0.56)

4.5.2.1 安装Config::Tiny

TEST-110:/usr/local/src/mha4mysql-manager-0.56 # cd ..
TEST-110:/usr/local/src # rz
rz waiting to receive.
TEST-110:/usr/local/src # tar xf Config-Tiny-2.14.tar.gz
TEST-110:/usr/local/src # cd Config-Tiny-2.14/
TEST-110:/usr/local/src/Config-Tiny-2.14 # perl Makefile.PL
TEST-110:/usr/local/src/Config-Tiny-2.14 # make && make install
TEST-110:/usr/local/src/Config-Tiny-2.14 # echo $?
0

4.5.2.2 Log::Dispatch

TEST-110:/usr/local/src/Config-Tiny-2.14 # cd ..
TEST-110:/usr/local/src # rz
rz waiting to receive.
TEST-110:/usr/local/src #
TEST-110:/usr/local/src # rpm -ivh perl-Params-Validate-0.91-26.1.x86_64.rpm
TEST-110:/usr/local/src # rpm -ivh perl-Log-Dispatch-2.21-2.1.x86_64.rpm

4.5.2.3 安装Parallel::ForkManager

TEST-110:/usr/local/src # rz
rz waiting to receive.
TEST-110:/usr/local/src # tar xf Parallel-ForkManager-0.7.9.tar.gz 
TEST-110:/usr/local/src # cd Parallel-ForkManager-0.7.9/
TEST-110:/usr/local/src/Parallel-ForkManager-0.7.9 # perl Makefile.PL
TEST-110:/usr/local/src/Parallel-ForkManager-0.7.9 # make && make install
TEST-110:/usr/local/src/Parallel-ForkManager-0.7.9 # echo $?
0
TEST-110:/usr/local/src/Parallel-ForkManager-0.7.9 # cd ../mha4mysql-manager-0.56/
TEST-110:/usr/local/src/mha4mysql-manager-0.56 # perl Makefile.PL    #<==再次执行
TEST-110:/usr/local/src/mha4mysql-manager-0.56 # make && make install
TEST-110:/usr/local/src/mha4mysql-manager-0.56 # echo $?    #<==检查
0

mha4mysql-manager的依赖包百度云分享
链接:http://pan.baidu.com/s/1kU7BeTL 密码:332a


  • 4.6 配置ssh秘钥登录
mysql@TEST-108:~> ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/mysql/.ssh/id_dsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/mysql/.ssh/id_dsa.
Your public key has been saved in /home/mysql/.ssh/id_dsa.pub.
The key fingerprint is:
4d:25:55:89:5f:ba:10:d3:da:82:14:b1:fd:04:73:8a [MD5] mysql@TEST-108
The key's randomart image is:
+--[ DSA 1024]----+
|          ++=+o. |
|          .*+=o .|
|         .E.o*.o |
|         o. +o+  |
|        S .  o.. |
|              .  |
|                 |
|                 |
|                 |
+--[MD5]----------+
mysql@TEST-108:~> ssh-copy-id -i .ssh/id_dsa.pub mysql@10.0.0.108
mysql@TEST-108:~> ssh-copy-id -i .ssh/id_dsa.pub mysql@10.0.0.109
mysql@TEST-108:~> ssh-copy-id -i .ssh/id_dsa.pub mysql@10.0.0.110

注意:在另外两台机器上也做上述的操作!

  • 4.7 创建mha目录
TEST-110:~ # mkdir /etc/mha
TEST-110:~ # cd /etc/mha
TEST-110:/etc/mha # vim app1.conf
TEST-110:/etc/mha # cat app1.conf 
[server default]
manager_log=/data/mha/app1/manager/manager.log
manager_workdir=/data/mha/app1/manager/
master_binlog_dir=/home/mysql/dbdata/data 
user=mha                                     
password=mha                                 
ping_interval=2
repl_user=rep          
repl_password=123456   
ssh_user=mysql               

[server1]                        
hostname=10.0.0.108      
port=3307

[server2]
candidate_master=1                                         
hostname=10.0.0.109
port=3307

[server3]
hostname=10.0.0.110
port=3307
TEST-110:~ # mkdir /data/mha/app1/manager/ -p    #<==创建目录
TEST-110:~ # chown -R mysql.users /data/mha/app1/manager/    #<==授权

  • 4.8 测试SSH
TEST-110:/etc/mha # su - mysql
mysql@TEST-110:~> cd /usr/local/src/mha4mysql-manager-0.56/bin/
mysql@TEST-110:/usr/local/src/mha4mysql-manager-0.56/bin> masterha_check_ssh --conf=/etc/mha/app1.conf 
Wed Aug 16 04:58:43 2017 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.
Wed Aug 16 04:58:43 2017 - [info] Reading application default configuration from /etc/mha/app1.conf..
Wed Aug 16 04:58:43 2017 - [info] Reading server configuration from /etc/mha/app1.conf..
Wed Aug 16 04:58:43 2017 - [info] Starting SSH connection tests..
Wed Aug 16 04:58:45 2017 - [debug] 
Wed Aug 16 04:58:43 2017 - [debug]  Connecting via SSH from mysql@10.0.0.108(10.0.0.108:22) to mysql@10.0.0.109(10.0.0.109:22)..
Wed Aug 16 04:58:44 2017 - [debug]   ok.
Wed Aug 16 04:58:44 2017 - [debug]  Connecting via SSH from mysql@10.0.0.108(10.0.0.108:22) to mysql@10.0.0.110(10.0.0.110:22)..
Wed Aug 16 04:58:45 2017 - [debug]   ok.
Wed Aug 16 04:58:46 2017 - [debug] 
Wed Aug 16 04:58:44 2017 - [debug]  Connecting via SSH from mysql@10.0.0.109(10.0.0.109:22) to mysql@10.0.0.108(10.0.0.108:22)..
Wed Aug 16 04:58:45 2017 - [debug]   ok.
Wed Aug 16 04:58:45 2017 - [debug]  Connecting via SSH from mysql@10.0.0.109(10.0.0.109:22) to mysql@10.0.0.110(10.0.0.110:22)..
Wed Aug 16 04:58:46 2017 - [debug]   ok.
Wed Aug 16 04:58:46 2017 - [debug] 
Wed Aug 16 04:58:44 2017 - [debug]  Connecting via SSH from mysql@10.0.0.110(10.0.0.110:22) to mysql@10.0.0.108(10.0.0.108:22)..
Wed Aug 16 04:58:46 2017 - [debug]   ok.
Wed Aug 16 04:58:46 2017 - [debug]  Connecting via SSH from mysql@10.0.0.110(10.0.0.110:22) to mysql@10.0.0.109(10.0.0.109:22)..
Wed Aug 16 04:58:46 2017 - [debug]   ok.
Wed Aug 16 04:58:46 2017 - [info] All SSH connection tests passed successfully.#<==说明ssh配置成功!

  • 4.9 测试主从复制情况
mysql@TEST-110:/usr/local/src/mha4mysql-manager-0.56/bin> masterha_check_repl --conf=/etc/mha/app1.conf 
Wed Aug 16 05:21:57 2017 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.
Wed Aug 16 05:21:57 2017 - [info] Reading application default configuration from /etc/mha/app1.conf..
Wed Aug 16 05:21:57 2017 - [info] Reading server configuration from /etc/mha/app1.conf..
Wed Aug 16 05:21:57 2017 - [info] MHA::MasterMonitor version 0.56.
Wed Aug 16 05:21:57 2017 - [info] GTID failover mode = 0
Wed Aug 16 05:21:57 2017 - [info] Dead Servers:
Wed Aug 16 05:21:57 2017 - [info] Alive Servers:
Wed Aug 16 05:21:57 2017 - [info]   10.0.0.108(10.0.0.108:3307)
Wed Aug 16 05:21:57 2017 - [info]   10.0.0.109(10.0.0.109:3307)
Wed Aug 16 05:21:57 2017 - [info]   10.0.0.110(10.0.0.110:3307)
Wed Aug 16 05:21:57 2017 - [info] Alive Slaves:
Wed Aug 16 05:21:57 2017 - [info]   10.0.0.109(10.0.0.109:3307)  Version=5.6.23-enterprise-commercial-advanced-log (oldest major version between slaves) log-bin:enabled
Wed Aug 16 05:21:57 2017 - [info]     Replicating from 10.0.0.108(10.0.0.108:3307)
Wed Aug 16 05:21:57 2017 - [info]     Primary candidate for the new Master (candidate_master is set)
Wed Aug 16 05:21:57 2017 - [info]   10.0.0.110(10.0.0.110:3307)  Version=5.6.23-enterprise-commercial-advanced-log (oldest major version between slaves) log-bin:enabled
Wed Aug 16 05:21:57 2017 - [info]     Replicating from 10.0.0.108(10.0.0.108:3307)
Wed Aug 16 05:21:57 2017 - [info] Current Alive Master: 10.0.0.108(10.0.0.108:3307)
Wed Aug 16 05:21:57 2017 - [info] Checking slave configurations..
Wed Aug 16 05:21:57 2017 - [info] Checking replication filtering settings..
Wed Aug 16 05:21:57 2017 - [info]  binlog_do_db= , binlog_ignore_db= 
Wed Aug 16 05:21:57 2017 - [info]  Replication filtering check ok.
Wed Aug 16 05:21:57 2017 - [info] GTID (with auto-pos) is not supported
Wed Aug 16 05:21:57 2017 - [info] Starting SSH connection tests..
Wed Aug 16 05:22:00 2017 - [info] All SSH connection tests passed successfully.
Wed Aug 16 05:22:00 2017 - [info] Checking MHA Node version..
Wed Aug 16 05:22:01 2017 - [info]  Version check ok.
Wed Aug 16 05:22:01 2017 - [info] Checking SSH publickey authentication settings on the current master..
Wed Aug 16 05:22:02 2017 - [info] HealthCheck: SSH to 10.0.0.108 is reachable.
Wed Aug 16 05:22:02 2017 - [info] Master MHA Node version is 0.56.
Wed Aug 16 05:22:02 2017 - [info] Checking recovery script configurations on 10.0.0.108(10.0.0.108:3307)..
Wed Aug 16 05:22:02 2017 - [info]   Executing command: save_binary_logs --command=test --start_pos=4 --binlog_dir=/home/mysql/dbdata/data --output_file=/var/tmp/save_binary_logs_test --manager_version=0.56 --start_file=mysql-bin.000010 
Wed Aug 16 05:22:02 2017 - [info]   Connecting to mysql@10.0.0.108(10.0.0.108:22).. 
  Creating /var/tmp if not exists..    ok.
  Checking output directory is accessible or not..
   ok.
  Binlog found at /home/mysql/dbdata/data, up to mysql-bin.000010
Wed Aug 16 05:22:03 2017 - [info] Binlog setting check done.
Wed Aug 16 05:22:03 2017 - [info] Checking SSH publickey authentication and checking recovery script configurations on all alive slave servers..
Wed Aug 16 05:22:03 2017 - [info]   Executing command : apply_diff_relay_logs --command=test --slave_user='mha' --slave_host=10.0.0.109 --slave_ip=10.0.0.109 --slave_port=3307 --workdir=/var/tmp --target_version=5.6.23-enterprise-commercial-advanced-log --manager_version=0.56 --relay_log_info=/home/mysql/dbdata/data/relay-log.info  --relay_dir=/home/mysql/dbdata/data/  --slave_pass=xxx
Wed Aug 16 05:22:03 2017 - [info]   Connecting to mysql@10.0.0.109(10.0.0.109:22).. 
  Checking slave recovery environment settings..
    Opening /home/mysql/dbdata/data/relay-log.info ... ok.
    Relay log found at /home/mysql/dbdata/data, up to relay-bin.000012
    Temporary relay log file is /home/mysql/dbdata/data/relay-bin.000012
    Testing mysql connection and privileges..Warning: Using a password on the command line interface can be insecure.
 done.
    Testing mysqlbinlog output.. done.
    Cleaning up test file(s).. done.
Wed Aug 16 05:22:04 2017 - [info]   Executing command : apply_diff_relay_logs --command=test --slave_user='mha' --slave_host=10.0.0.110 --slave_ip=10.0.0.110 --slave_port=3307 --workdir=/var/tmp --target_version=5.6.23-enterprise-commercial-advanced-log --manager_version=0.56 --relay_log_info=/home/mysql/dbdata/data/relay-log.info  --relay_dir=/home/mysql/dbdata/data/  --slave_pass=xxx
Wed Aug 16 05:22:04 2017 - [info]   Connecting to mysql@10.0.0.110(10.0.0.110:22).. 
  Checking slave recovery environment settings..
    Opening /home/mysql/dbdata/data/relay-log.info ... ok.
    Relay log found at /home/mysql/dbdata/data, up to relay-bin.000012
    Temporary relay log file is /home/mysql/dbdata/data/relay-bin.000012
    Testing mysql connection and privileges..Warning: Using a password on the command line interface can be insecure.
 done.
    Testing mysqlbinlog output.. done.
    Cleaning up test file(s).. done.
Wed Aug 16 05:22:05 2017 - [info] Slaves settings check done.
Wed Aug 16 05:22:05 2017 - [info] 
10.0.0.108(10.0.0.108:3307) (current master)
 +--10.0.0.109(10.0.0.109:3307)
 +--10.0.0.110(10.0.0.110:3307)

Wed Aug 16 05:22:05 2017 - [info] Checking replication health on 10.0.0.109..
Wed Aug 16 05:22:05 2017 - [info]  ok.
Wed Aug 16 05:22:05 2017 - [info] Checking replication health on 10.0.0.110..
Wed Aug 16 05:22:05 2017 - [info]  ok.
Wed Aug 16 05:22:05 2017 - [warning] master_ip_failover_script is not defined.
Wed Aug 16 05:22:05 2017 - [warning] shutdown_script is not defined.
Wed Aug 16 05:22:05 2017 - [info] Got exit code 0 (Not master dead).

MySQL Replication Health is OK.

  • 4.10 启动MHA
mysql@TEST-110:/usr/local/src/mha4mysql-manager-0.56/bin> nohup masterha_manager --conf=/etc/mha/app1.conf --ignore_last_failover </dev/null >/data/mha/app1/manager/manager.log 2>&1 &    #<== 启动MHA
[1] 11056

  • 4.11 查看MHA的状态
mysql@TEST-110:/usr/local/src/mha4mysql-manager-0.56/bin> masterha_check_status --conf=/etc/mha/app1.conf      #<==查看MHA的状态
app1 (pid:11056) is running(0:PING_OK), master:10.0.0.108
mysql@TEST-110:/usr/local/src/mha4mysql-manager-0.56/bin> ps -ef|grep perl
mysql     11056   9129  0 05:31 pts/1    00:00:01 perl /usr/bin/masterha_manager --conf=/etc/mha/app1.conf --ignore_last_failover
mysql     11349   9129  0 05:34 pts/1    00:00:00 grep perl

  • 4.12 测试MHA
登录10.0.0.110机器查看主从复制的情况:

mysql@TEST-110:~> mysql -umysql -p123456
mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.0.0.108
                  Master_User: rep
                  Master_Port: 3307
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000009
          Read_Master_Log_Pos: 120
               Relay_Log_File: mysqld_3307-relay-bin.000004
                Relay_Log_Pos: 283
        Relay_Master_Log_File: mysql-bin.000009
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
             .................

停掉主库10.0.0.108以后再次登录查看:

mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.0.0.109
                  Master_User: rep
                  Master_Port: 3307
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000004
          Read_Master_Log_Pos: 607367
               Relay_Log_File: mysqld_3307-relay-bin.000002
                Relay_Log_Pos: 283
        Relay_Master_Log_File: mysql-bin.000004
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
            ................

MySQL MHA配置成功!

脚注

本人为Linux初学者,QQ:2455321547,你们可以联系我,一起共同探讨学习Linux,也可以留下你们的联系方式,我来加你们啊!

包含以下rpm包,安装顺序可能不一致,自行尝试 Node: libmysqlclient18-10.0.35-1.7.x86_64.rpm perl-Data-ShowTable-4.5-2.14.noarch.rpm perl-DBD-mysql-4.021-12.5.2.x86_64.rpm mha4mysql-node-0.58.tar.gz perl-Params-Validate-1.06-2.18.x86_64.rpm perl-Log-Dispatch-2.68-63.1.noarch.rpm **package rpm -ivh perl-Class-Data-Inheritable-0.08-83.1.noarch.rpm rpm -ivh perl-Devel-StackTrace-2.03-40.1.noarch.rpm rpm -ivh perl-Exception-Class-1.44-40.1.noarch.rpm rpm -ivh perl-Devel-GlobalDestruction-0.14-26.1.noarch.rpm rpm -ivh perl-Eval-Closure-0.14-30.1.noarch.rpm rpm -ivh perl-MRO-Compat-0.13-32.1.noarch2.rpm rpm -ivh perl-Role-Tiny-2.000006-4.1.noarch.rpm rpm -ivh perl-Sub-Exporter-Progressive-0.001013-2.1.noarch.rpm rpm -ivh perl-Specio-0.43-13.1.noarch.rpm rpm -ivh perl-Dist-CheckConflicts-0.09-1.7.noarch.rpm rpm -ivh perl-Package-Stash-XS-0.28-1.18.x86_64.rpm rpm -ivh perl-Package-Stash-0.36-2.5.noarch.rpm rpm -ivh perl-B-Hooks-EndOfScope-0.24-36.1.noarch.rpm rpm -ivh perl-namespace-clean-0.27-4.1.noarch.rpm rpm -ivh perl-namespace-autoclean-0.28-29.1.noarch.rpm rpm -ivh perl-Test-Fatal-0.014-7.1.noarch.rpm rpm -ivh perl-Devel-GlobalDestruction-0.14-26.1.noarch.rpm rpm -ivh perl-Sub-Identify-0.14-43.1.x86_64.rpm rpm -ivh perl-Sub-Quote-2.005001-9.1.noarch.rpm rpm -ivh perl-Variable-Magic-0.62-33.1.x86_64.rpm rpm -ivh perl-Scalar-List-Utils-1.35-1.147.x86_64.rpm rpm -ivh perl-Params-ValidationCompiler-0.30-10.1.noarch.rpm rpm -ivh perl-Dist-CheckConflicts-0.09-1.7.noarch.rpm rpm -ivh perl-Package-Stash-XS-0.28-1.18.x86_64.rpm rpm -ivh perl-Package-Stash-0.36-2.5.noarch.rpm rpm -ivh perl-Try-Tiny-0.16-3.19.noarch.rpm rpm -ivh perl-Module-Implementation-0.07-2.5.noarch.rpm rpm -ivh perl-Module-Runtime-0.014-4.1.noarch.rpm rpm -ivh perl-Dist-CheckConflicts-0.09-1.7.noarch.rpm rpm -ivh perl-Package-Stash-XS-0.28-1.18.x86_64.rpm rpm -ivh perl-Package-Stash-0.36-2.5.noarch.rpm rpm -ivh perl-B-Hooks-EndOfScope-0.24-36.1.noarch.rpm rpm -ivh perl-namespace-clean-0.27-4.1.noarch.rpm rpm -ivh perl-namespace
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值