我是靠谱客的博主 矮小宝贝,最近开发中收集的这篇文章主要介绍Mysql之keepalived双主搭建一、keepalived双主架构介绍二、搭建步骤三、常用维护命令,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、keepalived双主架构介绍

1、双主模式简介

  双主模式指两台MySQL互为主从,且两台MySQL均作为主节点对外提供服务,当其中一台MySQL发生故障后,将指向该故障节点的请求快速切换到另外一台MySQL,原来指向非故障节点的请求不受影响。双主模式下两个主库都提供读写服务,如果应用通过两个主库操作相同数据,则会发生冲突导致数据覆盖(使用语句模式复制)或复制异常(使用行模式复制),因此需要对读写服务进行控制:

  • 1、基于自主主键控制,通过设置自增属性auto_increment_offset和auto_increment_increment来控制每个主节点生产不同的自增值,并根据不同自增值访问不同主节点。
  • 2、基于库级别或表级别控制,如应用APP1访问节点node1上的DB1库,而应用APP2访问节点node2上的DB2库,两个主节点间不会操作相同表的数据,因此不会存在事务冲突。

  为保证应用程序使用相同数据库连接配置而不受故障切换影响,常用方案有:

  • VIP,通过vrrpd或keepalived将VIP动态绑定到新主节点
  • 域名,通过切换域名将域名指向新主节点
  • 代理,通过更新代理中存放的路由信息来指向新主节点。

2、keepalived介绍

  Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。在keepalived双主架构中keepalived主要有三个功能:

  • 提供VIP地址给客户端连接使用
  • 执行msyql服务的监控检测
  • 在工作节点出现故障情况下将VIP地址漂移至备节点

二、搭建步骤

0、环境说明

搭建主主环境的系统及软件版本说明,采用GTID+ROW模式搭建主从,两个节点互为主从:

  • 操作系统:centos7.6
  • 数据库:mysql5.7.32
  • keepalived:v1.3.5

1、主主参数规划

序号主机名IP地址服务端口server-id
1test1192.168.0.1243306124
2test2192.168.0.1253306125

2、mysql软件安装

分别在两个节点上安装mysql,安装步骤参照博文:Mysql之rpm方式安装

3、修改my.cnf,添加主从复制配置

  • test1节点

[root@test1 opt]# vim /etc/my.cnf
添加如下配置后保存退出
#GTID配置
server-id=124
log_bin=mysql-bin
log_slave_updates=1
gtid_mode=on
enforce_gtid_consistency=on
binlog_format=row

  • test2节点

[root@test2 opt]# vim /etc/my.cnf
添加如下配置后保存退出
#GTID配置
server-id=125
log_bin=mysql-bin
log_slave_updates=1
gtid_mode=on
enforce_gtid_consistency=on
binlog_format=row

4、test1节点上创建复制账号

mysql> create user replbak@’%’ identified by ‘Test!123’;
grant replication slave on . to replbak@’%’;Query OK, 0 rows affected (0.01 sec)

mysql> grant replication slave on . to replbak@’%’;
Query OK, 0 rows affected (0.00 sec)

5、备份test1节点数据库

说明:如果两个节点均为刚完成初始化安装的数据库,可以跳过第5步和第6步。

[root@test1 tmp]# mysqldump --single-transaction -uroot -p --master-data=2 --set-gtid-purged=OFF -A > all.sql
Enter password:

6、在test2节点还原test1备份文件

[root@test2 tmp]# scp 192.168.0.124:/tmp/all.sql ./
root@192.168.0.124’s password:
all.sql
[root@test2 tmp]# mysql -uroot -p < all.sql

7、在test2上配置主从并启动slave

mysql> change master to
-> MASTER_HOST=‘192.168.0.124’,
-> MASTER_USER=‘replbak’,
-> MASTER_PASSWORD=‘Test!123’,
-> MASTER_PORT=3306,
-> master_auto_position=1;
Query OK, 0 rows affected, 2 warnings (0.01 sec)

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

8、在test1上配置主从并启动slave

mysql> change master to
-> MASTER_HOST=‘192.168.0.125’,
-> MASTER_USER=‘replbak’,
-> MASTER_PASSWORD=‘Test!123’,
-> MASTER_PORT=3306,
-> master_auto_position=1;
Query OK, 0 rows affected, 2 warnings (0.01 sec)

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

9、检查双主状态

  • test1节点

mysql> show slave hosts;
±----------±-----±-----±----------±-------------------------------------+
| Server_id | Host | Port | Master_id | Slave_UUID |
±----------±-----±-----±----------±-------------------------------------+
| 125 | | 3306 | 124 | 4eed3c50-77dc-11eb-aa99-000c2964c7fe |
±----------±-----±-----±----------±-------------------------------------+
1 row in set (0.00 sec)

  • test2节点

mysql> show slave hosts;
±----------±-----±-----±----------±-------------------------------------+
| Server_id | Host | Port | Master_id | Slave_UUID |
±----------±-----±-----±----------±-------------------------------------+
| 124 | | 3306 | 125 | 47200ff0-77dc-11eb-b87f-000c290b9fa0 |
±----------±-----±-----±----------±-------------------------------------+
1 row in set (0.00 sec)

10、配置keepalived

配置步骤参照博文:Linux之keepalived安装及配置

11、访问VIP验证

1)、创建一个测试账户及测试库

mysql> create user dba@‘192.168.0.%’ identified by ‘Test!123’;
Query OK, 0 rows affected (0.00 sec)

mysql> grant all privileges on . to dba@‘192.168.0.%’;
Query OK, 0 rows affected (0.00 sec)

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

mysql> create database test1;
Query OK, 1 row affected (0.00 sec)

2)、通过客户端连接VIP地址验证

使用客户端连接mysql VIP地址.在这里插入图片描述

3)、创建一张新表

在这里插入图片描述

4)、在test2节点查看t1表结构

在这里插入图片描述

12、切换工作主机验证

1)、模拟工作节点宕机

[root@test1 tmp]# systemctl stop mysqld

2)、检查VIP地址漂移情况

在这里插入图片描述

3)、连接VIP地址验证

连接VIP地址192.168.0.128,往t1表中插入3条记录。
在这里插入图片描述

4)、登录test2节点查看

[root@test2 tmp]# mysql -uroot -p -e ‘select * from test1.t1’
Enter password:
±—±---------±-----+
| id | name | age |
±—±---------±-----+
| 1 | wuhs | 33 |
| 2 | sunru | 33 |
| 3 | zhangsan | 28 |
±—±---------±-----+

三、常用维护命令

1、shell命令

  • ip addr 检查主机IP地址
  • systemctl status keepalived 查看keepalived状态
  • systemctl status mysqld 查看mysqld服务状态

2、mysql命令

  • show slave hosts 查看从节点信息
  • show slave statusG 查看slave状态
  • show master status 查看master状态
  • change master to 配置主从复制

最后

以上就是矮小宝贝为你收集整理的Mysql之keepalived双主搭建一、keepalived双主架构介绍二、搭建步骤三、常用维护命令的全部内容,希望文章能够帮你解决Mysql之keepalived双主搭建一、keepalived双主架构介绍二、搭建步骤三、常用维护命令所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部