mysql之mysqldump 、lvm-snapshot、 xtrabackup的备份

一、备份类型和备份工具简介

备份的目的是在灾难发生时用来还原,因此为了保证可以还原,因此需要定期进行恢复测试,另外还需要根据实际情况制定最优的备份和恢复策略。

1、备份类型

①、按备份时服务器是否继续提供服务区分:

冷备(cold backup):备份时读写都不受影响温备(warm backup)全局施加共享锁,只能读,不能写热备(hot backup):也叫离线备份,读写操作均中止

不同的存储引擎对备份的支持也是不一样的:

MyISAM:存储引擎可以使用LVM快照功能配合实现热备份,如果没有LVM,则只能实现温备份。//InnoDB则:可以完全支持热备,可使用的热备工具有:xtrabackup, mysqldump等

②、按备份操作方式区分:

物理备份:直接复制数据文件。特点:速度快逻辑备份:将数据导出至文本文件中。特点:速度慢、丢失浮点数精度;方便使用文本处理工具直接对其处理、可移植能力强

③、按是否备份全部数据还是只备份部分数据区别:

完全备份(full backup):备份全部需要备份的数据增量备份:仅备份上次完全备份或增量备份以后变化的数据差异备份:仅备份上次完全备份依赖变化的数据一般情况下,根据备份策略组合使用:完全+增量;完全+差异

缺点:很难实现增量备份,并且请求全局锁需要等待一段时间,在繁忙的服务器上尤其如此

备份过程如下:mysql> FLUSH TABLES;mysql> LOCK TABLES然后创建快照:释放锁,而后复制数据

select语句:备份:select clause into outfile ‘/path/to/somefile’恢复:load data infile ‘/path/to/somefile’ into table ‘tb_name’

③、Xtarbackup: Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具。

特点:

(1)备份过程快速、可靠;

(2)备份过程不会打断正在执行的事务;

(3)能够基于压缩等功能节约磁盘空间和流量;

(4)自动实现备份检验;

(5)还原速度快;

④、其它工具:

Innobase:商业备份工具,

innobackup

mysqlhostcopy:物理备份工具,,几乎冷备

二、使用mysqldump对MySQL进行备份与恢复

1、基本语法:

备份单个数据或单个数据中的指定表:mysqldump [OPTIONS] database [tb1] [tb2]…备份多个数据库:mysqldump [OPTIONS] –databases [OPTIONS] DB1 [DB2 DB3…]备份所有数据库:mysqldump [OPTIONS] –all-databases [OPTIONS]

2、选项[OPTIONS]说明:

