欢迎光临
我们一直在努力

MySQL数据备份多种参数介绍及简单示例


上篇文章中,我们介绍了几种

MySQL

数据备份方式的原理,本文我们将和大家来共同探讨这些数据备份方式如何来使用。关于数据备份的使用攻略,各路大神都有示例文章,本文对此做了简单的总结和汇总。


Mysqldump

Mysqldump



MySQL

自带的很好用的备份工具,常用于

MySQL

数据库的逻辑备份,将

MySQL

服务器中的数据库以标准的

sql

语言的方式导出,并保存到文件中。其语法为:

mysqldump

(选项)。



常用的语法有:

–add-drop-table

:在每个创建数据库表语句前添加删除数据库表的语句;

–add-locks

:备份数据库表时锁定数据库表;

–all-databases

:备份

MySQL

服务器上的所有数据库;

–comments

:添加注释信息;

–compact

:压缩模式,产生更少的输出;

–complete-insert

:输出完成的插入语句;

–databases

:指定要备份的数据库;

–default-character-set

:指定默认字符集;

–force

:当出现错误时仍然继续备份操作;

–host

:指定要备份数据库的服务器;

–lock-tables

:备份前,锁定所有数据库表;

–no-create-db

:禁止生成创建数据库语句;

–no-create-info

:禁止生成创建数据库库表语句;

–password

:连接

MySQL

服务器的密码;

–port



MySQL

服务器的端口号;

–user

:连接

MySQL

服务器的用户名。



数据备份的简单实例:


mysqldump



导出整个数据库

:

mysqldump -u

用户名

-p

数据库名

>

导出的文件名



例:


mysqldump -u linuxde -p smgp_apps_linuxde > linuxde.sql


mysqldump



导出一个表

mysqldump -u

用户名

-p

数据库名


表名

>

导出的文件名


例:

mysqldump -u linuxde -p smgp_apps_linuxde users > linuxde_users.sql


mysqldump



导出一个数据库结构

mysqldump -u linuxde -p -d –add-drop-table smgp_apps_linuxde > linuxde_db.sql


Mydumper

mydumper



MySQL

数据库备份的一个轻量级第三方开源工具,备份方式为逻辑备份,支持多线程,备份速度远高于原生态的

mysqldump

。用法为:



mydumper [OPTION...] multi-threaded MySQL dumping 



常用的语法:




-B, –database              需要备份的库  

-T, –tables-list           需要备份的表,用逗号分隔  

-o, –outputdir             输出文件的目录  

-s, –statement-size        生成插入语句的字节数, 默认 1000000

-r, –rows                  分裂成很多行块表  

-c, –compress              压缩输出文件  

-e, –build-empty-files     即使表没有数据,还是产生一个空文件  

-x, –regex                 正则表达式: 'db.table'  

-i, –ignore-engines        忽略的存储引擎,用逗号分隔  

-m, –no-schemas            不导出表结构  

-k, –no-locks              不执行共享读锁 警告:这将导致不一致的备份  

-l, –long-query-guard      设置长查询时间,默认60秒, 

–kill-long-queries         kill掉长时间执行的查询   

-b, –binlogs               导出binlog  

-D, –daemon                启用守护进程模式  

-I, –snapshot-interval     dump快照间隔时间,默认60s,需要在daemon模式下  

-L, –logfile               日志文件  

-t, –threads               使用的线程数,默认4  

-C, –compress-protocol     在mysql连接上使用压缩协议  

-V, –version               Show the program version and exit  

-v, –verbose               更多输出, 0 = silent, 1 = errors, 2 = warnings, 3 = info, default 2


数据备份的简单示例


1 备份单个库  

# mydumper -u 用户名 -p 密码 -B 需要备份的库名 -o /tmp/bak


2 备份所有数据库:全库备份期间除了information_schema与performance_schema之外的库都会被备份

# mydumper -u 用户名 -p 密码 -o /tmp/bak

 -o 输出文件的目录(备份输出指定的目录)


3 备份单表

# mydumper -u 用户名 -p 密码 -B 库名 -T 表名 -o /tmp/bak

-T 需要备份的表,多表用逗号分隔 -o指定输出备份文件路径 


4 备份多表

# mydumper -u 用户名 -p 密码 -B 库名 -T 表1,表2 -o /tmp/bak


5、当前目录自动生成备份日期时间文件夹,不指定-o参数及值时默认为:export-20150703-145806

mydumper -u 用户名 -p 密码 -B 数据库名字 -T 表名


6、不带表结构备份表

# mydumper -u 用户名 -p 密码 -B 数据名字 -T 表名 -m

-m 不导出表结构


7、备份特定表

# mydumper -u 用户名 -p 密码 -B 数据库名字  –regex=actor* -o /tmp/bak

只备份以actor*开头的表


Xtrabackup

前两种工具都是逻辑备份,而Xtrabackup是物理备份,是商业备份工具InnoDB Hotbackup的替代品,包含的两个主要工具分别是xtrabackup和innobackupex。其中xtrabackup只能备份innodb和xtradb两种引擎的表,而不能备份myisam引擎的表,而innobackupex是一个封装了xtrabackup的Perl脚本,可同时备份innodb和myisam,但在对myisam备份时需要加一个全局的读锁,且myisam不支持增量备份。

