当前位置:   article > 正文

主主互备_互为主备方案

互为主备方案

一、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)初始化环境

          ①、同步时间

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

          ②、关闭防火墙

  1. systemctl stop firewalls
  2. systemctl disable firewalld

        ③、云主机

  1. ser01:123.60.45.103 server_id=22
  2. ser02123.60.47.78 server_id=33

(2)ser02的配置

①、修改主库配置文件

    

  1. vim /etc/my.cnf
  2. [mysqld]
  3. server_id=33
  4. log-bin=mysql-bin
  5. log-bin-index=master-bin.index
  6. relay-log=relay-log
  7. relay-log-index=relay-log.index

②、重启服务

systemctl restart mysql

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

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

 ④、刷新授权表信息

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

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

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

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

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

(3)ser01上配置

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

  1. vim /etc/my.cnf
  2. [mysqld]
  3. server_id=27
  4. log-bin=mysql-bin
  5. log-bin-index=master-bin.index
  6. relay-log=relay-log
  7. relay-log-index=relay-log.index
  8. [root@cy-ed01-web ~]# systemctl restart mysql

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

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

③、刷新授权表信息

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

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

  1. mysql> show master status;
  2. +------------------+----------+--------------+------------------+-------------------+
  3. | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
  4. +------------------+----------+--------------+------------------+-------------------+
  5. | mysql-bin.000001 | 825 | | | |
  6. +------------------+----------+--------------+------------------+-------------------+
  7. 1 row in set (0.00 sec)
  8. 节点上设置主节点参数
  9. mysql> CHANGE MASTER TO
  10. -> MASTER_HOST='123.60.47.78',
  11. -> MASTER_USER='copy',
  12. -> MASTER_PASSWORD='Lolipop909',
  13. -> MASTER_LOG_FILE='mysql-bin.000001',
  14. -> MASTER_LOG_POS=825;
  15. Query OK, 0 rows affected, 2 warnings (0.05 sec)
  16. mysql> start slave
  17. -> ;
  18. Query OK, 0 rows affected (0.00 sec)

⑤、查看同步状态

mysql> show slave status\G

(4)查看是否同步成功

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/1002138
推荐阅读
相关标签
  

闽ICP备14008679号