我们可以通过mysqldump工具来备份数据库中的各个对象,基本用法是:
shell> mysqldump [OPTIONS] database [tables] *如果你不给定任何表,整个数据库将被导出。
mysqldump支持下列选项(分为短选项格式和长选项格式):
- -?, --help
- -V, --version
- -v, --verbose 冗长模式,打印出程序所做的更多的信息。
- -h, --host=name 缺省主机是localhost。
- -u, --user=name 缺省值是你的Unix登录名。
- -p, --password=name 如果你不指定密码,mysqldump使用来自登录终端的口令。
- -P, --port=# 与一台主机连接时使用的TCP/IP端口号
- -w, --where='where-condition' 只导出被选择了的记录;注意引号是强制的!
- -X, --xml Dump a database as well formed XML.
- -d, --no-data 不写入表的任何行信息。如果你只想得到一个表的结构的导出,这是很有用!
- -S, --socket=name Socket file to use for connection. 默认套接字文件为.../mysqlpath/tmp/mysql.sock
- -q, --quick Don't buffer query, dump directly to stdout。使用mysql_use_result()获取它。注意:如果你运行mysqldump没有--quick或--opt选项,mysqldump将在导出结果前装载整个结果集到内存中,如果你正在导出一个大的数据库,这将可能是一个问题。
- --protocol=name The protocol of connection (tcp,socket,pipe,memory).
- --ignore-table=name
- --add-drop-table 在每个create语句之前增加一个drop table语句
几个常用实例:
- 导出整个数据库
mysqldump -uroot -p*** db_name > backup.sql(包括数据)
mysqldump -uroot -p*** -d --add-drop-table db_name > backup.sql(不包括数据) - 导出表结构
mysqldump -uroot -p*** db_name tbl_name >backup.sql
mysqldump -uroot -p*** db_name t1_name t2_name t3_name >backup.sql
根据导出的文件进行导入,我们经常用到source命令或者在shell平台下用mysql工具和<符号。
- mysql> use db_name
mysql> source d:/backup.sql - shell> mysql -uroot -p*** db_name < backup.sql
我们经常用mysqldump来制作整个数据库的一个备份,但是它对用来自于一个MySQL数据库的信息充实另外一个MySQL数据库也是有用的:
mysqldump --opt database | mysql --host=remote-host -C database