1. 程式人生 > >Mysql5.7.12多源復制 xtrabackup

Mysql5.7.12多源復制 xtrabackup

多源復制master-slave

? 實驗環境

  1. 系統環境
    查看系統版本命令:cat /etc/redhat-release
    技術分享圖片
  2. 本實驗是編譯安裝的Mysql ,坑太多,以後不建議采用編譯安裝的方式
    技術分享圖片
  3. 啟動Mysql前首先執行以下命令,創建鏈接
    ln -s /usr/local/mysql/bin/mysql /usr/bin
  4. Mysql初始的root密碼存放在/root/.mysql_secret
    找到密碼後連接數據庫,一定要修改root密碼,然後重新啟動Mysql

? 搭建Master-Master-slave
MySQL01:192.168.4.63 Master1
MySQL02:192.168.4.64 Master2
MySQL03:192.168.4.65 Slave1

Master1與Master2互為主備,Slave1是Master1,Master2的備機(多源復制)

  1. 首先實現Master1,Master2互為主備的功能

    1. 修改/etc/my.cnf,添加如下內容:
      技術分享圖片

      技術分享圖片

      多源復制加入了一個叫做Channel的概念,只需要在每個語句最後使用For Channel來進行區分。由於復制的原理沒有改變,在沒有開啟GTID的時候從庫需要master-info-repository、relay-log-info-repository設置為table,否則會報錯:
      技術分享圖片

    2. 授權同步帳號
      技術分享圖片
      技術分享圖片
    3. 查出M1和M2的文件和Pos值
      技術分享圖片
      技術分享圖片
    4. 執行命令將M1,M2設置為互為主備
      技術分享圖片
      技術分享圖片

    5. 查看slave狀態
      技術分享圖片
      技術分享圖片
  2. 實現Slave1多源復制功能,即S1為M1,M2的共有備機
    1. 授權同步帳號
      技術分享圖片
      技術分享圖片
    2. 執行命令將S1作為M1,M2的備機
      技術分享圖片
    3. 查看Slave狀態
      技術分享圖片
      技術分享圖片
      註:至此已實現多主單備的配置,亦稱多源復制。Msql5.7以上版本可使用GTID模式實現此功能

數據庫的備份是DBA一項非常重要的工作,本案例中我們采用xtrabackup完成數據備份需求

  1. 在Slave1安裝xtrabackup
    技術分享圖片
    2.安裝完成後,你就能在/etc/yum.repos.d 下看到一個percona-release.repo文件
    技術分享圖片
    3.測試Repository,確保Percona XtraBackup相關包已經在Repository中
    技術分享圖片
    4.安裝Percona XtraBackup包
    技術分享圖片
    5.查看安裝結果
    技術分享圖片
    1. 創建備份用戶
      備份數據庫的用戶需要具有相應權限,如果要使用一個最小權限的用戶進行備份,則可基於如下命令創建此類用戶:
      技術分享圖片
      技術分享圖片
  2. 執行完整備份:
    innobackupex --user=root --password=cbichina_123 /extrabackup
    執行完成後,會自動創建當前時間的文件夾
    技術分享圖片
    利用 --apply-log的作用是通過回滾未提交的事務及同步已經提交的事務至數據文件使數據文件處於一致性狀態。
    innobackupex --apply-log /extrabackup/2018-03-06_18-15-40/
  3. 執行增量備份
    此命令執行結束後,innobackupex命令會在/backup目錄中創建一個新的以時間命名的目錄以存放所有的增量備份數據。另外,在執行過增量備份之後再一次進行增量備份時,其--incremental-basedir應該指向上一次的增量備份所在的目錄。
    innobackupex --incremental /extrabackup/ --user=root--password=cbichina_123

  4. 還原
    請確保信息的最行一行出現“innobackupex: completed OK!”。
    innobackupex --copy-back /extrabackup/2018-03-06_18-15-40/

Mysql5.7.12多源復制 xtrabackup