所謂的數據庫主從複製功能就是說把數據庫的操做分別分配給主服務器和從服務器,查詢一類的操做就發送到從服務器,而更新、修改一類的操做就發送到主服務器。如此一來,就能減輕主服務器的負擔。它的優勢有許多,能夠加強服務器健壯性,要是主服務器出問題了,能夠切換從服務器作備份,工做分化!mysql
它的實現過程就是服務器將用戶對數據庫的更新、修改的操做以二進制格式保存到bina log日誌文件裏,而後由binlog dump
sql
線程將binary log日誌文件傳輸到從服務器,從服務器經過一個i/o線程將主服務器的binary log日誌文件中的操做複製到一個叫relay log的中繼日誌文件中,從服務器的另一個sql線程將relay log中繼日誌文件中的操做依次在本地執行,從而實現主從之間數據的同步。shell
個人配置環境,主服務器:
數據庫
os:ubantu; mysql:version5.543; 服務器
從服務器:
測試
os:window8; mysql:version:5.58;
spa
主服務器的mysql版本最好就不要高於從服務器mysql版本線程
下面說說操做:rest
主服務器:日誌
登錄mysql:
mysql -uroot -p********
登錄後;你鍵入
SHOW MASTER STATUS;
你會發現沒什麼變化的,而後下面開始在主服務器上爲從服務器設置一個鏈接帳戶,讓它能夠進行主從複製功能;
GRANT REPLICATION SLAVE ON *.* TO 'swon'@'%' IDENTITIED BY 'password';
解釋下上一條命令,grant就是容許,REPLICATION SLAVE就是從庫複製,swon就是你在從庫登錄時的帳號,password就是登錄密碼,總結起來講就是容許經過在從服務器登錄swon \password進行復制之類的意思,知道就行,沒必要深究啦。
而後開始配置,打開 /etc/mysql/my.cnf ,加入
[mysqld] log-bin=mysql-bin server-id=1
保存後,退出,而後從新登錄mysql
sudo /etc/init.d/mysql restart
restart成功後,繼續
SHOW MATER STATUS;
你會看到
這就配好主服務器的了,這個file表示主服務器正在使用的binlog文件,position的值和binlog文件大小同樣。
從服務器:
打開你的從服務器的mysql配置文件,因爲每一個人的安裝路徑不同,只要打開my.ini這個文件就行,在裏面加入
[mysqld] log_bin=mysql-bin server_id=2
這個server_id不能與主服務器的server_id同樣!而後start 從服務器mysql,注意個人從服務器是在window環境,是要在bin目錄下使用mysql命令
mysql -uroot -p*****
這個登錄帳號密碼要按本身的實際來呀;
而後開始鏈接主服務器的信息;
CHANGE MASTER TO MASTER_HOST='192.168.1.123',MASTER_USER='swon',MASTER_PASSWORD='password',MASTER_LOG_FILE='mysql-bin.000012',MASTER_LOG_POS=0;
解釋下上面這條命令,CHANGE MASTER TO 這個語句是表示指定主服務器的信息,MASTER_HOST指定主服務器的ip 端口,MASTER_USER就是咱們剛開始時,在主服務器配置的用戶名,MASTER_PASSWORD也是咱們在主服務器配置的密碼,MASTER_LOG_FILE就是主服務器正在使用的binlog文件,而MASTER_LOG_POS通常默認爲零,表示從開始位置開始讀。
配置好以後,咱們就開啓從庫,鍵入
START SLAVE;
而後查看從庫狀態,鍵入
SHOW SLAVE STATUS\G
能夠看到
要注意的是,Slave_IO_Running,和Slave_SQL_Runnig都必須爲YES,還有,Second_Behind_Master必須爲0,表示已經開始工做。
配置到此告一段落,咱們能夠在查看下,
在主服務器中鍵入;
SHOW PROCESSLIST\G
能夠看到
第二條就是處理i/o線程的鏈接。
而後在從服務器上鍵入:
SHOW PROCESSLIST\G
能夠看到
第二行是i/o線程狀態,第三行就是sql線程狀態。
到此,咱們能夠測試下,這個主從複製能不能派上用場了,
在主服務器上創庫、創表,插入數據;
完了後,咱們在從服務器上看有沒有實現同步
能夠看到,從服務器也同步創了swon庫,而後再看:
至此,已經實現了功能。