另外,还有两个相对比较小众的工具分别是xbcrypt和xbstream ,xbcrypt是加解密用的,xbstream 类似于tar,是 Percona 自己实现的一种支持并发写的流文件格式。


常用的参数


1) innobackupex 参数选项

–defaults-file=[MY.CNF]    //指定配置文件:只能从给定的文件中读取默认选项。 且必须作为命令行上的第一个选项;必须是一个真实的文件,它不能是一个符号链接。

–databases=#    //指定备份的数据库和表,格式为:–database="db1[.tb1] db2[.tb2]" 多个库之间以空格隔开,如果此选项不被指定,将会备份所有的数据库。

–include 传递给 xtrabackup –tables。

–tables-file=FILE    //此选项的参数需要是一个文件名,此文件中每行包含一个要备份的表的完整名称,格式为databasename.tablename。该选项传递给 xtrabackup –tables-file,与–tables选项不同,只有要备份的表的库才会被创建。

–compact    //创建紧凑型备份,忽略所有辅助索引页,只备份data page;通过–apply-log中重建索引–rebuild-indexs。

–compress    //此选项指示xtrabackup压缩备份的InnoDB数据文件,会生成 *.qp 文件。

–decompress    //解压缩qp文件,为了解压缩,必须安装 qpress 工具。

–no-timestamp    //指定了这个选项备份将会直接存储在 BACKUP-DIR 目录,不再创建时间戳文件夹。

想查看更多的参数,请戳:

https://www.percona.com/doc/perconaxtrabackup/2.4/innobackupex/innobackupex_option_reference.html


2) xtrabackup 参数选项

–apply-log-only    //这个选项使在准备备份(prepare)时,只执行重做(redo)阶段,这对于增量备份非常重要。

–backup   //进行备份并将其放入

–check-privileges   //此选项检查Percona XtraBackup是否具有所有必需的权限。

–compact  //跳过辅助索引页来创建压缩备份。

想查看更多的参数,请戳: 

https://www.percona.com/doc/percona-xtrabackup/LATEST/xtrabackup_bin/xbk_option_reference.html


数据备份的简单示例


innobackupex完全备份


#备份所有数据库:备份目录里生成日期命名的文件夹

innobackupex –defaults-file=/etc/mysql/my.cnf –user=root –password=123 /home/zhoujy/xtrabackup/


#备份所有数据库:指定备份目录

innobackupex –defaults-file=/etc/mysql/my.cnf –user=root –password=123 –no-timestamp /home/zhoujy/xtrabackup/


#备份指定数据库名,多个数据库用空格分开

innobackupex –defaults-file=/etc/mysql/my.cnf –user=root –password=123 –no-timestamp –databases="dba_test xtra_test" /home/zhoujy/xtrabackup/


#备份指定表


备份不同库下的不同表

1:innobackupex –defaults-file=/etc/mysql/my.cnf –user=root –password=123 –no-timestamp –databases="dba_test.tb1 xtra_test.M" /home/zhoujy/xtrabackup/

备份一个库下面的表,支持正则,如:–include='^mydatabase[.]mytable' 

2:innobackupex –defaults-file=/etc/mysql/my.cnf –user=root –password=123 –no-timestamp –include='xtra_test.I' /home/zhoujy/xtrabackup/

备份指定文件里的表,文件里每行的格式是:dbname.tbname

3:innobackupex –defaults-file=/etc/mysql/my.cnf –user=root –password=123 –no-timestamp –tables-file=/tmp/tbname.txt  /home/zhoujy/xtrabackup/


innobackupex 增量备份


#全量备份,这里举例单个表,也可以是指定几个库,甚至所有库

innobackupex –defaults-file=/etc/mysql/my.cnf –user=root –password=123 –no-timestamp –databases="xtra_test.I" /home/zhoujy/xtrabackup/


#增量备份1

innobackupex –defaults-file=/etc/mysql/my.cnf –user=root –password=123 –no-timestamp –databases="xtra_test.I" –incremental-basedir=/home/zhoujy/xtrabackup/  –incremental /home/zhoujy/increment_data/


#增量备份2

innobackupex –defaults-file=/etc/mysql/my.cnf –user=root –password=123 –no-timestamp –databases="xtra_test.I" –incremental-basedir=/home/zhoujy/increment_data/ –incremental /home/zhoujy/increment_data1/


Xtrabackup全量备份


1:指定–defaults-file

xtrabackup –defaults-file=/etc/mysql/my.cnf –user=root –password=123  –backup –target-dir=/home/zhoujy/xtrabackup/


2:用–datadir取代–defaults-file

xtrabackup –user=root –password=123  –backup –datadir=/var/lib/mysql/ –target-dir=/home/zhoujy/xtrabackup/


Xtrabackup增量备份


#备份,这里指定几个库和表,也可以是所有库


1:库全量备份

xtrabackup –user=root –password=123 –datadir=/var/lib/mysql/ –backup –parallel=3 –databases="xtra_test dba_test" –target-dir=/home/zhoujy/xtrabackup/


2:增量备份

xtrabackup –user=root –password=123 –datadir=/var/lib/mysql/ –backup –parallel=3 –databases="xtra_test dba_test" –target-dir=/home/zhoujy/xtrabackup1/ –incremental-basedir=/home/zhoujy/xtrabackup/

注意:要是有多个增量备份,第2个增量需要指定第一个增量的目录。和innobackupex一样。

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。