說明:該篇博客是博主一字一碼編寫的,實屬不易,請尊重原創,謝謝你們!python
目錄mysql
一丶敘述sql
三丶配置主服務器master(192.168.4.63)vim
四丶配置從服務器slave(192.168.4.15) 安全
五丶測試主從同步服務器
1. 主從同步的定義網絡
主從同步使得數據能夠從一個數據庫服務器複製到其餘服務器上,在複製數據時,一個服務器充當主服務器(master),其他的服務器充當從服務器(slave)。由於複製是異步進行的,因此從服務器不須要一直鏈接着主服務器,從服務器甚至能夠經過撥號斷斷續續地鏈接主服務器。經過配置文件,能夠指定複製全部的數據庫,某個數據庫,甚至是某個數據庫上的某個表。異步
使用主從同步的好處:ide
2. 主從同步的機制
Mysql服務器之間的主從同步是基於二進制日誌機制,主服務器使用二進制日誌來記錄數據庫的變更狀況,從服務器經過讀取和執行該日誌文件來保持和主服務器的數據一致。
在使用二進制日誌時,主服務器的全部操做都會被記錄下來,而後從服務器會接收到該日誌的一個副本。從服務器能夠指定執行該日誌中的哪一類事件(譬如只插入數據或者只更新數據),默認會執行日誌中的全部語句。
每個從服務器會記錄關於二進制日誌的信息:文件名和已經處理過的語句,這樣意味着不一樣的從服務器能夠分別執行同一個二進制日誌的不一樣部分,而且從服務器能夠隨時鏈接或者中斷和服務器的鏈接。
主服務器和每個從服務器都必須配置一個惟一的ID號(在my.cnf文件的[mysqld]模塊下有一個server-id配置項),另外,每個從服務器還須要經過CHANGE MASTER TO語句來配置它要鏈接的主服務器的ip地址,日誌文件名稱和該日誌裏面的位置(這些信息存儲在主服務器的數據庫裏)
3. 配置主從同步的基本步驟
有不少種配置主從同步的方法,能夠總結爲以下的步驟:
4. 詳細配置主從同步的方法
主和從的身份能夠本身指定,博主將虛擬機Ubuntu(192.168.4.63)中MySQL做爲主服務器,將Ubuntu(192.168.4.15)中的MySQL做爲從服務器。 在主從設置前,要保證兩臺Ubuntu之間的網絡連通。
1.在主服務器Ubuntu(192.168.4.63)上進行備份:
mysqldump -uroot -p --all-databases --lock-all-tables > ~/master_db.sql
說明:--all-databases表示備份全部數據庫(當恢復時就不須要再建立數據庫了)--lock-all-tables表示在備份時對錶數據進行上鎖,意思是備份期間執行增刪改操做須要等待
2. 在從服務器Ubuntu(192.168.4.15)上進行數據還原
mysql –uroot –p < master_db.sql
1.編輯設置mysqld的配置文件,設置log_bin和server-id,通常將IP地址尾數設置爲server-id得值,必須保證主服務器和從服務器上的server-id的值不能相同
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
2.執行 sudo service mysql restart 命令,重啓mysql服務
3.登入主服務器Ubuntu中的mysql,建立用於從服務器同步數據使用的賬號
說明:*.*任意數據中全部表 flush privileges更新權限
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' identified by 'slave'; FLUSH PRIVILEGES;
4.獲取主服務器的二進制日誌信息
show master status;
注:File爲使用的日誌文件名字,Position爲使用的文件位置,這兩個參數須記下,配置從服務器時會用到
1.配置從服務器上的server-id
2.重啓mysql服務
4.進入從服務器的mysql,設置鏈接到master主服務器
說明:master_host 主服務器Ubuntu的地址,master_user是在上面第三大步中在主服務器上配置給從服務器進行遠程操做的帳號,master_log_file也是在上面第三大步中主服務器的二進制日誌信息
change master to master_host='192.168.4.63', master_user='slave', master_password='slave',master_log_file='mysql-bin.000007', master_log_pos=600;
5.開啓同步,查看同步狀態
start slave;
說明:當IO線程與SQL線程顯示yes正在運行表示此兩臺服務器同步成功
start slave status;
1.在Ubuntu的MySQL中(主服務器)建立一個csdn_test數據庫
2.在Ubuntu的MySQL中(從服務器)查看新建的數據庫是否存在