mysqldump备份参数⼤全(带详细解释)
介绍
在⽇常维护⼯作当中经常会需要对数据进⾏导出操作,⽽mysqldump是导出数据过程中使⽤⾮常频繁的⼀个⼯具;它⾃带的功能参数⾮常多,⽂章中会列举出⼀些常⽤的操作,在⽂章末尾会将所有的参数详细说明列出来。
语法:
默认不带参数的导出,导出⽂本内容⼤概如下:创建数据库判断语句-删除表-创建表-锁表-禁⽤索引-插⼊数据-启⽤索引-解锁表。
Usage: mysqldump [OPTIONS] database [tables]
OR    mysqldump [OPTIONS] --databases [OPTIONS] DB1 []
OR    mysqldump [OPTIONS] --all-databases [OPTIONS]
插⼊测试数据
CREATE DATABASE db1 DEFAULT CHARSET utf8;
USE db1;
CREATE TABLE a1(id int);
insert into a1() values(1),(2);
CREATE TABLE a2(id int);
insert into a2() values(2);
CREATE TABLE a3(id int);
insert into a3() values(3);
CREATE DATABASE db2 DEFAULT CHARSET utf8;
USE db2;
CREATE TABLE b1(id int);
insert into b1() values(1);
CREATE TABLE b2(id int);
insert into b2() values(2);长沙广告设计与制作公司
1.导出所有数据库
该命令会导出包括系统数据库在内的所有数据库
mysqldump -uroot -proot --all-databases >/tmp/all.sql
2.导出db1、db2两个数据库的所有数据
somebody
mysqldump -uroot -proot --databases db1 db2 >/tmp/user.sql
3.导出db1中的a1、a2表
注意导出指定表只能针对⼀个数据库进⾏导出,且导出的内容中和导出数据库也不⼀样,导出指定表的导出⽂本中没有创建数据库的判断语句,只有删除表-创建表-导⼊数据
字符串数组c++mysqldump -uroot -proot --databases db1 --tables a1 a2  >/tmp/db1.sql
4.条件导出,导出db1表a1中id=1的数据
如果多个表的条件相同可以⼀次性导出多个表
字段是整形
mysqldump -uroot -proot --databases db1 --tables a1 --where='id=1'  >/tmp/a1.sql
字段是字符串,并且导出的sql中不包含drop table,create table
mysqldump -uroot -proot --no-create-info --databases db1 --tables a1 --where="id='a'"  >/tmp/a1.sql
5.⽣成新的binlog⽂件,-F
有时候会希望导出数据之后⽣成⼀个新的binlog⽂件,只需要加上-F参数即可
mysqldump -uroot -proot --databases db1 -F >/tmp/db1.sql
6.只导出表结构不导出数据,--no-data
mysqldump -uroot -proot --no-data --databases db1 >/tmp/db1.sql
7.跨服务器导出导⼊数据
mysqldump --host=h1 -uroot -proot --databases db1 |mysql --host=h2 -uroot -proot db2
将h1服务器中的db1数据库的所有数据导⼊到h2中的db2数据库中,db2的数据库必须存在否则会报错
mysqldump --host=192.168.80.137 -uroot -proot -C --databases test |mysql --host=192.168.80.133 -uroot -proot test
加上-C参数可以启⽤压缩传递。
8.将主库的binlog位置和⽂件名追加到导出数据的⽂件中,--dump-slave
注意:--dump-slave命令如果当前服务器是从服务器那么使⽤该命令会执⾏stop slave来获取master binlog的⽂件和位置,等备份完后会⾃动执⾏start slave启动从服务器。但是如果是⼤的数据量备份会
给从和主的延时变的更⼤,使⽤--dump-slave获取到的只是当前的从服务器的数据执⾏到的主的binglog的位置是(relay_mater_log_file,exec_master_log_pos),⽽不是主服务器当前的binlog执⾏的位置,主要是取决于主从的数据延时。
该参数在在从服务器上执⾏,相当于执⾏show slave status。当设置为1时,将会以CHANGE MASTER命令输出到数据⽂件;设置为2时,会在change前加上注释。
该选项将会打开--lock-all-tables,除⾮--single-transaction被指定。
在执⾏完后会⾃动关闭--lock-tables选项。--dump-slave默认是1
mysqldump -uroot -proot --dump-slave=1 --databases db1 >/tmp/db1.sql
mysqldump -uroot -proot --dump-slave=2 --database db1 >/tmp/db1.sql
mysql面试题大全
9.将当前服务器的binlog的位置和⽂件名追加到输出⽂件,--master-data
该参数和--dump-slave⽅法⼀样,只是它是记录的是当前服务器的binlog,相当于执⾏show master status,状态(file,position)的值。
注意:--master-data不会停⽌当前服务器的主从服务
10.--opt
等同于--add-drop-table, --add-locks, --create-options, --quick, --extended-insert, --lock-tables, --set-charset, --disable-keys 该选项默认开启,可以⽤--skip-opt禁⽤.
mysqldump -uroot -p --host=localhost --all-databases --opt
11.保证导出的⼀致性状态--single-transaction
该选项在导出数据之前提交⼀个BEGIN SQL语句,BEGIN 不会阻塞任何应⽤程序且能保证导出时数据库的⼀致性状态。它只适⽤于多版本存储引擎(它不显⽰加锁通过判断版本来对⽐数据),仅InnoDB。本选项和--lock-tables 选项是互斥的,因为LOCK TABLES 会使任何挂起的事务隐含提交。要想导出⼤表的话,应结合使⽤--quick 选项。
--quick, -q
不缓冲查询,直接导出到标准输出。默认为打开状态,使⽤--skip-quick取消该选项。
12.--lock-tables, -l
开始导出前,锁定所有表。⽤READ LOCAL锁定表以允许MyISAM表并⾏插⼊。对于⽀持事务的表例如InnoDB和BDB,--single-transaction 是⼀个更好的选择,因为它根本不需要锁定表。
请注意当导出多个数据库时,--lock-tables分别为每个数据库锁定表。因此,该选项不能保证导出⽂件中的表在数据库之间的逻辑⼀致性。不同数据库表的导出状态可以完全不同。
13.导出存储过程和⾃定义函数--routines, -R
mysqldump  -uroot -p --host=localhost --all-databases --routines
14.压缩备份
压缩备份
mysqldump -uroot -proot --databases abc 2>/dev/null |gzip >/
还原
gunzip -c |mysql -uroot -proot abc
参数说明:
--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
--add-drop-database
每个数据库创建之前添加drop数据库语句。
mysqldump  -uroot -p --all-databases --add-drop-database
--add-drop-table
每个数据表创建之前添加drop数据表语句。(默认为打开状态,使⽤--skip-add-drop-table取消选项)
mysqldump  -uroot -p --all-databases  (默认添加drop语句)
mysqldump  -uroot -p --all-databases –skip-add-drop-table  (取消drop语句)
--add-locks
源代码概括
在每个表导出之前增加LOCK TABLES并且之后UNLOCK  TABLE。(默认为打开状态,使⽤--skip-add-locks取消选项)
mysqldump  -uroot -p --all-databases  (默认添加LOCK语句)
mysqldump  -uroot -p --all-databases –skip-add-locks  (取消LOCK语句)
--allow-keywords
允许创建是关键词的列名字。这由表名前缀于每个列名做到。
mysqldump  -uroot -p --all-databases --allow-keywords
--apply-slave-statements
在'CHANGE MASTER'前添加'STOP SLAVE',并且在导出的最后添加'START SLAVE'。
mysqldump  -uroot -p --all-databases --apply-slave-statements
--character-sets-dir
字符集⽂件的⽬录
mysqldump  -uroot -p --all-databases  --character-sets-dir=/usr/local/mysql/share/mysql/charsets
--comments
附加注释信息。默认为打开,可以⽤--skip-comments取消
mysqldump  -uroot -p --all-databases  (默认记录注释)
mysqldump  -uroot -p --all-databases --skip-comments  (取消注释)
--compatible
导出的数据将和其它数据库或旧版本的MySQL 相兼容。值可以为ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、
no_key_options、no_tables_options、no_field_options等,
要使⽤⼏个值,⽤逗号将它们隔开。它并不保证能完全兼容,⽽是尽量兼容。
mysqldump  -uroot -p --all-databases --compatible=ansi
--compact
导出更少的输出信息(⽤于调试)。去掉注释和头尾等结构。可以使⽤选项:--skip-add-drop-table  --skip-add-locks --skip-comments --skip-disable-keys mysqldump  -uroot -p --all-databases --compact
--complete-insert,  -c
使⽤完整的insert语句(包含列名称)。这么做能提⾼插⼊效率,但是可能会受到max_allowed_packet参数的影响⽽导致插⼊失败。
mysqldump  -uroot -p --all-databases --complete-insertcss段落首行缩进2字符
--compress, -C
在客户端和服务器之间启⽤压缩传递所有信息
mysqldump  -uroot -p --all-databases --compress
--create-options,  -a
在CREATE TABLE语句中包括所有MySQL特性选项。(默认为打开状态)
mysqldump  -uroot -p --all-databases
--databases,  -B
导出⼏个数据库。参数后⾯所有名字参量都被看作数据库名。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。