數據庫主從復制


主從復制是MySQL中最重要的功能之一。主從復制是指一台服務器充當主數據庫服務器,另一台或多台服務器充當從數據庫服務器,主服務器中的數據自動復制到從服務器之中。對於多級復制,數據庫服務器即可充當主機,也可充當從機。MySQL主從復制的基礎是主服務器對數據庫修改記錄二進制日志,從服務器通過主服務器的二進制日志自動執行更新。

主從復制的類型:

1.基於語句的復制

主服務器上面執行的語句在從服務器上面再執行一遍
存在的問題:時間上可能不完全同步造成偏差,執行語句的用戶也可能不是同一個用戶。

2.基於行的復制

把主服務器上面改編后的內容直接復制過去,而不關心到底改變該內容是由哪條語句引發的
存在的問題:比如一個工資表中有一萬個用戶,我們把每個用戶的工資+1000,那么基於行的復制則要復制一萬行的內容,由此造成的開銷比較大,而基於語句的復制僅僅一條語句就可以了。

3.混合類型的復制

MySQL默認使用基於語句的復制,當基於語句的復制會引發問題的時候就會使用基於行的復制,MySQL會自動進行選擇。

主從復制的原理:

主服務器上面的任何修改都會保存在二進制日志Binary log里面
從服務器上面啟動一個I/O thread,連接到主服務器上面請求讀取二進制日志,然后把讀取到的二進制日志寫到本地的一個Realy log(中繼日志)里面。
從服務器上面開啟一個SQL thread定時檢查Realy log,如果發現有更改立即把更改的內容在本機上面執行一遍。

主從復制的步驟:

主服務器:ip:192.168.10.139  系統:Rhel7 數據庫Maria DB            
從服務器:ip:192.168.10.129  系統:Centos6.5  數據庫:MySQL

主服務器配置:

  • 修改主服務器配置文件 /etc/my.cnf  ,修改完后需要重啟mysql服務
1 [mysqld]
2 log-bin=mysql-bin         //啟用二進制日志 (必選)
3 server-id=139             //設置服務器唯一ID,一般取IP最后一段(必選)
4 binlog-do-db=140          //指定對db_nameA記錄二進制日志 (可選) 
5 binlog-ignore-db=mysql    //指定不對db_namB記錄二進制日志(可選)
  • 為從服務器添加mysql賬戶並配置權限,在主服務器上,必須為從服務器創建一個用來連接主服務器的用戶,並設置replication slave權限
1 mysql>grant  replication  slave  on  *.*   to  backup@'192.168.10.129'   identified   by   '123';    
2  //創建backup用戶,密碼為123,並且配置好權限
  • 刷新權限:flush   privileges;
  • 驗證是否開啟主從復制:
1 select * from user where user = 'backup'  \G;
  • 查看主服務器正在使用二進制日志狀態:
show master status;

從服務器配置 :

  • 修改從服務器配置文件 /etc/my.cnf  ,修改完后需要重啟mysql服務:service  mysqld restart
1 [mysqld]
2 server-id=129              //必須服務器唯一ID,一般取IP最后一段
  • 進入數據庫,設置主服務器信息:
1 mysql> change master to master_host='192.168.10.139',
2     -> master_user='backup',
3     -> master_password='123',
4     -> master_log_file='mysql-bin.000001',
5     -> master_log_pos=245;
  • 開啟從服務器復制二進制日志,實現同步功能: slave  start ;
  • 驗證數據庫相關參數: show  slave  status  \G;

數據庫的備份和還原:

衡量備份還原的指標:

  • RPO:恢復點目標,恢復的程度
  • RIO:恢復時間目標,恢復花費的時間

備份方式:

  • 冷備份:拷貝數據庫目錄,需要先停機再備份,對於在線不間斷提供業務的不適用
  • 快照備份:lvm快照,mysql裝在lvm創建的分區,可以熱備份(在線備份),缺點在於所有的文件,包括數據、日志等需要存放在一個邏輯卷中,然后再對卷快照備份,只支持本地備份,生產環境用的也比較少
  • 邏輯備份: mysqldump工具,單線程備份,備份速度較慢;mydumper工具,mysqldump升級版,有限制條件

備份單個庫:

  • 備份:
    mysqldump  -uroot  -p   dbname1> 1.sql
  • 還原:
    mysql  -uroot  -p   dbname2 < 1.sql

 

備份多個庫:

  • 備份:
    mysqldump  -uroot  -p  --database  db1  db2 > 1.sql
  • 還原: 
    mysql  -uroot -p  < 1.sql

備份全部庫:

  • 備份:
    mysqldump  -uroot  -p  --all-databases >  1.sql
  • 還原:
    mysql  -uroot  -p  <  1.sql

備份單個表:

  • 備份:
    mysqldump  dbname1  tb1 >  1.sql
  • 還原: 
    mysql  -uroot  -p   dbname2 <  1.sql

     

 


免責聲明!

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



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