mysql 主從復制原理及步驟。


mysql是現在普遍使用的數據庫,但是如果宕機了必然會造成數據丟失。為了保證mysql數據庫的可靠性。就要會一些提高可靠性的技術。

主從復制原理如下。

slave(從服務器)   master(主服務器)

mysql主從是異步復制過程

1 master開啟bin-log功能,日志文件用於記錄數據庫的讀寫增刪;
2 需要開啟3個線程,master IO線程,slave開啟 IO線程 SQL線程;
3 Slave 通過IO線程連接master,並且請求某個bin
-log,position之后的內容。 4 MASTER服務器收到slave IO線程發來的日志請求信息,io線程去將bin-log內容,position返回給slave IO線程。 5 slave服務器收到bin-log日志內容,將bin-log日志內容寫入relay-log中繼日志,創建一個master.info的文件,
該文件記錄了master ip 用戶名 密碼 master bin-log名稱,bin-log position。 6 slave端開啟SQL線程,實時監控relay-log日志內容是否有更新,解析文件中的SQL語句,在slave數據庫中去執行。

 

字有點多 上張圖看看。

 

 

  應該有一定了解了吧。、

准備兩個mysql,一個做主,一個做從。防火牆,selinux都要關閉,保證可以ping通對方

主服務器配置: vi/etc/ntp.conf

 

添加:

server 127.127.1.0

fudge 127.127.1.0 stratum 8

service ntpd start    #因為同步數據 兩個服務器的時間也要同步。

 

稍后要在從服務器執行來同步時間

vi/etc/my.cnf 

在配置文件49行

 

 

 

 

其他內容都可以保持默認。

 

---------------------------------------------------------------------------------------------------------

在主服務器登錄mysql 給從服務器授權。

mysql> grant replication slave on *.* to zs@'192.168.43.%' identified by '123456';

授權用戶zs 密碼為123456 允許192.168.43.0的網絡連接 一會兒要在slave上使用這個賬號

----------------------------------------------------------------------------------------

show master status;    #此命令查看主服務器的bin-log日志文件名稱和position點

 

 

 

 

從服務器就是要指定這個文件maste-bin.000001 (隨着mysql增刪修改日志文件名字也有可能改變)  和 107 (position點 主服務器增刪修改都會改變)所以現在開始就不要再在主服務器創表干啥的了,

mysqldump -uroot -p --opt --all-databases >/all_databases.sql  #導出主數據庫的數據

scp -r /all_databases.sql root@192.168.43.2:/   #用scp把數據復制到從服務器。

因為主從復制是從主從關系建立完畢開始同步的。也就是現在 position 107之前的內容復制不了所以要手動復制主之前的數據導入從數據庫。

 

從服務器配置:

/usr/sbin/ntpdate 192.168.43.22  #和主服務器同步時間。192.168.43.22為主服務器ip

 

 

 

 

 

 

 

 mysql -u root -p  </all_databases.sql   #導入數據

vi /etc/my.cnf

 

 

 

 

修改后重啟mysql服務

進入從服務器的mysql

change master to master_host='192.168.43.22',master_user='zs',master_password='123456',master_log_file='maste-bin.000001',master_log_pos=107;

 start slave;  #開啟SQL線程

 

 

 

 show slave status\G;    查看從服務器狀態

  

 

 

 

 

注意兩個都要是yes才是正常。

查看效果,在主服務器上創建個庫看看。

 

 

 

  從數據庫也會有

 

 

 

 

同樣刪掉數據庫從數據庫也會復制。

 

主庫上刪除一個數據庫。

 

 

 

 

從庫上也沒了。所以還是要備份數據庫的。

 

 

完畢。希望對你有所幫助

原文鏈接:https://blog.csdn.net/qq_41772936/article/details/80380950


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM