8 DBA mysql 集群 MHA集群概述 、 部署MHA集群 测试配置

DAB2_DAY03  部署MySQL集群 (MHA +  mysql一主多从)
集群:使用多台服务器提供相同的服务
集群类型:LB(负载均衡集群)     HA(高可用集群) HPC(高计算集群)
高可用集群:
MHA软件介绍?
 
三、部署mysql高可用集群:
3.1 准备实验拓扑:
56       管理主机(不需要运行数据库服务)
51-55  是数据库服务器  (只保留初始的4个库)
把软件包拷贝到所有的主机里 51-56   
]# scp -r mha-soft-student 192.168.4.5X:/root/
 
 
 
 
3.2 配置mysql高可用集群
3.2.1  环境准备
在所有的主机上安装软件包51-56  
]#cd  mha-soft-student
]# yum -y  install  perl-*
所有数据库服务器之间可以root无密码ssh登陆
[root@host51 ~]# ssh-keygen
  336  ssh-copy-id  [email protected]
  337  ssh-copy-id  [email protected]
  338  ssh-copy-id  [email protected]
  339  ssh-copy-id  [email protected]
 
[root@host52 ~]# ssh-keygen
  159  ssh-copy-id  [email protected]
  160  ssh-copy-id  [email protected]
  161  ssh-copy-id  [email protected]
  162  ssh-copy-id  [email protected]
 
[root@host53 ~]# ssh-keygen
   61  ssh-copy-id [email protected]
   62  ssh-copy-id [email protected]
   63  ssh-copy-id [email protected]
   64  ssh-copy-id [email protected]
[root@host54 ~]# ssh-keygen
   61  ssh-copy-id  [email protected]
   62  ssh-copy-id  [email protected]
   63  ssh-copy-id  [email protected]
   64  ssh-copy-id  [email protected]
[root@host55 ~]# ssh-keygen
  178  ssh-copy-id  [email protected]
  179  ssh-copy-id  [email protected]
  180  ssh-copy-id  [email protected]
  181  ssh-copy-id  [email protected]
休息到 17:20
管理主机50 可以无密码ssh登陆所有数据库服务器
[root@host56 ~]# ssh-keygenssh-keygen  
   88  ssh-copy-id  [email protected]
   89  ssh-copy-id  [email protected]
   90  ssh-copy-id  [email protected]
   91  ssh-copy-id  [email protected]
   92  ssh-copy-id  [email protected]
 
3.2.1  配置集群
3.2.1.1  配置数据库服务器
3.2.1.2  配置管理服务器
 
3.3  测试集群配置
 

拓扑结构

            master51
            |
        |
______________________________________________________
  |        |         |         |        |
 slave52    slave53   slave54     slave55      mgm56
                                              Manager


公共配置:
在所有主机上安装软件软件包
[root@db108 share]# ls  perl-*.rpm
perl-Config-Tiny-2.14-7.el7.noarch.rpm          
perl-Mail-Sender-0.8.23-1.el7.noarch.rpm       
perl-MIME-Types-1.38-2.el7.noarch.rpm
perl-Email-Date-Format-1.002-15.el7.noarch.rpm  
perl-Mail-Sendmail-0.79-21.el7.art.noarch.rpm  
perl-Parallel-ForkManager-1.18-2.el7.noarch.rpm
perl-Log-Dispatch-2.41-1.el7.1.noarch.rpm       
perl-MIME-Lite-3.030-1.el7.noarch.rpm

[root@db108 share]# yum -y  install  perl-*.rpm


一、配置所有数据节点主机之间可以互相以ssh密钥对方式认证登陆
二、配置manager56主机 无密码ssh登录 所有数据节点主机

三、配置主从同步,要求如下:
51 主库             开半同步复制
52 从库(备用主库)  开半同步复制
53 从库(备用主库)  开半同步复制
54 从库 不做备用主库所以不用开半同步复制
55 从库 不做备用主库所以不用开半同步复制


3.1、master51配置:
vim  /etc/my.cnf
[mysqld]
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

server_id=51
log-bin=master51
binlog-format="mixed"
:wq

[root@db107 ~]# systemctl  restart mysqld

[root@db107 ~]# ls /var/lib/mysql/master51.*
/var/lib/mysql/master51.000001  /var/lib/mysql/master51.index

[root@db107 ~]# mysql -uroot -p123456
mysql> grant  replication slave  on  *.*  to repluser@"%"  identified by "123456";
Query OK, 0 rows affected, 1 warning (10.04 sec)      (注意备选主库也必须有这个用户,手动授权)

mysql> set global relay_log_purge=off;   (不自动删除中继日志)
Query OK, 0 rows affected (0.15 sec)

mysql> show master status;
+-----------------+----------+--------------+------------------+-------------------+
| File            | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-----------------+----------+--------------+------------------+-------------------+
| master51.000001 |      441 |              |                  |                   |
+-----------------+----------+--------------+------------------+-------------------+
mysql> quit;


3.2、备用master52的配置
vim /etc/my.cnf
[mysqld]
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

server_id=52
log-bin=master52
binlog-format="mixed"

]# systemctl restart mysqld
[root@db108 ~]# ls /var/lib/mysql/master52.*
/var/lib/mysql/master52.000001  /var/lib/mysql/master52.index

[root@db108 ~]# mysql  -uroot  -p123456

mysql> set global relay_log_purge=off;
Query OK, 0 rows affected (0.13 sec)

mysql> change master to
    -> master_host="192.168.4.51",
    -> master_user="repluser",
    -> master_password="123456",
    -> master_log_file="master51.000001",
    -> master_log_pos=441;
Query OK, 0 rows affected, 2 warnings (0.04 sec)

mysql> start slave;
Query OK, 0 rows affected (0.01 sec)


[root@db108 ~]# mysql -uroot -p123456 -e "show slave status\G"  | grep -i YES
mysql: [Warning] Using a password on the command line interface can be insecure.
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
[root@db108 ~]#


3.3、备用master53的配置
]#  vim /etc/my.cnf
[mysqld]
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

server_id=53
log-bin=master53
binlog-format="mixed"
:wq

[root@db109 ~]# systemctl  restart mysqld
[root@db109 ~]# ls /var/lib/mysql/master53.*
/var/lib/mysql/master53.000001  /var/lib/mysql/master53.index
[root@db109 ~]#

[root@db109 ~]# mysql -uroot -p123456
mysql> set global relay_log_purge=off;
Query OK, 0 rows affected (0.14 sec)

mysql> change master  to master_host="192.168.4.51",master_user="repluser",master_password="123456",master_log_file="master51.000001",master_log_pos=441;
Query OK, 0 rows affected, 2 warnings (0.05 sec)

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

mysql>

[root@db109 ~]# mysql -uroot -p123456 -e "show slave status\G" | grep -i yes
mysql: [Warning] Using a password on the command line interface can be insecure.
             Slave_IO_Running: Yes
             Slave_SQL_Running: Yes
[root@db109 ~]#


3.4、配置从服务器54
[root@db111 ~]# vim /etc/my.cnf
[mysqld]
server_id=54
:wq

[root@db111 ~]# systemctl  restart mysqld
[root@db111 ~]# mysql -uroot -p123456
mysql> change master  to master_host="192.168.4.51",master_user="repluser",master_password="123456",master_log_file="master51.000001",master_log_pos=441;
Query OK, 0 rows affected, 2 warnings (0.09 sec)

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

mysql> quit;
Bye
[root@db111 ~]#
[root@db111 ~]# mysql -uroot -p123456 -e "show slave status\G" | grep -i yes
mysql: [Warning] Using a password on the command line interface can be insecure.
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
[root@db111 ~]#


3.5、配置从服务器55
[root@db111 ~]# vim /etc/my.cnf
[mysqld]
server_id=55
:wq

[root@db111 ~]# systemctl  restart mysqld
[root@db111 ~]# mysql -uroot -p123456
mysql> change master  to master_host="192.168.4.51",master_user="repluser",master_password="123456",master_log_file="master51.000001",master_log_pos=441;
Query OK, 0 rows affected, 2 warnings (0.09 sec)

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

mysql> quit;
Bye
[root@db111 ~]#
[root@db111 ~]# mysql -uroot -p123456 -e "show slave status\G" | grep -i yes
mysql: [Warning] Using a password on the command line interface can be insecure.
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
[root@db111 ~]#


3.6、在客户端测试主从同步配置
3.6.1  在主库51上添加访问数据的授权用户
[root@db107 ~]# mysql -uroot -p123456
mysql> grant all on  gamedb.* to admin@"%" identified by "123456";

3.6.2  在客户端主机连接主库51 建库表记录
mysql> create database gamedb;
Query OK, 1 row affected (0.01 sec)

mysql> create table  gamedb.t1 (id int);
Query OK, 0 rows affected (0.04 sec)

mysql> insert into gamedb.t1 values(999);
Query OK, 1 row affected (0.15 sec)

mysql> insert into gamedb.t1 values(999);
Query OK, 1 row affected (0.05 sec)

mysql> select  * from gamedb.t1;
+------+
| id   |
+------+
|  999 |
|  999 |
+------+
2 rows in set (0.00 sec)

mysql>

3.6.3  在客户端使用授权用户连接从库52-55,也能看到同样的库表及记录

[root@host114 ~]# mysql -h从库IP地址 -uadmin -p123456
mysql> select  * from gamedb.t1;
+------+
| id   |
+------+
|  999 |
|  999 |select user,host from mysql.user;
+------+


 
    
 

