MySQL主從複製(Replication)(MySQL資料同步)配置

來源:互聯網
上載者:User

標籤:


MySQL是開源的關係型資料庫系統。複製(Replication)是從一台MySQL資料庫伺服器(主伺服器master)複製資料到另一個伺服器(從伺服器slave)的一個進程。

配置主伺服器(master)

1、編輯資料庫設定檔my.cnf,一般在/etc/目錄下。

  1. #vi /etc/my.cnf

在[mysqld]的下面加入下面代碼:

  1. log-bin=mysql-bin
  2. server-id=1
  3. innodb_flush_log_at_trx_commit=1
  4. sync_binlog=1
  5. binlog-do-db=wordpress
  6. binlog_ignore_db=mysql

server-id=1中的1可以任定義,只要是唯一的就行。
binlog-do-db=wordpress是表示只備份wordpress。
binlog_ignore_db=mysql表示忽略備份mysql。
不加binlog-do-db和binlog_ignore_db,那就表示備份全部資料庫。
2、然後重啟MySQL:

  1. #service mysqld restart

3、登入MySQL伺服器。

  1. #mysql -uroot -p

在主伺服器建立一個使用者賦予“REPLICATION SLAVE”的許可權。你不需要再賦予其它的許可權。在下面的命令,把X.X.X.X替換為從伺服器的IP。

  1. mysql>CREATE USER ‘user‘@‘X.X.X.X‘ IDENTIFIED BY ‘password‘;
  2. mysql>GRANT REPLICATION SLAVE ON *.* TO ‘user‘@‘X.X.X.X‘ IDENTIFIED BY ‘password‘;

4、執行以下命令鎖定資料庫以防止寫入資料。

  1. mysql>FLUSH TABLES WITH READ LOCK;

這時不要退出mysql命令列,因為退出命令列後,全域表鎖就失效,新開一個視窗繼續執行以下命令。
5、匯出資料庫

  1. #mysqldump -u root -p123456 --all-databases > /root/all.sql

6、再次串連資料庫進入mysql命令列查看master狀態。

  1. mysql>SHOW MASTER STATUS;

請記下顯示的資訊,配置從伺服器會用到。
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 | 1001741 | dbispconfig | mysql |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
7、解鎖資料表。

  1. mysql>UNLOCK TABLES;

8、使用scp命令傳輸資料庫檔案all.sql到從伺服器。

  1. #scp /root/all.sql [email protected]:/root
配置從伺服器(slave)

登入從伺服器。
1、匯入主伺服器的資料庫。

  1. #mysql -u root -p123456 < /root/all.sql

2、編輯設定檔my.cnf,在[mysqld]下面加入:

  1. server-id=2

2可以自己定義,只要保證唯一的就行。
3、儲存檔案並重啟mysqld。

  1. #service mysqld restart

4、登入mysql伺服器,執行以下命令。

  1. mysql>CHANGE MASTER TO
  2. MASTER_HOST=‘X.X.X.X‘,
  3. MASTER_USER=‘user‘,
  4. MASTER_PASSWORD=‘password‘,
  5. MASTER_PORT=3306,
  6. MASTER_LOG_FILE=‘mysql-bin.000001‘,
  7. MASTER_LOG_POS=98,
  8. MASTER_CONNECT_RETRY=10;

MASTER_HOST:主伺服器的IP。
MASTER_USER:配置主伺服器時建立的使用者名稱
MASTER_PASSWORD:使用者密碼
MASTER_PORT:主伺服器mysql連接埠,如果未曾修改,預設即可。
5、啟動slave進程。

  1. mysql>START SLAVE;

6、查看mysql的日誌,一般在/var/log/目錄下,如果啟動成功,你應該會看到類似下面的日誌。
091104 8:42:02 [Note] Slave I/O thread: connected to master ‘[email protected]:3306?, replication started in log ‘mysql-bin.000001? at position 98
現在主伺服器和從伺服器已經配置好了。另外你可能需要設定主伺服器的資料庫二進位日誌的到期時間,可以在設定檔中使用參數expire_logs_days來設定。

檢查是否正常運行

1、在主伺服器上執行SHOW MASTER STATUS,如果已經記錄,Position應為非零。如果沒有記錄,確認正用log-bin和server-id選項運行主伺服器。
2、在從伺服器上執行SHOWSHOW SLAVE STATUS,檢查是否slave_IO_Running和slave_SQL_Running的值均為Yes。如果不是,驗證當啟動從伺服器時使用的選項。
3、 如果從伺服器正在運行,建立了與主伺服器的串連嗎?使用SHOW PROCESSLIST,找出I/O和SQL線程並檢查它們的State列看它們如何顯示。如果I/O線程狀態為Connecting to master,驗證主伺服器上複製使用者的許可權、主伺服器主機名稱、DNS設定,是否主伺服器真正在運行,以及是否可以從從屬伺服器訪問。

需要注意的問題

1、主伺服器與從伺服器的時區必須一致,否則mysql執行與時間相關的函數將會導致資料不一致。

MySQL主從複製(Replication)(MySQL資料同步)配置

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.