概述
一、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 |
---|---|---|---|---|
1 | test1 | 192.168.0.124 | 3306 | 124 |
2 | test2 | 192.168.0.125 | 3306 | 125 |
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双主架构介绍二、搭建步骤三、常用维护命令所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复