–all-databases , -A导出全部数据库。//mysqldump -uroot -p –all-databases–all-tablespaces , -Y导出全部表空间。//mysqldump -uroot -p –all-databases –all-tablespaces–no-tablespaces , -y不导出任何表空间信息。//mysqldump -uroot -p –all-databases –no-tablespaces–character-sets-dir字符集文件的目录//mysqldump -uroot -p –all-databases –character-sets-dir=/usr/local/mysql/share/mysql/charsets–databases, -B导出几个数据库。参数后面所有名字参量都被看作数据库名。//mysqldump -uroot -p –databases test mysql–debug输出debug信息,用于调试。默认值为:d:t:o,/tmp/mysqldump.trace//mysqldump -uroot -p –all-databases –debug//mysqldump -uroot -p –all-databases –debug=” d:t:o,/tmp/debug.trace”–debug-check检查内存和打开文件使用说明并退出。//mysqldump -uroot -p –all-databases –debug-check–debug-info输出调试信息并退出//mysqldump -uroot -p –all-databases –debug-info–default-character-set设置默认字符集,默认值为utf8//mysqldump -uroot -p –all-databases –default-character-set=latin1–delete-master-logsmaster备份后删除日志. 这个参数将自动激活–master-data。//mysqldump -uroot -p –all-databases –delete-master-logs–dump-slave该选项将导致主的binlog位置和文件名追加到导出数据的文件中。设置为1时,将会以CHANGE MASTER命令输出到数据文件;设置为2时,在命令前增加说明信息。该选项将会打开–lock-all-tables,除非–single-transaction被指定。该选项会自动关闭–lock-tables选项。默认值为0。//mysqldump -uroot -p –all-databases –dump-slave=1//mysqldump -uroot -p –all-databases –dump-slave=2–events, -E导出事件。//mysqldump -uroot -p –all-databases –events–flush-logs开始导出之前刷新日志。请注意:假如一次导出多个数据库(使用选项–databases或者–all-databases),将会逐个数据库刷新日志。除使用–lock-all-tables或者–master-data外。在这种情况下,日志将会被刷新一次,相应的所以表同时被锁定。因此,如果打算同时导出和刷新日志应该使用–lock-all-tables 或者–//master-data 和–flush-logs。//mysqldump -uroot -p –all-databases –flush-logs–flush-privileges在导出mysql数据库之后,发出一条FLUSH PRIVILEGES 语句。为了正确恢复,该选项应该用于导出mysql数据库和依赖mysql数据库数据的任何时候。//mysqldump -uroot -p –all-databases –flush-privileges–force在导出过程中忽略出现的SQL错误。//mysqldump -uroot -p –all-databases –force–help显示帮助信息并退出。mysqldump –help–hex-blob使用十六进制格式导出二进制字符串字段。如果有二进制数据就必须使用该选项。影响到的字段类型有BINARY、VARBINARY、BLOB。//mysqldump -uroot -p –all-databases –hex-blob–host, -h需要导出的主机信息//mysqldump -uroot -p –host=localhost –all-databases–ignore-table不导出指定表。指定忽略多个表时,需要重复多次,每次一个表。每个表必须同时指定数据库和表名。例如:–ignore-table=database.table1 –ignore-table=database.table2 ……//mysqldump -uroot -p –host=localhost –all-databases –ignore-table=mysql.user–include-master-host-port在–dump-slave产生的’CHANGE MASTER TO..’语句中增加’MASTER_HOST=<host>,MASTER_PORT=<port>’//mysqldump -uroot -p –host=localhost –all-databases –include-master-host-port–lock-all-tables, -x提交请求锁定所有数据库中的所有表,以保证数据的一致性。这是一个全局读锁,并且自动关闭–single-transaction 和–lock-tables 选项。//mysqldump -uroot -p –host=localhost –all-databases –lock-all-tables–lock-tables, -l开始导出前,锁定所有表。用READ LOCAL锁定表以允许MyISAM表并行插入。对于支持事务的表例如InnoDB和BDB,–single-transaction是一个更好的选择,因为它根本不需要锁定表。请注意当导出多个数据库时,–lock-tables分别为每个数据库锁定表。因此,该选项不能保证导出文件中的表在数据库之间的逻辑一致性。不同数据库表的导出状态可以完全不同。//mysqldump -uroot -p –host=localhost –all-databases –lock-tables–log-error附加警告和错误信息到给定文件//mysqldump -uroot -p –host=localhost –all-databases –log-error=/tmp/mysqldump_error_log.err–master-data该选项将binlog的位置和文件名追加到输出文件中。如果为1,将会输出CHANGE MASTER 命令;如果为2,输出的CHANGE MASTER命令前添加注释信息。该选项将打开–lock-all-tables 选项,除非–single-transaction也被指定(在这种情况下,全局读锁在开始导出时获得很短的时间;其他内容参考下面的–single-transaction选项)。该选项自动关闭–lock-tables选项。//mysqldump -uroot -p –host=localhost –all-databases –master-data=1;//mysqldump -uroot -p –host=localhost –all-databases –master-data=2;//mysqldump -uroot -p –host=localhost –all-databases –net_buffer_length=1024–no-data, -d不导出任何数据,只导出数据库表结构。//mysqldump -uroot -p –host=localhost –all-databases –no-data–password, -p连接数据库密码,使用命名管道连接mysql//mysqldump -uroot -p –host=localhost –all-databases –pipe–port, -P连接数据库端口号–result-file, -r直接输出到指定文件中。该选项应该用在使用回车换行对(\\r\\n)换行的系统上(例如:DOS,Windows)。该选项确保只有一行被使用。//mysqldump -uroot -p –host=localhost –all-databases –result-file=/tmp/mysqldump_result_file.txt–routines, -R导出存储过程以及自定义函数。//mysqldump -uroot -p –host=localhost –all-databases –routines–single-transaction该选项在导出数据之前提交一个BEGIN SQL语句,BEGIN 不会阻塞任何应用程序且能保证导出时数据库的一致性状态。它只适用于InnoDB存储引擎。本选项和–lock-tables 选项是互斥的,因为LOCK TABLES 会使任何挂起的事务隐含提交。要想导出大表的话,应结合使用–quick 选项。//mysqldump -uroot -p –host=localhost –all-databases –single-transaction–socket,-S指定连接mysql的socket文件位置,默认路径/tmp/mysql.sock//mysqldump -uroot -p –host=localhost –all-databases –socket=/tmp/mysqld.sock–tables覆盖–databases (-B)参数,指定需要导出的表名。//mysqldump -uroot -p –host=localhost –databases test –tables test–user, -u指定连接的用户名。–xml, -X导出XML格式.//mysqldump -uroot -p –host=localhost –all-databases –xml

3、以下图数据库为例

每年的情人节圣诞节除夕,也和他共度。甚至连吵架也是重复的,

mysql之mysqldump 、lvm-snapshot、 xtrabackup的备份

相关文章:

你感兴趣的文章:

标签云: