Mysql双主如何配置

    前言

    特点:在双主配置中,两台mysql互为主从节点。节点A和节点B互为主节点。

    安装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(主从模式)

    MySQL双主如何配置从入门到精通!

    节点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.% 六、一个账号多个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

    MySQL双主架构是实现高可用性和负载均衡的常用方案,本文将深入探讨MySQL双主架构如何配置。
    一、同步配置
    同步配置是MySQL双主架构的核心,本文将介绍同步配置的三种方式:主从同步、MHA和Galera Cluster,并比较它们的优缺点,为读者提供选择。
    1.主从同步
    主从同步是最为传统和普遍的同步方式,它比较容易配置和使用,但也存在一些缺陷。本文将详细介绍主从同步的原理和配置方法,以及如何解决主从同步的延迟和故障问题。
    2.MHA
    MHA是一个非常强大的MySQL高可用管理工具,它可以自动监控MySQL主机的状态,并在主机故障时自动切换到备机,从而实现高可用性。本文将详细介绍MHA的原理、安装和配置方法,并介绍如何实现故障转移和恢复。
    3.Galera Cluster
    Galera Cluster是一个开源的MySQL多主同步方案,它能够在多个MySQL节点之间实现同步复制,从而实现负载均衡和高可用性。本文将介绍Galera Cluster的原理、安装和配置方法,并和其他同步方式进行比较,为读者提供更好的选择和参考。
    二、负载均衡配置
    负载均衡是MySQL双主架构的另一个重要方面,本文将介绍三种常见的负载均衡方式:LVS、HAProxy和Nginx,并比较它们的优缺点,为读者提供选择。
    1.LVS
    LVS是一款非常强大和稳定的负载均衡工具,它可以自动检测和分配MySQL节点,从而实现负载均衡。本文将介绍LVS的原理、安装和配置方法,并介绍如何实现故障转移和恢复。
    2.HAProxy
    HAProxy是一个轻量级的负载均衡工具,它简单易用,并能够实现非常高效的负载均衡。本文将介绍HAProxy的原理、安装和配置方法,并介绍如何实现故障转移和恢复。
    3.Nginx
    Nginx是一个非常快速和灵活的Web服务器和负载均衡工具,它可以轻松地实现MySQL负载均衡和高可用性。本文将介绍Nginx的原理、安装和配置方法,并介绍如何实现故障转移和恢复。
    三、安全性配置
    安全性是MySQL双主架构的重要方面,本文将介绍三种常见的安全性配置:SSL、iptables和防火墙策略,并比较它们的优缺点,为读者提供选择。
    1.SSL
    SSL是一种安全协议,可以在传输数据时对数据进行加密和解密,从而保护数据的安全。本文将介绍SSL的原理、安装和配置方法,并介绍如何使用SSL来保护MySQL数据的安全。
    2.iptables
    iptables是一个强大的Linux防火墙工具,可以通过配置规则来限制对MySQL节点的访问,从而保护MySQL节点的安全。本文将介绍iptables的原理、安装和配置方法,并介绍如何使用iptables来保护MySQL节点的安全。
    3.防火墙策略
    防火墙策略是一种常用的安全措施,可以通过配置规则来限制对MySQL节点的访问,从而保护MySQL节点的安全。本文将介绍防火墙策略的原理、安装和配置方法,并介绍如何使用防火墙策略来保护MySQL节点的安全。
    通过本文的介绍和比较,读者可以了解MySQL双主架构的全貌和配置方法,并选择最适合自己的同步、负载均衡和安全性配置方案,从而实现高可用性和负载均衡的MySQL双主架构。