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


你可能感兴趣的:(mysql,备份,恢复)