目錄
前言
一、mysql設定檔
(1)節點A設定
(2)節點B設定
二、配置節點A為節點B的master(主從模式)
三、完成雙主配置
四、測試
五、控制同步的函式庫或表格
首頁 資料庫 mysql教程 Mysql雙主如何配置

Mysql雙主如何配置

May 26, 2023 pm 01:04 PM
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(主從模式)

    節點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中文網其他相關文章!

    本網站聲明
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

    熱AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智慧驅動的應用程序,用於創建逼真的裸體照片

    AI Clothes Remover

    AI Clothes Remover

    用於從照片中去除衣服的線上人工智慧工具。

    Undress AI Tool

    Undress AI Tool

    免費脫衣圖片

    Clothoff.io

    Clothoff.io

    AI脫衣器

    Video Face Swap

    Video Face Swap

    使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

    熱工具

    記事本++7.3.1

    記事本++7.3.1

    好用且免費的程式碼編輯器

    SublimeText3漢化版

    SublimeText3漢化版

    中文版,非常好用

    禪工作室 13.0.1

    禪工作室 13.0.1

    強大的PHP整合開發環境

    Dreamweaver CS6

    Dreamweaver CS6

    視覺化網頁開發工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神級程式碼編輯軟體(SublimeText3)

    phpmyadmin怎麼打開 phpmyadmin怎麼打開 Apr 10, 2025 pm 10:51 PM

    可以通過以下步驟打開 phpMyAdmin:1. 登錄網站控制面板;2. 找到並點擊 phpMyAdmin 圖標;3. 輸入 MySQL 憑據;4. 點擊 "登錄"。

    MySQL:世界上最受歡迎的數據庫的簡介 MySQL:世界上最受歡迎的數據庫的簡介 Apr 12, 2025 am 12:18 AM

    MySQL是一種開源的關係型數據庫管理系統,主要用於快速、可靠地存儲和檢索數據。其工作原理包括客戶端請求、查詢解析、執行查詢和返回結果。使用示例包括創建表、插入和查詢數據,以及高級功能如JOIN操作。常見錯誤涉及SQL語法、數據類型和權限問題,優化建議包括使用索引、優化查詢和分錶分區。

    MySQL的位置:數據庫和編程 MySQL的位置:數據庫和編程 Apr 13, 2025 am 12:18 AM

    MySQL在數據庫和編程中的地位非常重要,它是一個開源的關係型數據庫管理系統,廣泛應用於各種應用場景。 1)MySQL提供高效的數據存儲、組織和檢索功能,支持Web、移動和企業級系統。 2)它使用客戶端-服務器架構,支持多種存儲引擎和索引優化。 3)基本用法包括創建表和插入數據,高級用法涉及多表JOIN和復雜查詢。 4)常見問題如SQL語法錯誤和性能問題可以通過EXPLAIN命令和慢查詢日誌調試。 5)性能優化方法包括合理使用索引、優化查詢和使用緩存,最佳實踐包括使用事務和PreparedStatemen

    為什麼要使用mysql?利益和優勢 為什麼要使用mysql?利益和優勢 Apr 12, 2025 am 12:17 AM

    選擇MySQL的原因是其性能、可靠性、易用性和社區支持。 1.MySQL提供高效的數據存儲和檢索功能,支持多種數據類型和高級查詢操作。 2.採用客戶端-服務器架構和多種存儲引擎,支持事務和查詢優化。 3.易於使用,支持多種操作系統和編程語言。 4.擁有強大的社區支持,提供豐富的資源和解決方案。

    apache怎麼連接數據庫 apache怎麼連接數據庫 Apr 13, 2025 pm 01:03 PM

    Apache 連接數據庫需要以下步驟:安裝數據庫驅動程序。配置 web.xml 文件以創建連接池。創建 JDBC 數據源,指定連接設置。從 Java 代碼中使用 JDBC API 訪問數據庫,包括獲取連接、創建語句、綁定參數、執行查詢或更新以及處理結果。

    docker怎麼啟動mysql docker怎麼啟動mysql Apr 15, 2025 pm 12:09 PM

    在 Docker 中啟動 MySQL 的過程包含以下步驟:拉取 MySQL 鏡像創建並啟動容器,設置根用戶密碼並映射端口驗證連接創建數據庫和用戶授予對數據庫的所有權限

    MySQL的角色:Web應用程序中的數據庫 MySQL的角色:Web應用程序中的數據庫 Apr 17, 2025 am 12:23 AM

    MySQL在Web應用中的主要作用是存儲和管理數據。 1.MySQL高效處理用戶信息、產品目錄和交易記錄等數據。 2.通過SQL查詢,開發者能從數據庫提取信息生成動態內容。 3.MySQL基於客戶端-服務器模型工作,確保查詢速度可接受。

    centos安裝mysql centos安裝mysql Apr 14, 2025 pm 08:09 PM

    在 CentOS 上安裝 MySQL 涉及以下步驟:添加合適的 MySQL yum 源。執行 yum install mysql-server 命令以安裝 MySQL 服務器。使用 mysql_secure_installation 命令進行安全設置,例如設置 root 用戶密碼。根據需要自定義 MySQL 配置文件。調整 MySQL 參數和優化數據庫以提升性能。

    See all articles