1. 语法选项说明
--delete-master-logs
备份完成后删除主库上的日志。这个选项会自动打开``--master-data`。
--opt
同-add-drop-table, --add-locks, --create-options, --quick, --extended-insert, --lock-tables, --set-charset, --disable-keys。(默认已开启,--skip-opt关闭表示这些选项保持它的默认值)应该给你为读入一个MySQL服务器的尽可能最快的导出,--compact差不多是禁用上面的选项。
-q, --quick
不缓冲查询,直接导出至stdout。(默认打开,用--skip-quick来关闭)该选项用于转储大的表。
--set-charset
将SET NAMES default_character_set加到输出中。该选项默认启用。要想禁用SET NAMES语句,使用--skip-set-charset。
--add-drop-tables
在每个CREATE TABLE语句前添加DROP TABLE语句。默认开启。
--add-locks
在每个表导出之前增加LOCK TABLES并且之后UNLOCK TABLE。(为了使得更快地插入到MySQL)。默认开启。
--create-option
在CREATE TABLE语句中包括所有MySQL表选项。默认开启,使用--skip-create-options来关闭。
-e, --extended-insert
使用全新多行INSERT语法,默认开启(给出更紧缩并且更快的插入语句)
-d, --no-data
不写入表的任何行信息。如果你只想得到一个表的结构的导出,这是很有用的。
--add-drop-database
在create数据库之前先DROP DATABASE,默认关闭,所以一般在导入时需要保证数据库已存在。
--default-character-set=
使用的默认字符集。如果没有指定,mysqldump使用utf8。
-B, --databases
转储几个数据库。通常情况,mysqldump将命令行中的第1个名字参量看作数据库名,后面的名看作表名。使用该选项,它将所有名字参量看作数据库名。CREATE DATABASE IF NOT EXISTS db_name和USE db_name语句包含在每个新数据库前的输出中。
--tables
覆盖--database选项。选项后面的所有参量被看作表名。
-u[ name], --user=
连接服务器时使用的MySQL用户名。
-p[password], --password[=password]
连接服务器时使用的密码。如果你使用短选项形式(-p),不能在选项和密码之间有一个空格。如果在命令行中,忽略了--password或-p选项后面的 密码值,将提示你输入一个。
导出一个数据库:
$ mysqldump -h localhost -uroot -ppassword \--master-data=2 --single-transaction --add-drop-table --create-options --quick \--extended-insert --default-character-set=utf8 \--databases discuz > backup-file.sql导出一个表:
$ mysqldump -u pak -p --opt --flush-logs pak t_user > pak-t_user.sql将备份文件压缩:
$ mysqldump -hhostname -uusername -ppassword --databases dbname | gzip > backup-file.sql.gz 对应的还原动作为 gunzip < backup-file.sql.gz | mysql -uusername -ppassword dbname导入数据库:
mysql> use target_dbname mysql> source /mysql/backup/path/backup-file.sql 或 $ mysql target_dbname <backup-file.sql导入还有一个mysqlimport命令,暂未研究。
直接从一个数据库向另一个数据库转储:
mysqldump -u用户名 -p --opt dbname | mysql --host remote_host -C dbname2