DAB2_DAY03  部署MySQL集群 (MHA +  mysql一主多从)
集群:使用多台服务器提供相同的服务
集群类型:LB(负载均衡集群)     HA(高可用集群) HPC(高计算集群)
高可用集群:
MHA软件介绍?
 
三、部署mysql高可用集群:
3.1 准备实验拓扑:show slave status\G;
56       管理主机(不需要运行数据库服务)
51-55  是数据库服务器  (只保留初始的4个库)
把软件包拷贝到所有的主机里 51-56   
]# scp -r mha-soft-student 192.168.4.5X:/root/
 
 
 
 
3.2 配置mysql高可用集群
3.2.1  环境准备
在所有的主机上安装软件包51-56  
]#cd  mha-soft-student
]# yum -y  install  perl-*
所有数据库服务器之间可以root无密码ssh登陆
[root@host51 ~]# ssh-keygen
  336  ssh-copy-id  [email protected]
  337  ssh-copy-id  [email protected]
  338  ssh-copy-id  [email protected]
  339  ssh-copy-id  [email protected]
 
[root@host52 ~]# ssh-keygen
  159  ssh-copy-id  [email protected]
  160  ssh-copy-id  [email protected]
  161  ssh-copy-id  [email protected]
  162  ssh-copy-id  [email protected]
 
[root@host53 ~]# ssh-keygen
   61  ssh-copy-id [email protected]
   62  ssh-copy-id [email protected]
   63  ssh-copy-id [email protected]
   64  ssh-copy-id [email protected]
[root@host54 ~]# ssh-keygen
   61  ssh-copy-id  [email protected]
   62  ssh-copy-id  [email protected]
   63  ssh-copy-id  [email protected]
   64  ssh-copy-id  [email protected]
[root@host55 ~]# ssh-keygen
  178  ssh-copy-id  [email protected]
  179  ssh-copy-id  [email protected]
  180  ssh-copy-id  [email protected]
  181  ssh-copy-id  [email protected]
休息到 17:20
管理主机50 可以无密码ssh登陆所有数据库服务器
[root@host56 ~]# ssh-keygenssh-keygen  
   88  ssh-copy-id  [email protected]
   89  ssh-copy-id  [email protected]
   90  ssh-copy-id  [email protected]
   91  ssh-copy-id  [email protected]
   92  ssh-copy-id  [email protected]
 
 
测试主从同步(db8.*  select  insert)
50: mysql  -h192.168.4.51  -uuser8  -p123qqq...A
 
休息到10:10
3.2.1  配置集群
3.2.1.1  配置数据库服务器(51-55)
安装mha_node软件
]#yum -y  install perl-DBD-mysql
]#rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm  
+++++++++++++++++++++++++++
3.2.1.2  配置管理服务器(56)
安装mha_node 和 mha_manager软件
]# yum -y  install perl-DBD-mysql
]# rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm  
]#yum -y install perl-ExtUtils-*    perl-CPAN-*
]#tar -zxvf mha4mysql-manager-0.56.tar.gz
]#cd mha4mysql-manager-0.56
]#perl Makefile.PL  
]#make
]#make install
 
把命令拷贝的$PATH路径下
[root@host56 mha4mysql-manager-0.56]# cp -r bin /root/
[root@host56 mha4mysql-manager-0.56]# ls /root/bin/
 
编写管理主机服务的主配置文件  
mkdir  /etc/mha_manager
休息到 11:10
 
cd  mha4mysql-manager-0.56/samples
cp conf/app1.cnf /etc/mha_manager/
vim /etc/mha_manager/app1.cnf

1 [server default]
  2 manager_workdir=/etc/mha_manager   (工作目录存放路径)
  3 manager_log=/etc/mha_manager/manager.log   (日志存放路径)
  4 master_ip_failover_script=/etc/mha_manager/master_ip_failover   (故障转移脚本)
  5
  6 ssh_port=22
  7 ssh_user=root
  8
  9 repl_user=repluser
 10 repl_password=123456
 11
 12 user=root
 13 password=123qqq...A
 14
 15 [server1]
 16 hostname=192.168.4.51
 17 candidate_master=1cp conf/app1.cnf /etc/mha_manager/
 18
 19 [server2]
 20 hostname=192.168.4.52
 21 candidate_master=1
 22
 23 [server3]
 24 hostname=192.168.4.53
 25 candidate_master=1
 26
 27 [server4]
 28 hostname=192.168.4.54
 29 no_master=1

 
 
根据配置文件的定义做相应的设置
]#cd  mha-soft-student
]# cp master_ip_failover /etc/mha_manager/
 
