close
 實驗情境                       

MySQL Backup and Recovery           #截錄官網部份敘述

Zmanda Recovery Manager for MySQL

Zmanda Recovery Manager (ZRM) for MySQL simplifies the life of a Database

Administrator who needs an easy-to-use yet flexible and robust backup

and recoverysolution for MySQL server. With ZRM for MySQL you can:

Schedule full and incremental backups of your MySQL database.

Start immediate backup or postpone scheduled backups based on thresholds
 
defined by you.

Choose to do more flexible logical or faster raw backups of your database.

更詳細說明請參考: http://www.zmanda.com/backup-mysql.html

本Lab將例用ZRM For MySQL 實現~排程"增量備份"與"完整備份"

實驗情境

Oracle Linux  Enterprise 6  * 1 (.188) >

MySQL Version:   MySQL 5.6.2 

ZRM For MySQL Version:  Version 2.2 


 (A.)  Orcl6(.188): ZRM For MySQL 相依套件之安裝

 > yum -y  install perl-XML-Parser perl-DBI perl-DBD-MySQL
 > rpm -ivh  MySQL-zrm-2.2.0- 1 .noarch.rpm   #下載RPM Version

 (B.)  LVM 規劃儲存設計:

      [Test]

# 使用兩顆10 G HDD,組成VG,並已劃分10G LV空間給MySQL備份DATA用
# 企業 真實環境建議使用mfs,nfs,或iscsi mount 該目錄空間(異地備份)
   
    > lvdisplay                                                            #檢視LV 設計
    >  mke2.fs -T ext4   /dev/vg0/zrm_mysql        #格式為Ext4模式
   
 >  reboot                                                           
   #重新開機,生效設定
    >  mkdir /akb48                                                 #建立掛載LV之目錄
    >  mount /dev/vg0/zrm_mysql   /akb48         #掛在lv 至/akb48 目錄下
    >  vi  /etc/fstab                                                  #填入開機自動掛載Lv組態如下儲存後離開
      
         /dev/vg0/zrm_mysql      /akb48                    ext4    defaults        1 2

   >  mount   -a                                                     # Check  組態Mount 設定是否有誤
       


   >   df -h                 #Check LVM 是否已成功掛載  

 (C.) 組態ZRM 備份設定       
        
    
當安裝好ZRM後,其全域設定檔位 /etc/mysql-zrm/mysql-zrm.conf
         
    筆者好少去動到改寫它, 習慣在 /etc/mysql-zrm/  目錄下建立一個資料夾

    本例取名為 
near-full  再將原位於 /etc/mysql-zrm/mysql-zrm.conf 檔案
    
     copy 一份至/etc/mysql-zrm/mear-full 下修改組態
(類似自己備份集做法)

>  mkdir -p /etc/mysql-zrm/near-full
> cp /etc/mysql-zrm/mysql-zrm.conf  /etc/mysql-zrm/near-full

> vi  near-full/mysql-zrm.conf             #開始編輯ZRM之組態

############Backup Config###############
 backup-level= 0                     #0為完整備份,1 為增量備份
 backup-mode=logical          #使用邏輯方式備份
 backup-type=quick               #快速備份
 destination = /akb48            #備份檔案儲存目錄,下圖有誤/alb48請修正為/akb48
 retention-policy=30D           #保留舊備份DATA 30日
 compress = 1                       #備份Data壓縮
 database = "Demo"            #指定單一備份資料庫,可使用 -all-database=1 全資料庫備份
 user = "root"                         #備份時MySQLUser
 password = "12345"          #備份時MySQL User PWD
 port = 3306                          #指定mysql port
 socket = /var/lib/mysql/mysql.sock      #指定sock路徑
 mysql-binpath= "/usr/bin/"                     #指定binpath
 mysql-binlog-path= "/var/lib/mysql/"    #指定binlog
 
 (D.) 登入MySQL 檢視將要備份Demo資料庫現況(為了接下來測試備份)

        #目前Demo 資料庫存在一表單 UserData

   

(E.) 測試備份: 完整備份與增量備份

  #1st 完整備份 DEMO 
  
 > mysql-zrm-backup --backup-set near-full   #下圖中備份ok
 
 
 
[驗證備份數據是否OK]

> mysql-zrm --action verify-backup --backup-set
near-full   #下圖已驗證OK


[實驗情境A] :  假設Demo 資料庫損毀! 我們以完整備份手動還原Demo資料庫

#剛剛完成完整備份檔案將建立於/akb48/near-full/ 此資料夾以下,我們檢視看看

   #以時間戳記建立備份資料夾:     20110628113002    20110628120619


THEN ,我們登入MySQL 主機, 刪除Demo資料庫

> DROP database   Demo;

[手動還原Demo資料庫] 完整備份 

#下圖中我們僅指定還原單一Demo資料庫

>   mysql-zrm-restore --backup-set near-full --source-directory /akb48/near-full/20110628120619/    --database Demo --user root --password 12345

  #還原程序OK

   登入MySQL 驗證Demo DB 是否已還原OK         #下圖中,完整備份之還原已成功 
[實驗情境B] : 

於現有Demo資料庫,插入幾筆新資料,並做一次增量備份,最後並測試增量備份是否OK

   #下圖多了一筆Q韻(QYUN)紀錄

\

[著手進行增量備份]

> mysql-zrm-backup --backup-set near-full --backup-level=1 --backup-mode=logical --database =Demo

  [增量備份成功] 



[測試增量備份還原]

 登入MySQL , 預先刪除Q韻(QYUN此筆資料)

[增量備份還原]

>mysql-zrm-restore --backup-set near-full --source-directory /akb48/near-full/20110628200715/


再次登入MySQL驗證,原先第二筆資料是否,還原成功    #下圖測試已OK



[排程執行備份工具]

#排程每日 3:00 a.m 執行一次,備份集 near-full 完整備份,若需增量請加 --backp-leve 1
> mysql-zrm-scheduler --add --interval daily --start 03:00 --backup-set near-full

#查尋已存在排程備份:
mysql-zrm-scheduler --query



#刪除已存在排程備份:  mysql-zrm-scheduler --delete -interval daily --start 03:00

  原先建立排程備份已刪除

#查看備份報告歷程:  mysql-zrm-reporter --where backup-set=near-full --show backup-status-info

 
#查看詳盡數據報告:  

 mysql-zrm-reporter --where backup-set=near-full --show backup-performance-info


TIP:   若需要編寫詳細排程備份, 本人較慣用修改/etc/crontab , cronta -e  直接修改較具彈性

  下圖中,本人修改了增量備份 9-30  ~18:30  每隔半小時執行增量備份,倘若使用
    
    mysql-zrm-scheduler 工具組態排程,就無法達到,多時段執行功效
 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 終極.凱因斯 的頭像
    終極.凱因斯

    NEIL`s_IT技術學習分享發表Blog

    終極.凱因斯 發表在 痞客邦 留言(0) 人氣()