主從複製包含兩個步驟: 在 master 主服務器(組)上的設置,以及在 slave 從屬服務器(組)上的設置.mysql
配置主服務器 mastersql
若是沒有啓用,則須要 激活二進制日誌.數據庫
給 master 設置惟一的 server_id ,全部的 slave 從屬服務器也要設置 server_id; server_id值能夠是整數型的數字(1 ~ 2^31-1), 在同一個複製組(replicating group)中的每臺服務器的server_id都必須是惟一的.服務器
slave 從屬服務器須要有鏈接並從master複製的權限. 一般是爲每一臺slave 建立一個單獨的用戶(user),而且只授予複製的權限(REPLICATION SLAVE 權限).dom
示例spa
[sql] view plain copy.net
GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'slave_host' IDENTIFIED BY 'bigs3cret'; rest
FLUSH PRIVILEGES; 日誌
須要注意,有一些系統配置選項可能會影響主從複製,查看下面的變量以免發生問題:server
skip-networking,若是 "skip-networking=1",則服務器將限制只能由localhost鏈接,阻止其餘機器遠程連到此服務器上。
bind_address,相似地,若是 服務器只監聽 127.0.0.1(localhost)的TCP/IP鏈接,則遠程的 slave也不能鏈接到此服務器.
配置從屬服務器 slave
給 slave 指定惟一的 server_id. 全部服務器,無論是主服務器,仍是從服務器,都要設置 server_id. server_id值能夠是整數型的數字(1 ~ 2^31-1), 在同一個複製組(replicating group)中的每臺(/個)服務器的server_id都必須是惟一的.
要讓此配置項生效,須要從新啓動服務.
獲取 master 的二進制日誌座標
當查看當前 二進制日誌 的position(位置)時,須要阻止任何數據庫的提交.能夠經過此座標點告訴slave服務器從哪個特定的點開始複製。
在 master上執行命令 "FLUSH TABLES WITH READ LOCK",以強制寫入日誌,並鎖定全部的表 —— 在此期間不能關閉會話,一關閉會話就會釋放鎖.
經過運行 "SHOW MASTER STATUS" 來獲取二進制日誌的當前位置信息.
記下 File 以及 Position 信息. 若是剛剛纔開啓了二進制日誌功能,則爲空.
而後,開始從master 拷貝 data 到 slave,請參考: Backup, Restore and Import
將數據從master拷貝到slave之後,能夠執行"UNLOCK TABLES;"釋放master上的鎖。
[sql] view plain copy
示例以下:
--
SHOW MASTER STATUS;
+--------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------------+----------+--------------+------------------+
| mariadb-bin.000096 | 568 | | |
+--------------------+----------+--------------+------------------+
--
啓動從屬服務器 Slave
數據導入之後,就能夠啓動複製功能了。 經過執行 "CHANGE MASTER TO" 來開始.
確保 "MASTER_LOG_FILE",以及 "MASTER_LOG_POS" 與master早時候記下的信息一致.
示例以下:
[sql] view plain copy
CHANGE MASTER TO
MASTER_HOST='master.domain.com',
MASTER_USER='replication_user',
MASTER_PASSWORD='bigs3cret',
MASTER_PORT=3306,
MASTER_LOG_FILE='mariadb-bin.000096',
MASTER_LOG_POS=568,
MASTER_CONNECT_RETRY=10;
而後,啓動slave
[sql] view plain copy
START SLAVE;
查看 slave狀態:
[sql] view plain copy
SHOW SLAVE STATUS;
若是須要暫停 slave 複製,則可以使用SQL :
[sql] view plain copy
stop slave;
說明: 假如中止 MYSQL(MariaDB),而後從新啓動,則 Slave會隨mysqld 自動啓動.因此不須要擔憂平常的重啓等操做.
[plain] view plain copy
[root@AY13 mysql]# service mysql stop
Shutting down MySQL. SUCCESS!
[root@AY13 mysql]# service mysql start
Starting MySQL.. SUCCESS!
更多問題,歡迎加入QQ羣 《腳本娃娃-桃花島》進行討論,口令: Ext