主主互备

一、MYSQL双主架构方案

(1)两台mysql都可读写,互为主备,默认只使用一台(masterA)负责数据的写入,另一台(masterB)备用;

  (2)masterA与masterB互为主从,即masterA是masterB的主库,masterB是masterA的主库。

(3)两台主库之间作高可用,可以采用keepalived等方案(使用VIP对外提供服务)。

(4)所有提供服务的从服务器与masterB进行主从同步(双主多从)。

(5)建议采用高可用策略的时候,masterA或masterB均不因宕机恢复后而抢占VIP(非抢占模式)

二、优点

 这样做在一定程度上保证主库的高可用,在一台主库down掉后,可以在极短的时间内切换到另一台主库上(尽量减少主库宕机对业务造成的影响),减少了主从同步对线上主库带来的压力。

三、缺点

1、masterB可能会一直处于空闲状态(可以用它当从库,负责部分查询)

2、主库后面提供服务的从库要等masterB先同步完数据后才能去masterB上取同步数据,这样可能会造成一定程度的同步延迟。

四、架构图

 

五、MYSQL主主同步配置

(1)初始化环境

          ①、同步时间

yum -y install ntp ntpdate
ntpdate cn.pool.ntp.org
hwclock --systohc

          ②、关闭防火墙

systemctl stop firewalls
systemctl disable firewalld

        ③、云主机

ser01:123.60.45.103 server_id=22
ser02:123.60.47.78 server_id=33

(2)ser02的配置

①、修改主库配置文件

    

vim /etc/my.cnf
[mysqld] 
server_id=33
log-bin=mysql-bin
log-bin-index=master-bin.index
relay-log=relay-log
relay-log-index=relay-log.index 

②、重启服务

systemctl restart mysql

③、创建一个用于数据库连接的用户

mysql> create user 'copy'@'%' identified with mysql_native_password by 'Lolipop909'; 
Query OK, 0 rows affected (0.01 sec)
mysql> grant replication slave on *.* to 'copy'@'%';
Query OK, 0 rows affected (0.01 sec)

 ④、刷新授权表信息

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

⑤、获取主节点的binary log 文件名和位置

mysql> show master status; #(ser01上运行)
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      825 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.01 sec)

⑥、节点上设置主节点参数

mysql> CHANGE MASTER TO
    -> MASTER_HOST='123.60.45.103',
    -> MASTER_USER='COPY',
    -> MASTER_PASSWORD='Lolipop909',
    -> MASTER_LOG_FILE='binlog.000002',
    -> MASTER_LOG_POS=155;
Query OK, 0 rows affected, 2 warnings (0.02 sec)  #配置信息均为ser01

(3)ser01上配置

①、修改配置文件并重新启动

vim /etc/my.cnf
[mysqld] 
server_id=27
log-bin=mysql-bin
log-bin-index=master-bin.index
relay-log=relay-log
relay-log-index=relay-log.index
[root@cy-ed01-web ~]# systemctl restart mysql

②、创建一个用于让数据库连接的用户

mysql> create user 'copy'@'%' identified with mysql_native_password by 'Lolipop909'; 
Query OK, 0 rows affected (0.01 sec)
mysql> grant replication slave on *.* to 'copy'@'%';
Query OK, 0 rows affected (0.02 sec)

③、刷新授权表信息

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

④、获取主节点的binary log 文件名和位置

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      825 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

节点上设置主节点参数
mysql> CHANGE MASTER TO
    -> MASTER_HOST='123.60.47.78',
    -> MASTER_USER='copy',
    -> MASTER_PASSWORD='Lolipop909',
    -> MASTER_LOG_FILE='mysql-bin.000001',
    -> MASTER_LOG_POS=825;
Query OK, 0 rows affected, 2 warnings (0.05 sec)

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

⑤、查看同步状态

mysql> show slave status\G

(4)查看是否同步成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值