MySQL主從(Master-Slave)複製

本文內容主要來源:官方文檔中文版第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;

記錄FilePosition的值(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;

參考:http://yahoon.blog.51cto.com/13184/33231

相關文章
相關標籤/搜索