本文內容主要來源:官方文檔中文版第6章「MySQL中的複製」。本文只記錄配置要點。 html
1.主數據庫配置(一般在/etc/my.cnf): mysql
在[mysqld]中加入如下幾條配置: sql
server-id=1(爲任意值) shell
log-bin=mysql-bin 數據庫
binlog_do_db=你要複製的數據庫(其實是要作二進制日誌的數據庫) 服務器
binlog_ignore_db=mysql(要忽略的數據庫) dom
重啓MySQL服務器後進入client,建立數據庫用戶以便「從數據庫」鏈接: spa
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';(用戶名、密碼以及從服務器主機地址可自定義)
而後刷新讀寫緩衝區並鎖定表讀寫操做: 線程
FLUSH TABLES WITH READ LOCK;這個時候再另外鏈接到主機shell(不要關閉當前MySQL鏈接,不然鎖定會解除),開始複製數據庫到從數據庫(事先要建立同名數據庫,也能夠使用「 mysqladmin -h 從服務器地址 create 數據庫名」進行建立):
mysqldump --opt 要複製的數據庫 -p主數據庫root密碼 -R -B | mysql -h從服務器地址 要複製的數據庫名 -p從數據庫root密碼 日誌
複製完後,再切換到MySQL client執行:
SHOW MASTER STATUS;
記錄File和Position的值(binlog的位置),留待後用。接着執行:
UNLOCK TABLES;
如今能夠切換到從服務器shell。
2.從服務器配置,數據庫配置文件:
一樣在my.cnf文件中加入:
server-id=1(爲任意值,但不能與主數據庫值或其它從數據庫值相同)
而後鏈接client,執行以下命令:
CHANGE MASTER TO MASTER_HOST='主數據庫地址',MASTER_USER='repl',MASTER_PASSWORD='slavepass', MASTER_LOG_FILE='mysql-bin.000024',MASTER_LOG_POS=87167417;
最後的「MASTER_LOG_FILE」和「MASTER_LOG_POS」就是剛纔在主機記錄的數據。
最後執行命令啓動從數據庫複製線程:
start slave;或
slave start;