这部分主要介绍如何使用mysqldump备份SQL格式的转存文件。对于它的还原可以参考8.4.2还原 SQL格式备份
默认情况下,mysqldump写sql语句信息到标准输出,你可以把输出保存到一个文件:
shell> mysqldump [arguments] > file_name
备份所有的数据库可以使用—all-databases选项
shell> mysqldump --all-databases > dump.sql
备份特定的库可以使用—databases选项把数据库的名字在命令行写出来
shell> mysqldump --databases db1 db2 db3 > dump.sql
--databases选项使命令行的所有名字都被看作数据库名字,没有这个选项,mysqldump将会把他们中的第一个看作数据库名字,剩下的将会被看作表名。
使用—all-databases或者—databases选项,mysqldump会在每一个数据库的输出文件写入CREATE DATABASE和USE语句。这确保备份文件在还原的时候,在数据库不存在的时候创建数据库,并且使它成为默认的数据库,因此数据库的内容和原来的一样,如果你想在还原之前强制删除备份文件里的每一个数据库在重新创建它们之前,可以使用—all-drop-database选项。这种情况下,mysqldump会添加DROP DATABASE语句在每一个CREATE DATABASE语句之前。
创建单独的数据库,直接在命令行写数据库的名字
shell> mysqldump --databases test > dump.sql
备份单独数据库的时候允许省略—databases选项
shell> mysqldump test > dump.sql
没有—databases选项的命令和之前两个命令的不同之处就是,没有—databases选项的命令的输出不包含CREATE DATABASE和USE语句。
这有几个启示:
当你恢复数据库的时候,你必须指定一个默认的数据库,以至于服务器知道你想要恢复哪一个数据库
你可以指定一个和原来数据库名字不一样的数据库,这可以把数据恢复到不同的数据库里
如果恢复的数据库不存在,你必须首先创建它
因为输出不包含CREATE DATABASE和USE语句,因此—add-drop-database选项使没有用的,即使你使用它,也不会产生DROP DATABASE语句。
仅仅备份数据库中特定的表,直接在命令行中数据库的名字后面添加表的名字即可
shell> mysqldump test t1 t3 t7 > dump.sql