在此不在贅述如何安裝mysql數據庫,只說它的主從複製,按以下步驟執行:
環境說明:
準備兩臺linux(虛擬)主機
Linux版本CentOS7、MySQL 5.6.17(mysql版本要一致)
IP地址分別為:192.168.1.1、192.168.1.2
創建複製賬號
mysql會賦予一些特殊的權限給複製線程,因此必須在主庫創建一個用戶,並賦予其合適的權限,備庫I/O線程以該用戶名連接到主庫並取其二進制日誌。
在192.168.1.1 中創建一個192.168.1.2主機中可以登錄的MySQL用戶,並調用flush privileges刷新權限。
//192.168.1.1 : 主數據庫服務器:
mysql>GRANT REPLICATION SLAVE ON *.* TO 'fuzhi'@'192.168.1.2' IDENTIFIED BY 'fuzhi';mysql>FLUSH PRIVILEGES;
注意:這個賬號限制在本地並且只有192.168.1.2這個主機可以訪問,因為這是一個特殊權限的賬號(儘管這個賬號無法執行select或者update),但是任然能從二進制日誌中獲取一些數據
配置主庫和備庫
MySQL配置文件都在: /etc/my.cnf
1.在主庫的
my.cnf
文件的
[mysqld]
下添加:log-bin,server_id(具體如下:)
log-bin=mysql-bin # 開啟二進制日誌server_id=10 # 0-232任取 但必須和其他數據庫中的不同 (必須唯一)!
注意:二進制日誌必須開啟,因為數據的同步實質上就是其他的MySQL數據庫服務器將這個數據變更的二進制日誌在本機上再執行一遍。
2.保存後重啟mysql
3.查看主庫中MySQL服務器二進制文件名與位置
mysql>SHOW MASTER STATUS;注意:此處重點關注File和Position;
告知二進制文件名與位置
在備庫中執行:
mysql>CHANGE MASTER TO >MASTER_HOST='192.168.1.1', >MASTER_USER='fuzhi', >MASTER_PASSWORD='fuzhi', >MASTER_LOG_FILE='mysql-bin.000001', >MASTER_LOG_POS=68;
完成主從複製配置。
注意:MASTER_LOG_FILE和MASTER_LOG_POS這2個參數通過在主庫中執行:SHOW MASTER STATUS獲取到。
開啟並查看,在備庫中執行:
mysql>START SLAVE; #開啟複製mysql>SHOW SLAVE STATUS\G #查看主從複製是否配置成功
注意:當看到Slave_IO_Running: YES、Slave_SQL_Running: YES才表明狀態正常。
Mysql 主從複製的優點:
1. 如果主服務器出現問題, 可以快速切換到從服務器提供的服務
2.可以在從服務器上執行查詢操作, 降低主服務器的訪問壓力
3.可以在從服務器上執行備份, 以避免備份期間影響主服務器的服務
注意:受網絡波動影響同步時間會實驗受影響,一般只有更新不頻繁的數據或者對實時性要求不高的數據可以通過從服務器查詢, 實時性要求高的數據仍然需要從主數據庫獲得。