為什么要復制數據庫?
簡單來說有以下幾個用處:
1. 讀寫分離
通過MySQL復制可以實現讀寫分離,將讀操作分布到多個不同的服務器上,減輕服務器的壓力。
2. 備份
從庫可以作為數據的異地實時備份。
3. 故障切換
當主庫遇到故障,系統可以切換到從庫,實現故障切換。
4. 升級測試
從庫可作為測試服務器的數據庫。
復制數據的步驟:
- 在主庫上把數據更改記錄到二進制日志(Binary Log)中。
- 備庫將主庫上的日志復制到自己的中繼日志(Relay Log)中。
- 備庫讀取中繼日志中的事件,將其在備庫上重新執行一遍。
具體操作步驟如下:
- 主備兩台服務器安裝相同版本的數據庫,數據庫的初始數據保持一致。
- (主庫)配置同步賬號
- 創建數據庫復制用戶:mysql>CREATE USER 'repl'@'172.16.127.83' IDENTIFIED BY '123456';
- 授權:mysql>grant replication slave on *.* to 'repl'@'172.16.127.83' ;
3.(主庫)修改/etc/my.cnf文件,注意確保:server-
id 唯一
-
server-
id
=1
log-bin=mysql-bin
lower_case_table_names=1(數據表不區分大小寫)
4.(主庫)重啟master端
1. service mysqld restart
5.(主庫)查詢主庫上當前的二進制日志名和偏移量值,記錄下file跟position的值,待會從庫要用
1. mysql>show master status \G
6.(從庫)修改/etc/my.cnf文件,注意確保:server-
id 唯一
-
server-
id
=2
lower_case_table_names=1(數據表不區分大小寫)
7.(從庫)重啟slave端
1. service mysqld restart
8.(從庫)對從數據庫服務器做相應設置,指定復制使用的用戶,主數據庫服務器的IP、端口以及開始執行復制的日志文件和位置等
1. mysql>CHANGE MASTER TO MASTER_HOST='172.16.127.49',MASTER_USER='repl',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000013',MASTER_LOG_POS=156;
9. (從庫)啟動slave線程
1. mysql>start slave;
10. 主庫跟從庫分別檢查狀態
1. 檢查master的:mysql>show processlist\G 結果:看到上面的Command: Binlog Dump說明配置成功!
2.檢查slave的:mysql>show slave status \G 結果:提示:Slave_IO_Running和Slave_SQL_Running兩個值為YES基本上成功了