首頁  >  文章  >  資料庫  >  Mysql雙主如何配置

Mysql雙主如何配置

WBOY
WBOY轉載
2023-05-26 13:04:313274瀏覽

    前言

    特點:在雙主配置中,兩台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(主從模式)

    節點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              1     設定需要忽略的複製資料庫 
            replicate-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雙主如何配置的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    陳述:
    本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除