mysqldump 使用说明
mysqldump 使用说明
A Database Backup Program
mysqldump客户端是一款实用的mysql备份程序,可以对数据库的定义及数据表内容,进行备份生成相应的SQL语句。它可以对一个或多个数据库进行备份,或转数据移到另一个SQL Server。mysqldump命令可以生成输出CSV,其他分隔符的文本,或XML格式。
推荐使用mysql5.7.9以后的mysqldump工具,之前的工具,对表的列定义有一些BUG,可以使用INFORMATION_SCHEMA.COLUMNS 表来确定需要生成列的表。
mysqldump需要SELECT权限来导出表,SHOW VIEW来导出视图,TRIGGER来导出触发器,如果没有使用--single-transaction 选项,需要LOCK TABLES锁表,其他的导出功能还需要其他的权限。
导入一个dump导出的文件,需要具有执行它所包含的语句的权限,例如语句中包含CREATE等。
如果在windows中导出,默认的文件格式是UTF-16,它是不允许的连接字符集。这种格式载入的时候将产生错误。
mysqldump [options] > dump.sql
加上--result-file导出ASCII格式
mysqldump [options] --result-file=dump.sql
性能和可扩展方面的考虑 Performance and Scalability Considerations
mysqldump的优点是它提供一个较为方便和灵活的方式,可以在导出前进行查看和编辑。你可以将数据库进行拷备,用来做为开发环境的,或是一些其他的用途。
如果进行备份大量的数据,它不是一个好的方案。备份步骤需要一些时间,数据恢复会很慢,因为重新导入SQL语句涉及磁盘I/O插入,创建索引,等等。
对于大规模的备份和还原,物理备份是比较合适的,以他们的原始格式复制数据文件,可以快速恢复
mysqldump可以检索和备份数据以一行一行的方式。或者它可以检索在内存中的表,在导出之前。但是如果表是很大的话,使用内存中的表可能会有一些问题。默认是一行一行的方式读取数据的,即启用了--quick选项(--opt),如果要使用内存表,使用--skip-quick选项。
如果使用较新的mysqldump导出了数据,但是恢复到一个较老的mysql版本中,使用 --skip-opt选项代替--opt,或使用--extended-insert选项
调用语法 Invocation Syntax
一般有以下三种方式使用mysqldump,调用一个库的一张或多张表,一个或多个库,或者全部的数据库。
```
shell> mysqldump [options] db_name [tbl_name ...]
shell> mysqldump [options] --databases db_name ...
shell> mysqldump [options] --all-databases
```
选项配置
连接服务器相关配置 Connection Options
--bind-address=ip_address
如果一台计算机上有多个网络接口,使用bind-address=ip_address选项,还指定连接到服务器的哪个接口
--compress, -C
如果支持压缩,客户端与服务端之间的信息传输,将被压缩。
--default-auth=plugin
A hint about the client-side authentication plugin to use. See Section 7.3.8, “Pluggable Authentication”.
--enable-cleartext-plugin
Enable the mysql_clear_password cleartext authentication plugin. (See Section 7.5.1.8, “The Cleartext Client-Side Authentication Plugin”.)
This option was added in MySQL 5.7.10.
--host=host_name, -h host_name
指定从哪台mysql服务器dump数据,默认是localhost
--login-path=name
Read options from the named login path in the .mylogin.cnf login path file. A “login path” is an option group containing options that specify which MySQL server to connect to and which account to authenticate as. To create or modify a login path file, use the mysql_config_editor utility. See Section 5.6.6, “mysql_config_editor — MySQL Configuration Utility”.
--password[=password], -p[password]
连接mysql的密码,可以使用缩写-p选项,如果使用-p,则密码与参数之间不能有空格,可以在配置文件中[mysqldump]指定password
--pipe, -W
在windows中使用--pipe
On Windows, connect to the server using a named pipe. This option applies only if the server supports named-pipe connections.
--port=port_num, -P port_num
mysql 的 TCP/IP 端口,默认是3306
--protocol={TCP|SOCKET|PIPE|MEMORY}
连接协议,有TCP|SOCKET|PIPE|MEMORY几种可供使用
--secure-auth
不要以旧的密码格式发送到服务器,这将阻止连接,除非使用新的密码格式。5.7.4新增。5.7.5被丢弃。
--socket=path, -S path
在本地localhost连接mysql是,将使用socket连接,windows使用的是pipe
--ssl*
是否使用ssl连接到mysql服务
--tls-version=protocol_list
The protocols permitted by the client for encrypted connections. The value is a comma-separated list containing one or more protocol names. The protocols that can be named for this option depend on the SSL library used to compile MySQL. For details, see Section 7.4.3, “Secure Connection Protocols and Ciphers”.
This option was added in MySQL 5.7.10.
--user=user_name, -u user_name
连接服务的mysql帐户名
You can also set the following variables by using --var_name=value syntax:
max_allowed_packet
The maximum size of the buffer for client/server communication. The default is 24MB, the maximum is 1GB.
net_buffer_length
client/server连接通信时的初始化buffer大小,当使用--extended-insert or --opt选项创建多行插入语句时,mysqldump会创建行达到net_buffer_length字节长度。
The initial size of the buffer for client/server communication. When creating multiple-row INSERT statements (as with the --extended-insert or --opt option), mysqldump creates rows up to net_buffer_length bytes long. If you increase this variable, ensure that the MySQL server net_buffer_length system variable has a value at least this large.
配置文件相关的选项 Option-File Options
--defaults-extra-file=file_name
额外的配置文件,将会在读取全局配置文件之后,用户配置文件之前,读取该配置文件内容。如果指定的文件不存在或不可访问,将发生一个错误。
--defaults-file=file_name
mysql配置文件,如果指定的文件不存在或不可访问,将发生一个错误。
--defaults-group-suffix=str
通常情况下mysqldump会读取[client],[mysqdump]组的配置,使用该选项,可以指定读取其他组配置,如--defaults=group-suffix=other,将还会读取[client_other],[mysqldump_other]组配置。
--no-defaults
不读取任何配置文件
如果存在.mylogin.cnf文件,不管什么情况都会读取该配置文件。它将阻止password被使用在命令行方式。而使用一个更加安全的方式。
The exception is that the .mylogin.cnf file, if it exists, is read in all cases. This permits passwords to be specified in a safer way than on the command line even when --no-defaults is used. (.mylogin.cnf is created by the mysql_config_editor utility. See Section 5.6.6, “mysql_config_editor — MySQL Configuration Utility”.)
--print-defaults
打印从配置文件读取的所有配置信息。
DDL选项
--add-drop-database
在每个CREATE DATABASE之前,增加DROP DATABASE语句,通常和 --all-databases or --databases 一起使用,因为如果不使用这其中之一的选项,将不会创建CREATE DATABASE语句
--add-drop-table
添加DROP TABLE 语句在每个 CREATE TABLE之前
--add-drop-trigger
添加DROP TRIGGER 触发器语句,在每个 CREATE TRIGGER 之前
--all-tablespaces, -Y
该选项是和NDB集群相关的,其他类型无效。每个表需要创建tablespaces
--no-create-db, -n
不创建CREATE DATABASE语句,和 --all-databases or --databases 一起使用才生效。
--no-create-info, -t
不创建CREATE TABLE语句
This option does not exclude statements creating log file groups or tablespaces from mysqldump output; however, you can use the --no-tablespaces option for this purpose.
--no-tablespaces, -y
不输出所有 CREATE LOGFILE GROUP 和 CREATE TABLESPACE语句
--replace
使用REPLACE而不是INSERT
调试选项配置 Debug Options
--allow-keywords
允许创建带mysql系统关键字的列字段,但是会在字段前加上表名前缀。如table_cloumn
--comments, -i
在导出的文件中添加如version,host等信息,默认启用,可以使用 --skip-comments不输出这些信息
--debug[=debug_options], -# [debug_options]
Write a debugging log. A typical debug_options string is d:t:o,file_name. The default value is d:t:o,/tmp/mysqldump.trace.
--debug-check
Print some debugging information when the program exits.
--debug-info
Print debugging information and memory and CPU usage statistics when the program exits.
--dump-date
如果--comments开户,则使用该选项,将会在结尾,输出导出的时间,格式如下
-- Dump completed on DATE
--force, -f
忽略所有错误,继续执行导出,如果同时指定了--ignore-error ,那么 --force优先
--log-error=file_name
输出警告和错误信息到日志文件
--skip-comments
不显示相关版本信息等
--verbose, -v
print显示程序的详细信息
帮助选项 Help Options
The following options display information about the mysqldump command itself.
--help, -?
Display a help message and exit.
--version, -V
Display version information and exit.
国际化选项 Internationalization Options
--character-sets-dir=dir_name
The directory where character sets are installed. See Section 11.5, “Character Set Configuration”.
--default-character-set=charset_name
设置默认的字符集,默认是utf8
--no-set-names, -N
不写入SET NAMES default_character_set到文件。和--skip-set-charset一样。
--set-charset
写入 SET NAMES default_character_set 到导出文件,默认是开启的。使用--skip-set-charset关闭
主从复制相关 Replication Options
--master-data[=value]
使用--master-data这个选项将主复制服务器生成转储文件,可用于建立另一个maste的slave服务器,它会使导出语句包含CHANGE MASTER TO语句,它说明了二进制日志的坐标(file name和position),这些坐标信息将告诉slave服务器,在导入数据之后,从哪里开始复制maste服务器的信息,
如果master-data被设置为2,CHANGE MASTER TO语句将被导出为注释语句,将不会生效,如果设置为1,在导入文件后将立即生效。默认值是1
该选项需要数据库的RELOAD权限,并且 binary log被启用。
master-data选项,会自动关闭--lock-tables。并且会使用--lock-all-tables, 除非设置了--single-transaction选项,在这种情况下,在导出开始前,会在短时间里,获得一个全局的只读lock锁。
在所有情况下,日志中的任何操作都会发生在转储的确切时刻。
也可以使用--dump-slave选项,从一个slave导出数据,它会覆盖--master-data配置,如果2个选项都都使用,会使--master-data被忽略。
Use this option to dump a master replication server to produce a dump file that can be used to set up another server as a slave of the master. It causes the dump output to include a CHANGE MASTER TO statement that indicates the binary log coordinates (file name and position) of the dumped server. These are the master server coordinates from which the slave should start replicating after you load the dump file into the slave.
If the option value is 2, the CHANGE MASTER TO statement is written as an SQL comment, and thus is informative only; it has no effect when the dump file is reloaded. If the option value is 1, the statement is not written as a comment and takes effect when the dump file is reloaded. If no option value is specified, the default value is 1.
This option requires the RELOAD privilege and the binary log must be enabled.
The --master-data option automatically turns off --lock-tables. It also turns on --lock-all-tables, unless --single-transaction also is specified, in which case, a global read lock is acquired only for a short time at the beginning of the dump (see the description for --single-transaction). In all cases, any action on logs happens at the exact moment of the dump.
It is also possible to set up a slave by dumping an existing slave of the master, using the --dump-slave option, which overrides --master-data and causes it to be ignored if both options are used.
--delete-master-logs
在一个主复制服务器,在执行dump操作后,通过向服务器发送 PURGE BINARY LOGS语句,删除binary logs,该选项自动启用--master-data
On a master replication server, delete the binary logs by sending a PURGE BINARY LOGS statement to the server after performing the dump operation. This option automatically enables --master-data.
--set-gtid-purged=value
这个选项可以控制全局事务ID(GTID)信息写入到转储文件,通过指示是否添加一组@@global.gtid_purged语句输出。这个选项也可能导致输出一组SQL语句到文件,有可能禁用二进制日志,当转储文件被重新加载。
该选项有3个值:OFF,ON,AUTO,默认是AUTO(即ON)
--set-gtid-purged=OFF:不会向导出文件写入SET @@SESSION.SQL_LOG_BIN=0;(不禁用二进制日志)
--set-gtid-purged=ON:向导出文件写入SET @@SESSION.SQL_LOG_BIN=0;(禁用二进制日志)
This option enables control over global transaction ID (GTID) information written to the dump file, by indicating whether to add a SET @@global.gtid_purged statement to the output. This option may also cause a statement to be written to the output that disables binary logging while the dump file is being reloaded.
The following table shows the permitted option values. The default value is AUTO.
Value Meaning
OFF Add no SET statement to the output.
ON Add a SET statement to the output. An error occurs if GTIDs are not enabled on the server.
AUTO Add a SET statement to the output if GTIDs are enabled on the server.
The --set-gtid-purged option has the following effect on binary logging when the dump file is reloaded:
--set-gtid-purged=OFF: SET @@SESSION.SQL_LOG_BIN=0; is not added to the output.
--set-gtid-purged=ON: SET @@SESSION.SQL_LOG_BIN=0; is added to the output.
--set-gtid-purged=AUTO: SET @@SESSION.SQL_LOG_BIN=0; is added to the output if GTIDs are enabled on the server you are backing up (that is, if AUTO evaluates to ON).
--dump-slave[=value]
该选项和 --master-data 选项类似,但是它可以用来从一个slave导出文件,并且将导出的文件导入另一个mysql服务器,用来启动另一个slave服务器,这样它们所属的maste是一样的。这样导出的文件,将会包含 CHANGE MASTER TO 语句,它包含了slave服务器所属的maste的坐标(file name 和position)。 CHANGE MASTER TO 会读取Relay_Master_Log_File 和Exec_Master_Log_Pos 的值(SHOW SLAVE STATUS 可以显示),将它们的值分别赋值给 MASTER_LOG_FILE 和 MASTER_LOG_POS respectively.这些值是告诉slave该从master的哪个位置开始复制信息。
注意!如果已执行的中继日志(relay log)中的事务序列不一致,会导致错误的位置被使用
--dump-slave 使用的是master主服务器的坐标被使用,而不是导出它的那台服务器。它和--master-data是一样的。另外使用--dump-slave将导致master-data覆盖
警告!如果使用了 gtid_mode=ON and MASTER_AUTOPOSITION=1这2个选项,将不能使用该选项。
该选项的值和--master-data是一样的。
如果被设置为2,CHANGE MASTER TO语句将被导出为注释语句,将不会生效,如果设置为1,在导入文件后将立即生效。默认值是1,锁表机制也和master-data是一样的。
该选项将停止slave thread线程,在导出前停止,导完后重新启动。
结合 --dump-slave选项,dump-slave——apply-slave-statements和include-master-host-port选项也可以使用。
This option is similar to --master-data except that it is used to dump a replication slave server to produce a dump file that can be used to set up another server as a slave that has the same master as the dumped server. It causes the dump output to include a CHANGE MASTER TO statement that indicates the binary log coordinates (file name and position) of the dumped slave's master. The CHANGE MASTER TO statement reads the values of Relay_Master_Log_File and Exec_Master_Log_Pos from the SHOW SLAVE STATUS output and uses them for MASTER_LOG_FILE and MASTER_LOG_POS respectively. These are the master server coordinates from which the slave should start replicating.
Note
Inconsistencies in the sequence of transactions from the relay log which have been executed can cause the wrong position to be used. See Section 18.4.1.34, “Replication and Transaction Inconsistencies” for more information.
--dump-slave causes the coordinates from the master to be used rather than those of the dumped server, as is done by the --master-data option. In addition, specfiying this option causes the --master-data option to be overridden, if used, and effectively ignored.
Warning
This option should not be used if the server where the dump is going to be applied uses gtid_mode=ON and MASTER_AUTOPOSITION=1.
The option value is handled the same way as for --master-data (setting no value or 1 causes a CHANGE MASTER TO statement to be written to the dump, setting 2 causes the statement to be written but encased in SQL comments) and has the same effect as --master-data in terms of enabling or disabling other options and in how locking is handled.
This option causes mysqldump to stop the slave SQL thread before the dump and restart it again after.
In conjunction with --dump-slave, the --apply-slave-statements and --include-master-host-port options can also be used.
--apply-slave-statements
在slave库中使用--dump-slave导出文件的时候,可以在CHANGE MASTER TO的前面加上STOP SLAVE语句,并且在导出文件的最后加上START SLAVE语句。这样可以在重新导入的时候stop slave,导入完成后start slave
For a slave dump produced with the --dump-slave option, add a STOP SLAVE statement before the CHANGE MASTER TO statement and a START SLAVE statement at the end of the output.
--include-master-host-port
在slave库中使用--dump-slave导出文件的时候, 添加MASTER_HOST 和 MASTER_PORT选项配置,指明主库master的host name和tcp/ip端口。
For the CHANGE MASTER TO statement in a slave dump produced with the --dump-slave option, add MASTER_HOST and MASTER_PORT options for the host name and TCP/IP port number of the slave's master.
格式化选项 Format Options
--compact
产生较为紧凑的输出,该选项相当于使用了 --skip-add-drop-table, --skip-add-locks, --skip-comments, --skip-disable-keys, 和 --skip-set-charset options选项的功能。
--compatible=name
导出兼容其他数据库系统,或旧版本的mysql语句的文件,值可以是 ansi, mysql323, mysql40, postgresql, oracle, mssql, db2, maxdb, no_key_options, no_table_options, or no_field_options. 多个值可以使用','分开。该选项和SQL mode相关
This option does not guarantee compatibility with other servers. It only enables those SQL mode values that are currently available for making dump output more compatible. For example, --compatible=oracle does not map data types to Oracle types or use Oracle comment syntax.
至少需要4.1.0上版本才能使用该选项
--complete-insert, -c
导出完整的插入语句,包括列名。
--create-options
Include all MySQL-specific table options in the CREATE TABLE statements.
--tab=dir_name, -T dir_name
指定一个目录(该目录针对运行mysql进程的系统帐户要有写入权限,且执行导出的mysql帐户要有FILE权限),用来存储导出的mysql文件。将为每张表tbl_name.sql文件,包含表的创建语句。同时创建 一个tbl_name.txt文件,包含表数据的内容。
其中tbl_name.txt表的数据内容,字段之间,默认用tab分开,行默认使用\n分开。
可以通过指定--fields-terminated-by=..., --fields-enclosed-by=..., --fields-optionally-enclosed-by=..., --fields-escaped-by=... --lines-terminated-by=...设置分隔符。这些选项的含义和 LOAD DATA INFILE的使用是相关的。
字段的内容是按--default-character-set 选项指定的编码进行存储的。
--hex-blob
导出二进制数据使用十六进制的方式存储(如将'abc' 变成 0x616263)受影响的数据类型有 BINARY, VARBINARY, the BLOB types, and BIT.
--quote-names, -Q
如database, table, and column 使用"`"字符,默认是开启的。--skip-quote-names跳过该功能。如果使用 ANSI_QUOTES SQL mode模式,将使用双引号'"'
--result-file=file_name, -r file_name
该选项输出指定的文件,并覆盖之前存在的内容,即使产生了错误。
该选项在windows中可用来避免产生\r\n格式的换行。
--tz-utc
导出文件中将包含 SET TIME_ZONE='+00:00' 类似的信息,可以避免不同服务器时区不同的问题
--xml, -X
导出XML格式的文件
NULL, 'NULL', 空字符
```
NULL (unknown value)
<field name="column_name" xsi:nil="true" />
'' (empty string)
<field name="column_name"></field>
'NULL' (string value)
<field name="column_name">NULL</field>
```
过滤选项 Filtering Options
以下选项控制哪种模式对象写入到转储文件:按类别,如触发或事件;按名称如,选择哪个数据库和表转储;甚至从表数据过滤行使用WHERE子句。
--all-databases, -A
导出全部数据库中的所有表
--databases, -B
导出部分数据库,通常情况导出数据,第一个参数是数据库名,之后的是表名,使用该选项,所有的参数都是数据库名
--events, -E
导出事件调度到文件,该选项需要EVENT权限。导出的文件将包含CREATE EVENT语句,不包含event 创建和修改的时间戳timestamps,如果被重新导入,将是载入时的时间戳。如果需要导入时间戳,使用mysql.event表中的内容
--ignore-error=error[,error]...
忽略错误,也可以使用--force
--ignore-table=db_name.tbl_name
忽略表名,不导出指定的表名,必需指定数据库名和表名,如果要忽略多个表,使用多个该选项配置,如--ignore-table=db_name.tbl_name1 --ignore-table=db_name.tbl_name2。
该选项还可用来忽略VIEW视图
--no-data, -d
不导出数据表的内容,如果只想导出表结构,可以使用该选项。
--routines, -R
导出包括存储程序(过程和函数)的数据。使用这个选项需要mysql.proc表的SELECT权限。
导出的数据将包含 CREATE PROCEDURE and CREATE FUNCTION 语句,该选项也不会导出相应的时间戳。如果要包含时间戳,使用mysql.proc 表的内容
-tables
重写 --databases or -B option ,该参数后的所有参数都是表名。
--where='where_condition', -w 'where_condition'
过滤行选项。
Examples:
```
--where="user='jimf'"
-w"userid>1"
-w"userid<1"
```
性能选项 Performance Options
通常性能受事务选项配置transactional options的影响
--disable-keys, -K
通常在insert语句的前后,写入 /*!40000 ALTER TABLE tbl_name DISABLE KEYS */; 和 /*!40000 ALTER TABLE tbl_name ENABLE KEYS */; 语句。这样在导入数据时将变得更快,因为索引是在所有行数据插入后才创建的。这个选项仅对没有唯一索引的myisam表有效。
--extended-insert, -e
将以INSERT多行的方式导出到文件,这样生成的文件将更小,且在导入数据的时候速度将更快
--insert-ignore
使用insert-ignore语句而不是insert
--opt
该选项默认被启用,相当于是开启了 --add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset选项。这个选项使导出更快,导入也更快。
使用--skip-opt 选项跳过该功能
--quick, -q
如果导出的表非常大,该选项非常有用,使用一行一行的检索方式,而不是从缓存中读取全部行
事务选项 Transactional Options
--add-locks
在导出的文件中添加LOCK TABLES and UNLOCK TABLES语句,这样在重新导入的时候更快。
--flush-logs, -F
在导出前刷新logs,该选项需要RELOAD权限。如果配合使用 --all-databases选项,所有库的日志将被刷新。除非开启了 --lock-all-tables, --master-data, or --single-transaction,这种情况只刷新一次logs,对应的那一刻,所有表是锁着的。
如果想让你导出的文件的那一刻和刷新日志在同一精确的时间,应该使用 --lock-all-tables, --master-data, or --single-transaction.
--flush-privileges
为导出的文件添加FLUSH PRIVILEGES语句。如果从旧版mysql升级到新5.7.2或更高版本,不要使用该选项。
--lock-all-tables, -x
锁住所有库的所有表,这将在导出数据期间,获取一个全局的只读锁。该选项会自动关闭--single-transaction and --lock-tables选项。
--lock-tables, -l
针对Myisam表,在导出前将锁住所有表,获得的是 READ LOCAL锁 ,期间允许并发写入。
针对事务型的表,如Innodb,使用--single-transaction 选项更为合适。因为它不需要锁表。
因为--lock-tables是针对每个表进行锁表的,并不保证每个导出的数据库文件在逻辑上的一致性。不同的database可能有不同的状态。
--no-autocommit
在每个导出的表的INSERT语句的周围写入 SET autocommit = 0 and COMMIT statements.
--order-by-primary
按表的主键转储行数据,或者按唯一索引。这在将myisam表导入到Innodb表的时候非常有用,但是会消耗更多的时间。
--single-transaction
这个选项,在导出之前,设置事务隔离模式为可重复读取( REPEATABLE READ)并且发送一个开始事务( START TRANSACTION )SQL语句。这对事务型的表如Innodb很有用。因为它保持一致的状态,当使用START TRANSACTION被执行,并不会阻塞其他的应用。
记住,myisam或者MEMORY类型的表的状态依旧会改变。
当开启了--single-transaction ,为了确保导出文件有效(正确的表内容,和binary log coordinates),不能有如下的修改表的操作:
ALTER TABLE, CREATE TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE
使用这些操作不能保证读的一致性。会产生读表内容出错。
--single-transaction和--lock-tables选项是互斥的,因为lock tables会导致挂起的事务被提交。
The --single-transaction option and the --lock-tables option are mutually exclusive because LOCK TABLES causes any pending transactions to be committed implicitly.
导出大的表,可以使用--single-transaction 结合 --quick 选项。
选项组 Option Groups
--opt
--compact
如果想选择性的禁用或启用组选项中的设置,顺序是很重要的,指令将从头到尾的被执行。
如果使用 --disable-keys --lock-tables --skip-opt这3个参数,则无法禁用keys和锁表,因为最后一条跳过了。
例子
1.备份某个库的所有内容
```
shell> mysqldump db_name > backup-file.sql
```
2.从备份中恢复
```
shell> mysql db_name < backup-file.sql
```
3.另外一种方式恢复数据
```
shell> mysql -e "source /path-to-backup/backup-file.sql" db_name
```
4.使用mysqldump导出数据到其他数据库
```
shell> mysqldump --opt db_name | mysql --host=remote_host -C db_name
```
5.备份多个数据库的
```
shell> mysqldump --databases db_name1 [db_name2 ...] > my_databases.sql
```
6.备份所有数据库
```
shell> mysqldump --all-databases > all_databases.sql
```
7.在线备份Innodb表
```
shell> mysqldump --all-databases --master-data --single-transaction > all_databases.sql
```
这种备份方式,需要为所有的表,获取一个全局的只读锁(在dump操作前,使用FLUSH TABLES WITH READ LOCK获取)。一旦全局只读锁获取,binary log coordinates将被获取,此时锁被释放。如果在使用FLUSH操作期间,有一个update操作占用了较长时间,mysql服务器将会无响应,直到update操作结束。此后锁被释放,可以进行对表的读写操作。
为了恢复到某一个时间点的备份,通常使用 binary log,或者要知道 在导出数据时,binary log的坐标。
```
shell> mysqldump --all-databases --master-data=2 > all_databases.sql
或者
shell> mysqldump --all-databases --flush-logs --master-data=2 > all_databases.sql
```
如果是Innodb表备份,可以使用同时使用--master-data --single-transaction选项备份某个时间点的数据。
如果想使用--opt的全部选项,除了extended-insert,quick 。使用--skip,如 --opt --skip-extended-insert --skip-quick(--opt可省略,因为默认启用)
如果想跳过--opt,只使用disable-keys,lock-tables功能。使用--skip-opt --disable-keys --lock-tables
限制
mysqldump操作,默认不导出以下数据库,INFORMATION_SCHEMA, performance_schema, or (as of MySQL 5.7.8) sys schema
如果想导出,则使用明确说明的方式 --databases INFORMATION_SCHEMA等。对INFORMATION_SCHEMA 和 performance_schema, 通常使用 --skip-lock-tables 选项。
mysqldump不会导出 MySQL Cluster ndbinfo信息
不推荐在5.6.9之前使用GTIDs功能导出
mysqldump包含了mysql库中的general_log and slow_query_log 表,Log表内容不会被导出。
参考:
http://dev.mysql.com/doc/refman/5.7/en/mysqldump.html
http://dev.mysql.com/doc/refman/5.7/en/using-mysqldump.html
mysqldump 使用说明的更多相关文章
- MySQL备份工具之mysqldump使用
MySQL备份工具之mysqldump使用说明 一.备份分类 根据能否停用数据库,将备份类型分为: 1. 冷备:数据库服务停止后备份 2. 温备:只能对数据库进行读操作,不能进行写操作 3. 热备:在 ...
- Atitit.项目修改补丁打包工具 使用说明
Atitit.项目修改补丁打包工具 使用说明 1.1. 打包工具已经在群里面.打包工具.bat1 1.2. 使用方法:放在项目主目录下,执行即可1 1.3. 打包工具的原理以及要打包的项目列表1 1. ...
- mysqldump和xtrabackup备份原理实现说明
背景: MySQL数据库备份分为逻辑备份和物理备份两大类,犹豫到底用那种备份方式的时候先了解下它们的差异: 逻辑备份的特点是:直接生成SQL语句,在恢复的时候执行备份的SQL语句实现数据库数据的重现. ...
- MySQL mysqldump数据导出详解
介绍 在日常维护工作当中经常会需要对数据进行导出操作,而mysqldump是导出数据过程中使用非常频繁的一个工具:它自带的功能参数非常多,文章中会列举出一些常用的操作,在文章末尾会将所有的参数详细说明 ...
- PHP定时备份MySQL,mysqldump语法大全
几个常用操作: 1.备份 # 只导出表结构 d:/PHP/xampp/mysql/bin/mysqldump -h127.0.0.1 -P3306 -uroot -p123456 snsgou_sns ...
- 【摘】Mysql备份还原数据库之mysqldump实例及参数详细说明
原文http://www.cnblogs.com/xuejie/archive/2013/01/11/2856911.html 我们在运营项目的过程中肯定会遇到备份数据库,还原数据库的情况,我们一 ...
- Mysql备份还原数据库之mysqldump实例及参数详细说明
[root@localhost myexport]# mysqldump -h211.100.75.204 -uroot -p@^#coopen -P5029 --single-transaction ...
- 利用mysqldump 将一个表按条件导出数据
mysqldump -uroot -pdsideal -t dsideal_db t_resource_info --where="res_type=1 and group_id=1 and ...
- Mysqldump参数大全
Mysqldump参数大全(参数来源于mysql5.5.19源码) 参数 参数说明 --all-databases , -A 导出全部数据库. mysqldump -uroot -p --al ...
随机推荐
- Android和BLE模块连接通信
首先,进行一下科普: 1.BLE(Bluetooth Low Energy),蓝牙4.0核心profile,主要特点是快速搜索,快速连接,超低功耗保持连接和数据传输,缺点:数据传输速率低,由于其具有低 ...
- 解剖 Elasticsearch 集群 - 之三
解剖 Elasticsearch 集群 - 之三 本篇文章是一系列涵盖 Elasticsearch 底层架构和原型示例的其中一篇.在本篇文章中,我们会讨论 Elasticsearch 如何提供准实时搜 ...
- redis sets类型及操作
sets类型及操作set是集合,它是string类型的无序集合.通过hash table实现,添加.删除.查找的复杂度都是0(1).对集合我们可以实现取交际.差集并集.通过这些操作我们可以实现SNS中 ...
- CSS的position设置
CSS的position设置: <%@ page language="java" contentType="text/html; charset=UTF-8&quo ...
- MyBatis CRUD Java POJO操作
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC ...
- 清理微信浏览网站的缓存,Cookie
微信官方说明是取消关注,但是开发中发现取消关注缓存还是存在! 解决方法如下: 方法一: 用微信内置浏览器打开这个网页debugx5.qq.com ,就会有清除缓存的选项,如下图 方法二: 如果你用An ...
- php知识点总结(一)
1.把数组以表格的形式显示 <?php $array = array( '书籍' => array( '生活', '人与自然','动物世界'), '体育用品' => array ...
- 导入礼包时,遇到file_get_contents读取的文本,去除空格、换行等的方法
解决方法:正则替换: 代码:$gift_code_str = preg_replace('/((\s)*(\n)+(\s)*) /i ',',',file_get_contents($gift_cod ...
- Java自然语言处理NLP工具包
1. Java自然语言处理 LingPipe LingPipe是一个自然语言处理的Java开源工具包.LingPipe目前已有很丰富的功能,包括主题分类(Top Classification).命名实 ...
- java较全的面试题
一.Java基础部分 1. JAVA的基本数据类型有哪些 ? String 是不是基本数据类型 ? 2. 一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? ...