MySQL備份策略對比及剖析

1. 常見備份分析

wKiom1NKmUqjVpkYAAU-DfXlyVE581.jpg

2. mysqldump操作流程

完全備份
    # 溫備
    mysqldump --all-databases --lock-all-tables > /tmp/a.sql
    # 熱備
    mysqldump --all-databases --single-transaction > /tmp/a.sql
增量備份
    # 完整備份少不了
    mysqldump --all-databases --singel-transaction --fulsh-logs --master-data=2 > /tmp/a.sql
    # --master-data=2 (記錄二進制還原點信息)
    每天一下計劃任務
    備份上次記錄的二進制日誌
.
還原流程
    對於完全備份的
    mysql < /tmp/a.sql
.
    對於增量的
    mysql < /tmp/a.sql
    還要導入增量信息
    mysqlbinlog --start-position=pos --stop-position=pos /path/to/binfile | mysql
    這裏的start-position就是上一次 --master-data=2 在 /tmp/a.sql中記錄的信息
.
備註
    --events: 備份事件調度器代碼
    --routines: 備份存儲過程和存儲函數
    --triggers:備份觸發器


3. lvm快照

完全備份
    FLUSH TABLES WITH READ LOCK;
    FLUSH LOGS;
    mysql -e 'show master status' > /path/to/somefile
    lvcreate -s -n /back/path/file 50M /dev/to/devname
    mount /back/path/file /tmp/backup
    tar cf /tmp/backup/* /tmp/back1404.tar.xz
增量備份
    與mysqldump無異
.
還原流程
    複製物理文件 + 二進制恢復(與mysqldump無異)


4. select .. infile

部分備份
select * into outfile '/path/to/file'
fields terminated by ',' optionally enclosed by '"'
lines terminated by '\n'
from db.table
# 注意此處僅有數據,那麼在部分恢復的時候需要表結構
部分恢復
load data infile '/path/to/file'
into table db.table
fields terminated by ',' optionally enclosed by '"'
lines terminated by '\n'


常見5. innobackupex

完全備份
    innobackupex --user=backuser --password=backpass /tmp/backup
還原完整備份
    # 整理備份(關鍵事務整理)
    innobackupex --apply-log /tmp/backup/2014-04-11_23-43-04
還原完整備份
    # 注意數據目錄需要爲空
    innobackupex --copy-back /tmp/backup/2014-04-11_23-43-04
.
.
增量備份
    innobackupex --user=backuser --password=backpass --incremental /tmp/backup --incremental-basedir=/tmp/backup/2014-04-11_23-43-04/
還原增量備份
    # 整理增量備份至完全備份(事務回滾)
    innobackupex --user=backuser --password=backpass --apply-log --redo-only /tmp/backup/2014-04-11_23-43-04/ --incremental-dir=/tmp/backup/2014-04-11_23-49-04/
還原增量備份
    innobackupex --copy-back /tmp/backup/2014-04-11_23-43-04/
注意:
    #若要還原部分數據還是用二進制方式
.
備註:
    --compress   開啓壓縮
    --compress-threads   壓縮線程數
    --databases=LIST    指定數據庫備份
    --decrypt=ENCRYPTION-ALGORITHM   指定備份加密
    --export   
    --incremental DIRECTORY   增量放置目錄
    --host    主機
    --password   密碼
    --port   端口
    --parallel=NUMBER-OF-THREADS  開啓多線程備份
    --redo-only  回滾
    --incremental-dir DIRECTORY   還原增量放置目錄
    --incremental-basedir=DIRECTORY   基於完整備份做增量
    --stream=STREAMNAME     流模式(遠程傳輸)
    --defaults-file   多實例場景
.
流式壓縮轉移到其他主機
innobackupex --compress --stream=tar /tmp/backup/2014-04-11_23-43-04/ | ssh [email protected] cat ">" /tmp/backup.tar


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章