log_bin = mysql-bin
server_id = 107
注意,下面的參數不能再使用了,否則導致mysql無法啟動
master-host = 10.1.68.110
master-user = backup
master-password = 1234qwer
master-port = 3306
</td>
</tr>
</tbody>
</table>
1. 登錄主服務器的mysql,查詢master的狀態
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000002 | 120 | cacti | mysql | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
注:執行完此步驟后不要再操作主服務器MYSQL,防止主服務器狀態值變化
2. 登錄從mysql服務器,配置binary log文件和Position(其實就是主的binary log文件的大小)與主一致。
mysql> change master to master_host='192.168.123.75',master_user='mysync',master_password='123456',master_log_file='mysql-bin.000002',master_log_pos=120;
Query OK, 0 rows affected, 2 warnings (0.02 sec)
mysql> start slave;
Query OK, 0 rows affected (0.01 sec)
3. 查看從mysql服務器的狀態
mysql> show slave status;
重點是查看 Slave_IO_Running | Slave_SQL_Running
如果出現的結果是Yes | Yes
說明mysql主從配置成功完成了。
2.4 測試主從服務器同步
1. 將備份后的數據庫導入到主mysql服務器中,查看從mysql服務器是否會同步。
# bin/mysql < /root/cacti_sql_bak
2. 查看從mysql服務器的數據庫是否有更新
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| cacti |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.01 sec)
從上面看到主mysql服務器的數據庫還未全部導入完成,從mysql服務器已經開始同步了。
3 FAQ
3.1 若show slave status命令的結果查看正常,卻依然無法看到同步的數據庫,原因在哪?
mysql> show slave status; 執行后部分結果如下
Slave_IO_State:Waiting for master to send event
Slave_IO_Running:Yes
Slave_SQL_Running:Yes
查看數據庫卻依然無法同步,原因在哪里?
解決辦法:
1) 嘗試重啟master數據庫;
2) 在重啟slave數據庫之前,必須先刪除data目錄下的master.info文件,因為master.info記錄了上次要連接主庫的信息,如果不刪除,即使my.cnf里進行了修改,手動修改Position(偏移量)也還是同步不了,因為讀取的還是偏移量出錯時的master.info文件信息。
# rm -f data/master.info
# support-files/mysql.server start
Starting MySQL. [ OK ]
再次查看slave,同步終于成功了。
mysql> show processlist;
id|User |Host|db |Command |Time |state
1| system user | | NULL | Connect |1196 | Waiting for master to send event
2 | system user | | NULL | Connect |-55692 | Slave has read all relay log; waiting for the slave I/O thread to
3 | root |localhost|icinga| Query| 0 |NULL | show processlist
3.2 若show slave status命令的結果出現下面的異常情況,如何解決?
執行mysql> show slave status;命令,看到下面的顯示結果
Slave_IO_Running:Connecting
Slave_SQL_Running:Yes
看到上面的問題,說明是從服務器無法正常連接到主服務器導致。原因一般和下面幾種情況有關:
l Iptables防護墻阻止了3306端口
l 主mysql服務器的grant授權命令有誤
l 主mysql服務器的監聽端口不是0.0.0.0:3306,導致別的服務器無法連接到主mysql
解決辦法:
首先,關閉了iptables;
然后,檢查主mysql服務器的grant授權命令,正確無誤,這一點排除。
其次,查看主mysql的監聽端口,默認是:::3306,不知道是否因為這個問題導致
修改主服務器的my.cnf文件,添加下面語句
bind-address = 0.0.0.0
重啟mysq.server服務
再次netstat –an|more 查看3306端口,出現了0.0.0.0:3306,說明修改成功。
登錄到從mysql服務器上,遠程連接
# bin/mysql -h 192.168.123.75 -umysync -p123456
Your MySQL connection id is 8
Server version: 5.6.10-log Source distribution
mysql>
連接成功。
最后重新執行主從操作:
主mysql服務器:mysql> show master status;
從mysql服務器:mysql> stop slave;
從mysql服務器:mysql> change master to……;
從mysql服務器:mysql> start slave;
從mysql服務器:mysql> show slave status;
Slave_IO_Running:Yes
Slave_SQL_Running:Yes
再次測試主從同步,成功。
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!
|