MySQL高可用之快速搭建MHA

MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。

该软件由两部分组成:MHA Manager(管理节点)和MHA Node(数据节点)。MHA Manager可以单独部署在一台独立的机器上管理多个master-slave集群,也可以部署在一台slave节点上。MHA Node运行在每台MySQL服务器上,MHA Manager会定时探测集群中的master节点,当master出现故障时,它可以自动将最新数据的slave提升为新的master,然后将所有其他的slave重新指向新的master。整个故障转移过程对应用程序完全透明。

实验环境:rhel6.5 iptables and selinux disabled

server1 IP:10.0.0.1 MHA-manager
server2 IP:10.0.0.2 MySQL-Master + MHA Node
server3 IP:10.0.0.3 MySQL-Slave1 + MHA Node
server4 IP:10.0.0.4 MySQL-Slave2 + MHA Node

安装Mysql数据库(Server2、Server3、Server4):

#  安装MySQL数据库
[root@server2 ~]# ls
mysql-community-client-5.7.17-1.el6.x86_64.rpm
mysql-community-common-5.7.17-1.el6.x86_64.rpm
mysql-community-libs-5.7.17-1.el6.x86_64.rpm
mysql-community-libs-compat-5.7.17-1.el6.x86_64.rpm
mysql-community-server-5.7.17-1.el6.x86_64.rpm
[root@server2 ~]# yum install -y *

# 启动MySQL数据库
启动mysql
[root@server2 ~]# /etc/init.d/mysqld start
Initializing MySQL database:                               [  OK  ]
Installing validate password plugin:                       [  OK  ]
Starting mysqld:                                           [  OK  ]

# 查看系统初始密码
[root@server2 ~]# grep 'temporary password' /var/log/mysqld.log
2018-10-26T16:21:16.893671Z 1 [Note] A temporary password is generated for root@localhost: rJsv*43QbeNe

# MySQL数据库安全初始化,修改密码、root用户远程权限等配置
[root@server2 ~]# mysql_secure_installation

编辑MySQL配置文件/etc/my.cnf,添加以下内容

# 编辑MySQL配置文件
[root@server2 ~]# vim /etc/my.cnf

[mysqld]
# GTID
server_id=1                    # ServerID,三台MySQL不能相同
gtid_mode=ON                   # 开启GTID模式
enforce_gtid_consistency=on

# bin_log
log_bin=mysql-binlog           # 开启Log_bin
log_slave_updates=1
binlog_format=row

# relaylog
skip_slave_start=1

# 重启MySQL,使配置生效
[root@server2 ~]# /etc/init.d/mysqld restart
Stopping mysqld:                                           [  OK  ]
Starting mysqld:                                           [  OK  ]

配置MySQL主从复制

# 查看GTID状态
mysql> show global variables like '%gtid%';
+----------------------------------+-------+
| Variable_name                    | Value |
+----------------------------------+-------+
| binlog_gtid_simple_recovery      | ON    |
| enforce_gtid_consistency         | ON    |
| gtid_executed                    |       |
| gtid_executed_compression_period | 1000  |
| gtid_mode                        | ON    |
| gtid_owned                       |       |
| gtid_purged                      |       |
| session_track_gtids              | OFF   |
+----------------------------------+-------+
8 rows in set (0.01 sec)

# 在Master上创建同步用户
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'P@ssword1';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

# 在Slave上,指定Master信息
mysql> CHANGE MASTER TO MASTER_HOST='10.0.0.2',
    -> MASTER_USER='repl',
    -> MASTER_PASSWORD='P@ssword1',
    -> MASTER_PORT=3306,
    -> MASTER_AUTO_POSITION=1;
Query OK, 0 rows affected, 2 warnings (0.07 sec)

# 开启Slave
mysql> START SLAVE;
Query OK, 0 rows affected (0.01 sec)

# 查看Slave状态,Slave_IO_Running和Slave_IO_Running都为Yes,则正常
mysql> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.0.0.2
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-binlog.000003
          Read_Master_Log_Pos: 589
               Relay_Log_File: server3-relay-bin.000002
                Relay_Log_Pos: 808
        Relay_Master_Log_File: mysql-binlog.000003
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB:
.................................................................
# 进行主从复制的创建,需要确保主从库的一致性,可以备份Master库并导入Slave来确保库的一致性。
# 因为我们是新安装的MySQL,没有进行其他多余的操作ÿ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值