Mysql双主互备+keeplived高可用架构(部分)
Posted 微小的鱼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql双主互备+keeplived高可用架构(部分)相关的知识,希望对你有一定的参考价值。
一、mysql双主互备+keeplived高可用架构介绍
Mysql主从复制架构可以在很大程度保证Mysql的高可用,在一主多从的架构中还可以利用读写分离将读操作分配到从库中,减轻主库压力。但是在这种架构中,主库出现故障时需要手动将一台从库提升为主库。在对写操作要求较高的环境中,主库故障在主从架构中会成为单点故障。因此需要主主互备架构,避免主节点故障造成写操作失效。
在双主互备的架构中,每台Mysql都充当主服务器,同时充当对方的从服务器。在任意一台服务器上的写操作都会被复制到另一台服务器上,从而保证了数据的可靠性。
在双主互备的基础上加上keeplived,在其中一台机器上绑定虚拟ip(VIP)。利用vip统一对外服务,可以避免在两个节点同时写数据造成冲突。同时当keeplived主节点发生故障时,keeplived会自动将VIP切换到备节点上,从而实现主服务器的高可用。
Mysql双主互备+keeplived高可用架构图
二、Mysql双主互备架构部署
在上一篇Mysql主从复制操作中已经完成了Mysql主从架构的部署。在此基础上,需要在原Master上开启relay-log,在原Slave服务器上开启log-bin,同时在Mysql248上指定Mysql249为自己的主服务器并开启slave即可。
1.开启原Master上的relay-log,指定不复制的库
1
2
3
4
5
6
7
8
9
10
|
[[email protected] 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,指定不复制的库
[[email protected] mysql-5.6.30]# grep -A8 ‘mysqld‘ my.cnf
1
2
3
4
5
6
7
8
9
|
[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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#### ① 在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= ‘123456‘ , -> master_log_file= ‘mysql-bin.000001‘ , -> master_log_pos=493; Query OK, 0 rows affected, 2 warnings (0.02 sec) mysql> start slave; Query OK, 0 rows affected (0.03 sec) |
4.检验双主互备
①通过分别在两台服务器上使用show slave statusG,查询主库信息以及IO进程、SQL进程工作状态。若两台服务器的查询结果都为Slave_IO_Running: Yes,Slave_SQL_Running: Yes;则表示当前双主互备状态正常。
②在Mysql248数据库上建库建表,检查Mysql249上是否同步正常;然后在Mysql249上建库建表,检查Mysql248上是否同步正常。
以上是关于Mysql双主互备+keeplived高可用架构(部分)的主要内容,如果未能解决你的问题,请参考以下文章
Mysql5.7.22+Keepalived双主互备高可用集群