Mysql双主配置的详细步骤

 更新时间:2022年06月23日 09:29:19   作者:shaunqing  
双主可以在一定程度上保证主库的高可用,在一台主库down掉之后,可以在极短的时间内切换到另一台主库上,减少了主从同步给线上主库带来的压力,这篇文章主要给大家介绍了关于Mysql双主配置的详细步骤,需要的朋友可以参考下

前言

特点:在双主配置中,两台mysql互为主从节点。节点A是节点B的master,同时节点B也是节点A的master。

安装mysql步骤略过

一、mysql配置文件

(1)节点A配置

# 设置server-id,两节点必须不一样
server-id = 100
 
 
# 开启bin_log,模式为ROW,允许最大日志为1G
log_bin = mysql-bin
binlog_format = ROW
max_binlog_size = 1024M
 
 
# mysql5.7的版本不需要配置log-slave-updates=1
# log-slave-updates = 1
 
 
# 实现数据库宕机恢复后,自动同步缺少的数据
relay_log = mysql-relay-bin
 
 
# 设置自增ID初始值为2,每次自增量为2。即都是偶数2,4,6,8,...
auto_increment_offset = 2
auto_increment_increment = 2
 
 
# 开启gtid
gtid_mode = ON
enforce_gtid_consistency = 1
 
 
# 忽略不需要同步的schema
replicate-ignore-db = mysql
replicate-ignore-db = information_schema
replicate-ignore-db = performance_schema
replicate-ignore-db = sys

(2)节点B配置

只列出了与节点A不同的配置

# 设置server-id,两节点必须不一样
server-id = 200
 
# 设置自增ID初始值为1,每次自增量为2。即都是奇数1,3,5,7,...
auto_increment_offset = 1
auto_increment_increment = 2

二、配置节点A为节点B的master(主从模式)

节点A为master,节点B为slave。

(1)登录节点A,创建slave(节点B)使用的账号。

# 在节点A上创建账号repl_user,允许从任意IP访问,密码为slave@100,
grant replication slave on *.* to 'repl_user'@'%' identified by 'slave@100';
flush privileges;

(2)查看节点A的master信息

如下图所属,节点A的bin_log日志为mysql-bin.000001,位置是154

# 清空master信息。初次配置可以使用,若已运行了同步,切记不要使用!
reset master;
 
# 查看master信息
show master status;
 
+------------------+----------+--------------+------------------+---------------------------------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set                           |
+------------------+----------+--------------+------------------+---------------------------------------------+
| mysql-bin.000001 |     154 |              |                  | c2cf218e-2317-11ec-a36f-5cf9dd4fd6a8:1-5    |
+------------------+----------+--------------+------------------+---------------------------------------------+

(3)登录节点B,设置节点B的master为节点A

# 停止节点B上的slave
stop slave;
 
# 将节点B的master设为节点A,以下的配置信息均表示节点A
# MASTER_LOG_FILE和MASTER_LOG_POS,是在第(2)步中查看节点A的master信息
CHANGE MASTER TO 
       MASTER_HOST='127.0.0.1', 
       MASTER_PORT=3307,
       MASTER_USER='repl_user', 
       MASTER_PASSWORD='slave@100', 
       MASTER_LOG_FILE='mysql-bin.000001', 
       MASTER_LOG_POS=154;
 
# 开启节点B上的slave
start slave;

(4)确认节点B的slave是否运行成功。当返回的结果中,Slave_IO_Running和Slave_SQL_Running都为YES时,表示成功。如果为NO或Connecting时,请在mysql的data目录中查看.err结尾的日志文件,找出[ERROR]级别的日志查看。初次配置时,一般都是my.ini配置问题,或同步账号创建问题导致的。

# 在节点B中查看slave状态
show slave status\G;
 
*************************** 1. row ***************************
              Slave_IO_State: Waiting for master to send event
                  Master_Host: 127.0.0.1
                  Master_User: repl_user
                  Master_Port: 3307
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 2207
               Relay_Log_File: mysql-relay-bin.000002
                Relay_Log_Pos: 1143
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
                           ......

(5)若slave配置出现异常,可使用以下语句重置

reset slave all;

三、完成双主配置

        此时,已成功配置了节点A与节点B的主从模式,即节点A是节点B的master。接下来重复步骤三的操作,但是节点A、B的操作要颠倒过来,即在节点B上创建同步账号,查看master信息,在节点A上设置节点B为master。配置完成后,同样查看节点A的slave状态,Slave_IO_Running和Slave_SQL_Running是否都为YES。

四、测试

在节点A添加、删除schema或表或数据,在节点B中查看是否有正确同步。

测试自增主键,分别在节点A、B上添加自增主键的数据,与配置文件是否对应。一个为奇数,一个为偶数。增加或删除数据,主键是否会出现冲突的情况。

五、控制同步的库或表

通过修改my.ini实现

(1)在master端控制

        binlog-do-db            binlog日志记录的数据库(多数据库用,隔开)

        binlog-ignore-db      binlog日志中忽略数据库(多数据库用,隔开)

只有在binlog中记录的表,才能同步给从库

# binlog中记录这两个表
binlog-do-db=db_1,db_2      
 
