煮酒品茶:时间有点长,date那一段可以快进。比较真实,我用的什么样子,你用了也啥样子。

视频优酷真正沈核中.....

Mysql 备份与恢复

--煮酒品茶

用官方的文档讲解

mysqldump

备份文件(MYISAM)

INNODB?

数据库备份(完全备份和增量备份)

mysqldump --tab=/path/to/some/dir --opt db_name
--tab

mysqldump创建一个包含创建表的CREATE TABLE语句的tbl_name.sql文件,和一个包含其数据的tbl_name.txt文件。选项值为写入文件的目录。

默认情况,.txt数据文件的格式是在列值和每行后面的新行之间使用tab字符。可以使用--fields-xxx和--行--xxx选项明显指定格式。

过程:

1、导出一个创建table语名气的文件

2、导出一个含有数值的txt文件,以tab分开

自动备份脚本的流程:

1、获取一系列的信息

2、以单前时间备份在目录中建立的以当前时间为目录的结构

增量备份:

A    >      Z

A--B(完备)--C(增量备份)--D(增量备份)  > Z

mysql-bin.000001 (时间段) 0:00
mysql-bin.000002 (时间段) 0:00
mysql-bin.000003 (时间段) 0:00 ~ 6:00
6:00 --flush-logs
mysql-bin.000004 (时间段) 6:00 ~ 0:00
mysql-bin.000005 (时间段)

ySQL支持增量备份:需要用--log-bin选项来启动服务器以便启用二进制日志;参见5.11.3节,“二进制日志”。当想要进行增量备份时(包含上一次完全备份或增量备份之后的所有更改),应使用FLUSH LOGS回滚二进制日志。然后,你需要将从最后的完全或增量备份的某个时刻到最后某个点的所有二进制日志复制到备份位置。这些二进制日志为增量备份;恢复时,按照下面的解释应用。下次进行完全备份时,还应使用FLUSH LOGS或mysqlhotcopy --flushlogs回滚二进制日志。参见8.8节,“mysqldump:数据库备份程序”和8.9节,“mysqlhotcopy:数据库备份程序”。

如果MySQL服务器为从复制服务器,则无论选择什么备份方法,当备份从机数据时,还应备份master.info和relay-log.info文件。恢复了从机数据后,需要这些文件来继续复制。如果从机执行复制LOAD DATA INFILE命令,你应还备份用--slave-load-tmpdir选项指定的目录中的SQL_LOAD-*文件。(如果未指定,该位置默认为tmpdir变量值)。从机需要这些文件来继续复制中断的LOAD DATA INFILE操作。

如果必须恢复MyISAM表,先使用REPAIR TABLE或myisamchk -r来恢复。99.9%的情况下该方法可以工作。

1.    恢复原mysqldump备份,或二进制备份。

2.    执行下面的命令重新更新二进制日志:

3.    shell> mysqlbinlog hostname-bin.[0-9]* | mysql

告诉服务器关闭当前的二进制日志文件并创建一个新文件。

mysqldump --delete-master-logs

MySQL二进制日志占据硬盘空间。要想释放空间,应随时清空。操作方法是删掉不再使用的二进制日志,例如进行完全备份时:

恢复:

导入完备:

现在这个点(周一)进行完全备份,下次完备(下周一) mysql-bin.000007

......(data)

mysql-bin.000007

周二进行增量备份

mysql-bin.000008

....(add table) table name:zhou2

周三进行增量备份

.... (add table) table name:zhou3s

1、完备

mysql-bin.000009 ~ mysql-bin.000010

有新数据

2、直接回GUNbin-log日志

周二

mysql-bin.000010 ~ mysql-bin.000011

周三

mysql-bin.000011 ~ mysql-bin.000012

2、备份bin-log日志

恢复过程:

1、恢复完备(OK)

#星期一的完备状态

2、恢复周二的增量备份

2.1、进入binlog目录

cd /data/mysql

2.2、执行以下命令(bin-log是时间段,一次执行多个)

*数据不一致,那么我们必须严格按照binlog顺序来进行恢复。

*假定周二删除A用户,周三有新用户申请A名称。

#星期二的状态(zhou2的库没有zhou3的库)

9 rows in set (0.00 sec)

3、恢复周三的增量备份

备份目录:

增量备份目录:Zl-test-date

完全备份目录:Wb-test-date

TEST:

周三:(周三开始的)

mysql-bin.000012

周四:(周四开始的)

mysql-bin.000013

周五:(删除周四的,新建周五的)

mysql-bin.000014

mysql-bin.000015

备份机制:

周一完备,周二到周四增量备份

周一:完备后回GUN日志,同时备份的时候锁表和把表的内存刷入磁盘

周二到周日执行回GUN日志,并备份bin-log日志

结论:

增量备份是完全基于bin-log日志来进行的。

全备脚本:

增量备份脚本: