keepalived mysql双主架构图_MySQL双主互备+Keepalived高可用架构介绍

一、MySQL双主互备+keepalived高可用架构介绍

MySQL主从复制架构可以在很大程度保证MySQL的高可用,在一主多从的架构中还可以利用读写分离将读操作分配到从库中,减轻主库压力。但是在这种架构中,主库出现故障时需要手动将一台从库提升为主库。在对写操作要求较高的环境中,主库故障在主从架构中会成为单点故障。因此需要主主互备架构,避免主节点故障造成写操作失效。

在双主互备的架构中,每台MySQL都充当主服务器,同时充当对方的从服务器。在任意一台服务器上的写操作都会被复制到另一台服务器上,从而保证了数据的可靠性。

在双主互备的基础上加上keepalived,在其中一台机器上绑定虚拟ip(VIP)。利用vip统一对外服务,可以避免在两个节点同时写数据造成冲突。同时当keepalived主节点发生故障时,keeplived会自动将VIP切换到备节点上,从而实现主服务器的高可用。

MySQL双主互备+keepalived高可用架构图

二、MySQL双主互备架构部署

在上一篇MySQL主从复制操作中已经完成了MySQL主从架构的部署。在此基础上,需要在原Master上开启relay-log,在原Slave服务器上开启log-bin,同时在MySQL248上指定MySQL249为自己的主服务器并开启slave即可。

1.开启原Master上的relay-log,指定不复制的库

[root@Mysql-248 mysql-5.6.30]# grep -A8 'mysqld' my.cnf

[mysqld]

port = 3306

server_id = 1

log-bin=mysql-bin

#以下部分为在原基础上新增的内容

relay-log = mysql-relay-bin

replicate-wild-ignore-table=mysql.%

replicate-wild-ignore-table=test.%

replicate-wild-ignore-table=information_schema.%

2.开启原Slave上的log-bin,指定不复制的库

[root@Mysql-249 mysql-5.6.30]# grep -A8 'mysqld' my.cnf

[mysqld]

port = 3306

server_id = 2

relay-log = mysql-relay-bin

#以下部分为在原基础上新增的内容

log-bin=mysql-bin

replicate-wild-ignore-table=mysql.%

replicate-wild-ignore-table=test.%

replicate-wild-ignore-table=information_schema.%

3.在Mysql248服务器上指定Mysql249为自己的主服务器并开启slave

####  ① 在Mysql249上查看当前master信息,并建立复制用户

mysql> show master status;

+------------------+----------+--------------+------------------+-------------------+

| File            | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+--------------+------------------+-------------------+

| mysql-bin.000001 |      493 |              |                  |                  |

+------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

mysql> grant replication slave on *.* to 'repl_user'@'192.168.175.%' identified by '123456';

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

#### ② 在Mysql248上指定Mysql249为自己的主服务器,开启slave

mysql> change master to \

-> master_host='192.168.175.249',

-> master_user='repl_user',

-> master_password=

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会回答你的问题,以下是mysql5.7双主互备高可用、读写分离+keepalived实战部署步骤与命令和架构图: 1. 架构图 ``` +----------+ | Node 1 | |(Master) | +----------+ |(VIP) | +-----------+-----------+ | | | VIRTUAL IP | | | +-----------+-----------+ | |(VIP) | +----------+ | Node 2 | | (Slave) | +----------+ ``` 注解:Node1与Node2都有mysql服务器,Node1为主节点,Node2为备节点,VIP为虚拟IP,通过keepalived实现主备切换。 2. 部署步骤与命令 2.1 安装MySQL 在Node1和Node2上安装MySQL,可以使用yum或者apt-get安装。 2.2 配置MySQL双主互备 在Node1上执行以下命令: ``` vi /etc/my.cnf # 添加如下内容 [mysqld] server-id=1 log-bin=mysql-bin binlog-format=ROW auto_increment_increment=2 auto_increment_offset=1 ``` 在Node2上执行以下命令: ``` vi /etc/my.cnf # 添加如下内容 [mysqld] server-id=2 log-bin=mysql-bin binlog-format=ROW auto_increment_increment=2 auto_increment_offset=2 ``` 2.3 配置MySQL读写分离 在Node1上执行以下命令: ``` mysql -u root -p # 创建用于复制的用户 create user 'repl'@'%' identified by 'password'; # 授权 grant replication slave on *.* to 'repl'@'%'; # 查看master状态 show master status; ``` 记录下File和Position的值。 在Node2上执行以下命令: ``` mysql -u root -p # 停止slave stop slave; # 删除所有slave信息 reset slave all; # 配置slave change master to master_host='Node1_IP', master_user='repl', master_password='password', master_log_file='File', master_log_pos=Position; # 开启slave start slave; # 查看slave状态 show slave status\G; ``` 2.4 配置keepalived 在Node1和Node2上都要安装keepalived。 在Node1上执行以下命令: ``` vi /etc/keepalived/keepalived.conf # 添加如下内容 ! Configuration File for keepalived global_defs { router_id MySQL_HA } vrrp_script chk_mysql { script "/usr/local/sbin/chk_mysql.sh" interval 2 weight -2 } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 101 virtual_ipaddress { 192.168.0.100/24 dev eth0 label eth0:0 } track_script { chk_mysql } } ``` 在Node2上执行以下命令: ``` vi /etc/keepalived/keepalived.conf # 添加如下内容 ! Configuration File for keepalived global_defs { router_id MySQL_HA } vrrp_script chk_mysql { script "/usr/local/sbin/chk_mysql.sh" interval 2 weight -2 } vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 100 virtual_ipaddress { 192.168.0.100/24 dev eth0 label eth0:0 } track_script { chk_mysql } } ``` 2.5 配置chk_mysql.sh 在Node1和Node2上都要创建chk_mysql.sh文件,并赋予执行权限。 在Node1上执行以下命令: ``` vi /usr/local/sbin/chk_mysql.sh # 添加如下内容 #!/bin/bash if [ $(ps -ef | grep -v grep | grep mysqld | wc -l) -eq 0 ]; then service keepalived stop fi # 赋予执行权限 chmod +x /usr/local/sbin/chk_mysql.sh ``` 在Node2上执行以下命令: ``` vi /usr/local/sbin/chk_mysql.sh # 添加如下内容 #!/bin/bash if [ $(ps -ef | grep -v grep | grep mysqld | wc -l) -eq 0 ]; then service keepalived stop fi # 赋予执行权限 chmod +x /usr/local/sbin/chk_mysql.sh ``` 3. 总结 以上就是MySQL5.7双主互备高可用、读写分离+keepalived实战部署步骤与命令和架构图。通过以上部署,可以实现MySQL高可用、负载均衡、读写分离等功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值