编辑脚本
]# chmod +x /etc/mha_manager/master_ip_failover            (修改35行,vip地址)
vim /etc/mha_manager/master_ip_failover
my $vip = '192.168.4.100/24';  # Virtual IP  
my $key = "1";
my $ssh_start_vip = "/sbin/ifconfig eth0:$key $vip";
my $ssh_stop_vip = "/sbin/ifconfig eth0:$key down";
 
授权监控用户(51-55)
mysql>
grant all  on *.* to   root@'%'  identified  by   "123qqq...A";
select  user,host from  mysql.user  where  user="root";
 
56]# mysql  -h192.168.4.51  -uroot  -p123qqq...A
 
 
测试配置文件配置
测试ssh登陆
]#masterha_check_ssh  --conf=/etc/mha_manager/app1.cnf
 
Tue Jul 24 14:17:39 2018 - [info] All SSH connection tests passed successfully.
 
测试主从同步配置
]#masterha_check_repl  --conf=/etc/mha_manager/app1.cnf
 
MySQL Replication Health is OK.
 
 
把VIP地址手动部署在当前主库192.168.4.51 上。
51]#/sbin/ifconfig  eth0:1  192.168.4.100/24
]#/sbin/ifconfig  eth0:1    (网卡编号可以自定义)
]#/sbin/ifconfig  eth0
休息到 15:30
 
启动管理服务
tty1 56]# masterha_manager --conf=/etc/mha_manager/app1.cnf     
--remove_dead_master_conf   --ignore_last_failover
 
tty2  56]# masterha_check_status --conf=/etc/mha_manager/app1.cnf
+++++++++++++++++++++++++++++++++++++
3.3  测试集群配置
客户端连接vip地址 存储数据
50: mysql  -h192.168.4.100  -uuser8  -p123qqq...A
mysql>  select  * from  db8.t1;
mysql> select  @@hostname;
                        
把当前主库51 的数据库服务停止,但客户端访问数据库连接不会断,查看主机名显示的是52主机的主机名;在52本机查看VIP地址也能够查看到。
主库51的配置在管理主机56的app1.cnf文件里查看不到了。
 
所有从库服务器都会把 主库的Ip地址自动指向192.168.4.52
 
休息到 16:20
++++++++++++++++++++++++++++++++
把坏掉的主机51 添加到集群里。
 
51:把自己配置为当前主库的从库
]# systemctl  start  mysqld
mysql> change master to   
    -> master_host="192.168.4.52",
    -> master_user="repluser",
    -> master_password="123qqq...A",
    -> master_log_file="master52.000001",master_log_pos=1791;
mysql> start slave;
 
56: 把主机51的信息添加到主配置文件app1.cnf ,并启动管理服务
 
]# vim /etc/mha_manager/app1.cnf
[server1]
candidate_master=1
hostname=192.168.4.51
:wq
 
tty1 ]#masterha_manager --conf=/etc/mha_manager/app1.cnf     
--remove_dead_master_conf   --ignore_last_failover
 
tty2  56]# masterha_check_status --conf=/etc/mha_manager/app1.cnf
 
++++++++++++++++++++++++++++++++
一 、部署集群环境:
一主多从  主从同步结构
在做主机的主机上 开启半同步复制 且设置不自动删除中继日志文件  
配置ssh秘钥对认证登陆
所有主机上都要安装软件依赖的perl软件包
 
二、配置集群:
1 配置数据库服务器:安装mha_node软件包
2 配置管理主机:
2.1 安装软件包:mha_node   和  mha_manager
2.2 创建管理命令
2.3 编写主配置文件 app1.cnf
2.4 根据配置文件的设置
在数据库服务器上创建监控用户
在本机创建故障切换脚本, 并修改脚本 指定vip 部署的网络接口名
 
2.5  测试主配置文件 app1.cnf
测试ssh服务  masterha_check_ssh    --conf=
测试主从同步 masterha_check_repl   --conf=
 
2.6  手动把规定的vip地址部署在当主库 51 上
 
2.7  启动管理服务 并查看状态
 
三、测试集群
3.1 访问集群存储数据:
50]#  mysql  -h vip地址    -uuser8   -p123qqq...A
MySQL>  select  @@hostname;
 
3.2  测试高可用
把当前主库51 的数据库服务停止,但客户端访问数据库连接不会断,查看主机名显示的是52主机的主机名;在52本机查看VIP地址也能够查看到。
主库51的配置在管理主机56的app1.cnf文件里查看不到了。
 
四、把坏掉的主机51 添加到集群里。
51]# 启动数据库服务,并指定当前主库信息
 
56]# 在主配置文件app1.cnf里添加 主51的信息 ,并启动管理服务
 
休息到  17:30
 
 
 
 
 
 
 
 
 
 

 
 
 

猜你喜欢

转载自blog.csdn.net/xixi1067087210/article/details/81181213