安裝mysql數據庫主從複製,步驟以下:
一、主從服務器分別做如下準備:
1.一、數據庫版本徹底一致
1.二、修改root的密碼, 不改也能夠mysql
二、修改主服務器mastersql
#vi /etc/my.cnf數據庫
[mysqld]
server-id=222 //[必須]服務器惟一ID,默認是1,通常取IP最後一段,方便知道id是多少
log-bin=mysql-bin //[必須]啓用二進制日誌
slave-skip-errors=all //忽略掉一些沒啥大問題的錯誤安全
下面的能夠選配,通常都同步整個庫,包括用戶待,因此能夠不配置:
binlog-do-db=repl // 須要記錄二進制日誌的數據庫,若是有多個數據庫可用逗號分隔,或者使用多個binlog-do-db選項
binlog-ignore-db=mysql //不須要記錄二進制日誌的數據庫,若是有多個數據庫可用逗號分隔,或者使用多個binlog-ignore-db選項
replicate-do-db=repl // 須要同步的數據庫,若是有多個數據庫可用逗號分隔,或者使用多個replicate-do-db選項
replicate-ignore-db=mysql //不須要同步的數據庫,若是有多個數據庫可用逗號分隔,或者使用多個replicate-ignore-db選項
log-slave-updates //這個參數是把更新的記錄寫到二進制文件中,保證slave掛在任何一臺master上都會接收到另外一個master的寫入信息服務器
三、修改從服務器slavespa
#vi /etc/my.cnf日誌
[mysqld]
server-id=226 //[必須]服務器惟一ID
log-bin=mysql-bin //啓用二進制日誌,單向同步不是必須,但雙向同步則是[必須]
slave-skip-errors=all //忽略掉一些沒啥大問題的錯誤server
四、重啓兩臺服務器的mysql進程
五、在主服務器上創建賬戶並受權slaveip
通常不用root賬號,'%'表示全部客戶端都能連,只要賬號,密碼正確,此處可用具體客戶端IP代替,如192.168.1.9,增強安全。
CREATE USER 'myslave'@'%' IDENTIFIED BY 'myslave123';
GRANT REPLICATION SLAVE ON *.* TO 'myslave'@'%';
六、登陸主服務器的mysql,查詢master的狀態,並記下狀態值
6.一、查詢master的狀態前,須要保證在查詢先後服務數據被更改,須要對主服務器增長只讀鎖
mysql>flush tables with read lock;
6.二、增長只讀鎖後,查詢master狀態,記下當前數據狀態的值
mysql>show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 337 | | |
+------------------+----------+--------------+------------------+
注:執行完此步驟後不要再操做主服務器MYSQL,防止主服務器狀態值變化,6.1加鎖也是爲了在6.3步驟備份出該狀態下整個的數據庫
6.三、直接把整個主庫複製一份出來當從庫,並啓動從庫(若是要作雙向同步,一樣須要對從庫加鎖,而且記下其狀態值,數據必須和主庫備份時一致)
七、配置從服務器slave
7.一、配置主服務器信息,注意337數字先後無單引號
mysql>change master to MASTER_HOST='192.168.1.47', MASTER_PORT=3306, MASTER_USER='myslave', MASTER_PASSWORD='myslave123', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=337;
7.二、啓動從服務器複製功能
mysql>start slave;
7.三、檢查從服務器複製功能狀態,大概返回1行數據
mysql> show slave status;
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.1.47 //主服務器地址
Master_User: myslave //受權賬戶名,儘可能避免使用root
Master_Port: 3306 //數據庫端口,部分版本沒有此行
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 337 //#同步讀取二進制日誌的位置,大於等於Exec_Master_Log_Pos
Relay_Log_File: mysql-relay-bin.000002
Relay_Log_Pos: 253
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes //此狀態必須YES
Slave_SQL_Running: Yes //此狀態必須YES
......
注:Slave_IO_Running及Slave_SQL_Running兩個進程都必須是Yes狀態,不然都是錯誤狀態。
八、若是是單向同步,則執行下面步驟結束配置。
8.一、主服務器執行如下命令,用於解開服務器只讀鎖,讓主服務器能夠正常使用
mysql>unlock tables;
九、雙向熱備
9.一、配置雙向同步方法就是在單向同步的基礎上略加改動,即在從機上作主機配置,在主機上作從機配置。
9.二、重複5-8步驟,但主從服務器互換