Linux 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、使用scp命令傳輸資料庫檔案all.sql到從伺服器。

1.#scp /root/all.sql root@www.example.com:/root
7、再次串連資料庫進入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)
8、解鎖資料表。

1.mysql>UNLOCK TABLES;
配置從伺服器(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 ‘root@X.X.X.X: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執行與時間相關的函數將會導致資料不一致

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.