配置思路
1. 修改master和slave的配置檔案,使用二進位制日誌,指定serverid
目的是讓各自都有了自己的唯一標示,並以二進位制檔案格式進行交流
2. master中建立授權使用者,檢視二進位制日誌檔名,及最新位置
讓slave知道用哪個使用者資訊訪問master,知道讀取哪個日誌檔案,及從哪兒開始讀
3. slave中使用被授權使用者資訊及日誌檔案資訊,進行指向master
這時已經建立了和master的聯絡,明確了從哪兒讀取日誌檔案
3. 執行啟動slave的命令,開始主從複製,並檢視複製狀態資訊
準備條件
停止對master資料庫的操作
把master中的資料庫全部匯入到slave,使兩邊資料庫完全一致
配置步驟
1. 修改配置檔案 my.cnf
master:
[mysqld]
log-bin=mysql-bin //[必須]啟用二進位制日誌
server-id=222 //[必須]伺服器唯一ID,預設是1,一般取IP最後一段
slave:
log-bin=mysql-bin
server-id=226
2. 重新啟動兩臺伺服器的mysql
3. master建立授權使用者
登陸主伺服器mysql命令列,建立一個用於從伺服器複製的使用者
mysql>GRANT REPLICATION SLAVE ON *.* to "使用者名稱"@"%" identified by "密碼";
"*.*"表示對所有庫的所有操作,“%”表示所有客戶端都可能連,也可用具體客戶端IP代替,如192.168.145.226,加強安全
4. 檢視master狀態
登陸主伺服器mysql命令列
mysql>show master status;
+-------------------------+----------+
| File | Position |
| mysql-bin.000002 | 1308 |
mysql-bin.000004 是用於主從複製的檔名
1308 是日誌檔案內的最新位置
5. slave指向master
登陸從伺服器mysql命令列,使用之前建立的使用者和master的日誌檔案及其位置
mysql>change master to master_host="master ip",master_user="使用者名稱",master_password="密碼",
master_log_file="mysql-bin.000002",master_log_pos=1308; //注意不要斷開,“1308”無單引號。
6. 啟動slave
mysql>start slave;
7. 檢視slave狀態
mysql> show slave status\G;
結果中有兩個重要資料項:
常見的問題是SQL執行緒沒有正常工作 Slave_SQL_Running: No
通常是兩邊的資料庫不是完全對應的,需要確保master上的庫及到目前為止的最新記錄都複製到slave上了
8. 測試
1) Slave_IO_Running: Yes
IO執行緒狀態,必須YES
2) Slave_SQL_Running: Yes
SQL執行緒狀態,必須YES
配置思路
1. 修改master和slave的配置檔案,使用二進位制日誌,指定serverid
目的是讓各自都有了自己的唯一標示,並以二進位制檔案格式進行交流
2. master中建立授權使用者,檢視二進位制日誌檔名,及最新位置
讓slave知道用哪個使用者資訊訪問master,知道讀取哪個日誌檔案,及從哪兒開始讀
3. slave中使用被授權使用者資訊及日誌檔案資訊,進行指向master
這時已經建立了和master的聯絡,明確了從哪兒讀取日誌檔案
3. 執行啟動slave的命令,開始主從複製,並檢視複製狀態資訊
準備條件
停止對master資料庫的操作
把master中的資料庫全部匯入到slave,使兩邊資料庫完全一致
配置步驟
1. 修改配置檔案 my.cnf
master:
[mysqld]
log-bin=mysql-bin //[必須]啟用二進位制日誌
server-id=222 //[必須]伺服器唯一ID,預設是1,一般取IP最後一段
slave:
[mysqld]
log-bin=mysql-bin
server-id=226
2. 重新啟動兩臺伺服器的mysql
3. master建立授權使用者
登陸主伺服器mysql命令列,建立一個用於從伺服器複製的使用者
mysql>GRANT REPLICATION SLAVE ON *.* to "使用者名稱"@"%" identified by "密碼";
"*.*"表示對所有庫的所有操作,“%”表示所有客戶端都可能連,也可用具體客戶端IP代替,如192.168.145.226,加強安全
4. 檢視master狀態
登陸主伺服器mysql命令列
mysql>show master status;
+-------------------------+----------+
| File | Position |
+-------------------------+----------+
| mysql-bin.000002 | 1308 |
+-------------------------+----------+
mysql-bin.000004 是用於主從複製的檔名
1308 是日誌檔案內的最新位置
5. slave指向master
登陸從伺服器mysql命令列,使用之前建立的使用者和master的日誌檔案及其位置
mysql>change master to master_host="master ip",master_user="使用者名稱",master_password="密碼",
master_log_file="mysql-bin.000002",master_log_pos=1308; //注意不要斷開,“1308”無單引號。
6. 啟動slave
mysql>start slave;
7. 檢視slave狀態
mysql> show slave status\G;
結果中有兩個重要資料項:
常見的問題是SQL執行緒沒有正常工作 Slave_SQL_Running: No
通常是兩邊的資料庫不是完全對應的,需要確保master上的庫及到目前為止的最新記錄都複製到slave上了
8. 測試
1) Slave_IO_Running: Yes
IO執行緒狀態,必須YES
2) Slave_SQL_Running: Yes
SQL執行緒狀態,必須YES