正確配置Mysql5的雙主從


這兩天爲Mysql的主從配置花了不少精力,有兩臺相同的Centos服務器,基礎的LAMP環境是我自己編譯的,所以比較熟悉,由於需要Mysql做主從,一位同事自己配置,但死活配置有問題,我在他的基礎上檢查也重新配置,解決了一些問題,但出現各種問題,最後無法忍受,我直接把之前的重新推倒,自己重新配置。

google、baidu裏很多相關的資料,由於被轉載或其他原因大我存在着問題。最終找到一篇國外的資料,寫是簡單明瞭。我在他的基礎上轉過來留個記錄,以備用。


1、官方的中文版資料(有點長耐心看)
http://dev.mysql.com/doc/refman/5.1/zh/replication.html#replication-intro
基本瞭解Mysql的複製是什麼回事^v^

2、配置Mysql主從(接下來就要開始動手,本文所有操作在Linux下)
   1) 確定主從的Mysql版本要一致。
      查看方法:
      登入Mysql數據庫
      #mysql -u root -p
      輸入密碼Mysql密碼,進入系統。查看Mysql版本。
      select version(); 我的數據庫版本是5.1.57

   2) 準備工作
       首先要做的事情就是要確保每臺服務器上的數據庫,在相同的狀態。
       把主上的數據備份,再導入從,主爲Server A, 從爲Server B。
       Server A command line> mysqldump -u <mysql user> -p -c <database name> > <filename of dump>
       (copy dump file to Server B)
       Server B command line> mysql -u <mysql user> -p<mysql password> -D <database name> < <filename of dump>

   3) 創建從用戶
      接下來要做的事情是建立一個"從用戶"每個兩個服務器上。這些用戶是由MySQL爲從主站的連接,並需要給予特定的特權。
      Creating A Slave User:

      Server MySQL command line> USE mysql;
      Server MySQL command line> INSERT INTO user (Host, User, Password, Select_priv, Reload_priv, Super_priv, Repl_slave_priv) VALUES ('<Hostname/IP>', '<slave user>', password('<slave password>'), 'Y', 'Y', 'Y', 'Y');
      Server MySQL command line> FLUSH PRIVILEGES;

   4) 配置My.cnf
      接下來要做的事情是配置每個MySQL服務器。你需要知道每個服務器的IP地址。

    在每臺服務器上,你需要編輯你的MySQL服務器配置文件(通常稱爲my.cnf或my.ini)。

    下面是需要被添加到服務器A的配置:
    server-id = 1
    replicate-same-server-id = 0
    auto-increment-increment = 2
    auto-increment-offset = 1

    master-host = <IP address of Server B>
    master-user = <slave user>
    master-password = <slave password>
    master-connect-retry = 60
    replicate-do-db = <database name>

    log-bin = /usr/local/mysql/var/server-a.bin # change this to a path/name appropriate to your system
    binlog-do-db = <database name>

    下面是需要被添加到服務器B的配置:
    server-id = 2
    replicate-same-server-id = 0
    auto-increment-increment = 2
    auto-increment-offset = 2

    master-host = <IP address of Server A>
    master-user = <slave user>
    master-password = <slave password>
    master-connect-retry = 60
    replicate-do-db = <database name>

    log-bin= /usr/local/mysql/var/server-b.bin # change this to a path/name appropriate to your system
    binlog-do-db = <database name>

    使您的配置更改後,重新啓動在兩臺服務器。檢查你的MySQL錯誤日誌中的任何問題。

   5) 服務器同步
      在每臺服務器上的MySQL命令行,
      slave stop;
      show master status;





      記錄File與Position,接下在每臺服務器上執行以下命令:
      Server MySQL command line> CHANGE MASTER TO MASTER_HOST='<master's IP>', MASTER_USER='<slave user>', MASTER_PASSWORD='<slave password>', MASTER_LOG_FILE='<master's log file name>', MASTER_LOG_POS=<master's log file position>;

      執行完命令,在兩臺服務器上啓動複製現在應該工作
      START SLAVE

     確認複製工作,兩臺服務器上的"SHOW SLAVE STATUS"命令。無論是"Slave_IO_Running"和"Slave_SQL_Running"應該是"YES"。如果兩者都沒有,您將需要重新設置複製。

   6) 測試

      在Server A中插入一條記錄查看Server B中是否有,如有則設置成功。


原文:http://www.neocodesoftware.com/replication/



發佈了44 篇原創文章 · 獲贊 3 · 訪問量 26萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章