天天看点

MySQL备份策略对比及剖析

1. 常见备份分析

<a href="http://s3.51cto.com/wyfs02/M00/24/01/wKiom1NKmUqjVpkYAAU-DfXlyVE581.jpg" target="_blank"></a>

2. mysqldump操作流程

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

<code>完全备份</code>

<code>    </code><code># 温备</code>

<code>    </code><code>mysqldump </code><code>--all-databases --lock-all-tables &gt; /tmp/a.sql</code>

<code>    </code><code># 热备</code>

<code>    </code><code>mysqldump </code><code>--all-databases --single-transaction &gt; /tmp/a.sql</code>

<code>增量备份</code>

<code>    </code><code># 完整备份少不了</code>

<code>    </code><code>mysqldump </code><code>--all-databases --singel-transaction --fulsh-logs --master-data=2 &gt; /tmp/a.sql</code>

<code>    </code><code># </code><code>--master-data=2 (记录二进制还原点信息)</code>

<code>    </code><code>每天一下计划任务</code>

<code>    </code><code>备份上次记录的二进制日志</code>

<code>.</code>

<code>还原流程</code>

<code>    </code><code>对于完全备份的</code>

<code>    </code><code>mysql &lt; /tmp/a.sql</code>

<code>    </code><code>对于增量的</code>

<code>    </code><code>还要导入增量信息</code>

<code>    </code><code>mysqlbinlog </code><code>--start-position=pos --stop-position=pos /path/to/binfile | mysql</code>

<code>    </code><code>这里的start-position就是上一次 </code><code>--master-data=2 在 /tmp/a.sql中记录的信息</code>

<code>备注</code>

<code>    </code><code>--events: 备份事件调度器代码</code>

<code>    </code><code>--routines: 备份存储过程和存储函数</code>

<code>    </code><code>--triggers:备份触发器</code>

3. lvm快照

<code>    </code><code>FLUSH TABLES </code><code>WITH</code> <code>READ</code> <code>LOCK;</code>

<code>    </code><code>FLUSH LOGS;</code>

<code>    </code><code>mysql -e </code><code>'show master status'</code> <code>&gt; /path/</code><code>to</code><code>/somefile</code>

<code>    </code><code>lvcreate -s -n /back/path/file 50M /dev/</code><code>to</code><code>/devname</code>

<code>    </code><code>mount /back/path/file /tmp/backup</code>

<code>    </code><code>tar cf /tmp/backup/* /tmp/back1404.tar.xz</code>

<code>    </code><code>与mysqldump无异</code>

<code>    </code><code>复制物理文件 + 二进制恢复(与mysqldump无异)</code>

4. select .. infile

<code>部分备份</code>

<code>select</code> <code>* </code><code>into</code> <code>outfile </code><code>'/path/to/file'</code>

<code>fields terminated </code><code>by</code> <code>','</code> <code>optionally enclosed </code><code>by</code> <code>'"'</code>

<code>lines terminated </code><code>by</code> <code>'\n'</code>

<code>from</code> <code>db.</code><code>table</code>

<code># 注意此处仅有数据,那么在部分恢复的时候需要表结构</code>

<code>部分恢复</code>

<code>load</code> <code>data infile </code><code>'/path/to/file'</code>

<code>into</code> <code>table</code> <code>db.</code><code>table</code>

常见5. innobackupex

27

28

29

30

31

32

33

34

35

36

37

38

39

<code>    </code><code>innobackupex </code><code>--user=backuser --password=backpass /tmp/backup</code>

<code>还原完整备份</code>

<code>    </code><code># 整理备份(关键事务整理)</code>

<code>    </code><code>innobackupex </code><code>--apply-log /tmp/backup/2014-04-11_23-43-04</code>

<code>    </code><code># 注意数据目录需要为空</code>

<code>    </code><code>innobackupex </code><code>--copy-back /tmp/backup/2014-04-11_23-43-04</code>

<code>    </code><code>innobackupex </code><code>--user=backuser --password=backpass --incremental /tmp/backup --incremental-basedir=/tmp/backup/2014-04-11_23-43-04/</code>

<code>还原增量备份</code>

<code>    </code><code># 整理增量备份至完全备份(事务回滚)</code>

<code>    </code><code>innobackupex </code><code>--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/</code>

<code>    </code><code>innobackupex </code><code>--copy-back /tmp/backup/2014-04-11_23-43-04/</code>

<code>注意:</code>

<code>    </code><code>#若要还原部分数据还是用二进制方式</code>

<code>备注:</code>

<code>    </code><code>--compress   开启压缩</code>

<code>    </code><code>--compress-threads   压缩线程数</code>

<code>    </code><code>--databases=LIST    指定数据库备份</code>

<code>    </code><code>--decrypt=ENCRYPTION-ALGORITHM   指定备份加密</code>

<code>    </code><code>--export  </code>

<code>    </code><code>--incremental DIRECTORY   增量放置目录</code>

<code>    </code><code>--host    主机</code>

<code>    </code><code>--password   密码</code>

<code>    </code><code>--port   端口</code>

<code>    </code><code>--parallel=NUMBER-OF-THREADS  开启多线程备份</code>

<code>    </code><code>--redo-only  回滚</code>

<code>    </code><code>--incremental-dir DIRECTORY   还原增量放置目录</code>

<code>    </code><code>--incremental-basedir=DIRECTORY   基于完整备份做增量</code>

<code>    </code><code>--stream=STREAMNAME     流模式(远程传输)</code>

<code>    </code><code>--defaults-file   多实例场景</code>

<code>流式压缩转移到其他主机</code>

<code>innobackupex </code><code>--compress --stream=tar /tmp/backup/2014-04-11_23-43-04/ | ssh [email protected] cat "&gt;" /tmp/backup.tar</code>

<code></code>

     本文转自My_King1 51CTO博客,原文链接:http://blog.51cto.com/apprentice/1394990,如需转载请自行联系原作者