MySQL主從同步配置(詳細圖解)

說明:該篇博客是博主一字一碼編寫的,實屬不易,請尊重原創,謝謝你們!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. 配置主從同步的基本步驟

有不少種配置主從同步的方法,能夠總結爲以下的步驟:

  1. 在主服務器上,必須開啓二進制日誌機制和配置一個獨立的ID
  2. 在每個從服務器上,配置一個惟一的ID,建立一個用來專門複製主服務器數據的帳號
  3. 在開始複製進程前,在主服務器上記錄二進制文件的位置信息
  4. 若是在開始複製以前,數據庫中已經有數據,就必須先建立一個數據快照(可使用mysqldump導出數據庫,或者直接複製數據文件)
  5. 配置從服務器要鏈接的主服務器的IP地址和登錄受權,二進制日誌文件名和位置

4. 詳細配置主從同步的方法

主和從的身份能夠本身指定,博主將虛擬機Ubuntu(192.168.4.63)中MySQL做爲主服務器,將Ubuntu(192.168.4.15)中的MySQL做爲從服務器。 在主從設置前,要保證兩臺Ubuntu之間的網絡連通。

二丶備份主服務器原有數據到從服務器

1.在主服務器Ubuntu(192.168.4.63)上進行備份: 

  • step1 查看主服務器上的數據庫

  • step2 cd到主服務器桌面,執行如下命令:
mysqldump -uroot -p --all-databases --lock-all-tables > ~/master_db.sql

說明:--all-databases表示備份全部數據庫(當恢復時就不須要再建立數據庫了)--lock-all-tables表示在備份時對錶數據進行上鎖,意思是備份期間執行增刪改操做須要等待

2. 在從服務器Ubuntu(192.168.4.15)上進行數據還原

  • step1 在主服務器中經過scp命令將備份到桌面上的master_db.sql文件推送到從服務器中

  • step2 查看從服務器上的數據庫

  • step3 在從服務器上執行如下命令
mysql –uroot –p < master_db.sql

  • step4 將主服務器備份的數據庫恢復到從服務器後,此時查看從服務器的數據庫中是否存在主服務器數據庫中的jing_dong,python_01以及python_test數據庫

三丶配置主服務器master(192.168.4.63)

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爲使用的文件位置,這兩個參數須記下,配置從服務器時會用到 

四丶配置從服務器slave(192.168.4.15) 

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.開啓同步,查看同步狀態

  • step1 啓動複製
start slave;
  • step2 顯示狀態

說明:當IO線程與SQL線程顯示yes正在運行表示此兩臺服務器同步成功

start slave status;

五丶測試主從同步

1.在Ubuntu的MySQL中(主服務器)建立一個csdn_test數據庫

 2.在Ubuntu的MySQL中(從服務器)查看新建的數據庫是否存在 

相關文章
相關標籤/搜索