# binlog中不记录这两个表 
binlog-ignore-db=db_3,db_4  

  (2)在slave端控制

        replicate-do-db                  设定需要复制的数据库
        replicate-ignore-db            设定需要忽略的复制数据库 
        replicate-do-table              设定需要复制的表
        replicate-ignore-table        设定需要忽略的复制表 
        replicate-wild-do-table       同replication-do-table功能一样,可以通配符
        replicate-wild-ignore-table 同replication-ignore-table功能一样,可以加通配符

        注:忽略的配置里,在从库的relaylog中仍有信息,只是没有执行同步。

# 执行同步的库
replicate-do-db=db_1
replicate-do-db=db_2
 
# 忽略同步的库
replicate-ignore-db=db_3
 
# 执行同步的表
replicate-do-table=db_1.table_a
replicate-do-table=db_2.table_b
 
# 忽略同步的表
replicate-ignore-table=db_2.table_c
 
# 只复制哪个库的哪个表
replicate-wild-do-table=db_4.% 
 
# 忽略哪个库的哪个表
replicate-wild-ignore-table=mysql.%   

第五部分引用自CSDN博主「Mr. Sun_」的原创文章

原文链接:https://www.jb51.net/article/252656.htm

六、一个账号多个IP

       当一台mysql作为主节点,N台作为从节点时,如果每个从节点都添加一个账号会非常繁琐。此时可以在主节点中,创建一个账号,给此账号设置多个IP,从而减少添加的账号个数。

具体做法是,将创建账号的语句执行多次,每次的IP不同即可。

# 创建一个账号名,为此账号设置多个ip
grant replication slave on *.* to 'repl_user'@'192.168.5.10' identified by 'slave@100';
grant replication slave on *.* to 'repl_user'@'192.168.5.20' identified by 'slave@100';
FLUSH PRIVILEGES

第六部分引用自CSDN博主「rucypli」的回答

mysql grant 多个ip-CSDN论坛

总结

到此这篇关于Mysql双主配置的文章就介绍到这了,更多相关Mysql双主配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • Mysql 用户权限管理实现

    Mysql 用户权限管理实现

    MySQL 是一个多用户数据库,具有功能强大的访问控制系统,可以为不同用户指定不同权限。本文就来介绍一下Mysql 用户权限管理实现,感兴趣的可以了解一下
    2021-05-05
  • php mysql insert into 结合详解及实例代码

    php mysql insert into 结合详解及实例代码

    在mysql中如果要保存数据到数据库我们就会用到insert into命令了,下面我来给大家介绍mysql insert into几种常用的使用方法,需要的朋友可以参考下
    2016-11-11
  • MySQL中datetime时间字段的四舍五入操作

    MySQL中datetime时间字段的四舍五入操作

    这是由一则生产环境问题引出的MySQL对于datetime时间类型字段中毫秒的处理的深究,这篇文章主要给大家介绍了关于MySQL中datetime时间字段的四舍五入操作的相关资料,需要的朋友可以参考下
    2021-09-09
  • Mysql中的concat函数(拼接函数)详解

    Mysql中的concat函数(拼接函数)详解

    很多时候,我们需要将不同地方获得的字符串拼接在一起,此时就需要使用CONCAT和CONCAT_WS函数,这篇文章主要介绍了Mysql中的concat函数(拼接函数),需要的朋友可以参考下
    2023-02-02
  • 深入理解MySQL varchar(50)

    深入理解MySQL varchar(50)

    日常开发中,数据库建表是必不可少的一个环节,建表的时候通常会看到设定某个字段的长度为varchar(50),那么你知道是什么意思吗,感兴趣的可以了解一下
    2024-01-01
  • mysql unix准换时间格式查找指定日期数据代码

    mysql unix准换时间格式查找指定日期数据代码

    这篇文章主要介绍了mysql unix准换时间格式查找指定日期数据,需要的朋友可以参考下
    2014-03-03
  • 如何解决MySQL安装遇到Start service红叉问题

    如何解决MySQL安装遇到Start service红叉问题

    在安装MySQL时,若遇到StartService步骤打红叉无法继续,可通过计算机管理以管理员身份运行服务,找到MySQL服务,更改为本地系统账户登录,解决安装问题,此方法为实际操作经验,可供参考,确保安装顺利完成
    2024-10-10
  • 新手必备之MySQL msi版本下载安装图文详细教程

    新手必备之MySQL msi版本下载安装图文详细教程

    今天教大家怎么下载安装MySQL msi版本,文中有非常详细的图文解说,对不会下载安装mysql的小伙伴们很有帮助,需要的朋友可以参考下
    2021-05-05
  • MySQL索引使用说明(单列索引和多列索引)

    MySQL索引使用说明(单列索引和多列索引)

    这篇文章主要讨论MySQL选择索引时单列单列索引和多列索引使用,以及多列索引的最左前缀原则,需要的朋友可以参考下
    2018-01-01
  • 跟着hsp一步步学mysql优化的方法

    跟着hsp一步步学mysql优化的方法

    本篇文章小编为大家介绍,跟着hsp一步步学mysql优化的方法。需要的朋友参考下
    2013-04-04

最新评论