• 首页
  • css3教程
  • html5教程
  • jQuery手册
  • vue手册
  • php手册
  • MySQL手册
  • apache手册
  • redis手册
  • 使用mysqldump转储数据

    本节将调查使您能够使用mysqldump解决特定问题的技术:


    • 如何制作数据库副本
    • 如何将数据库从一台服务器复制到另一台服务器
    • 如何转储的程序(存储的过程和函数,触发器和事件)
    • 如何分别转储定义和数据


    制作数据库副本

    shell> mysqldump db1
    > dump.sql
    shell> mysqladmin create db2
    shell> mysql db2 < dump.sql
    

    请勿--databasesmysqldump命令行上使用,因为这会导致USE db1转储文件中包含该文件,该文件将覆盖mysql命令行db2上的命名效果。


    将数据库从一台服务器复制到另一台服务器

    在服务器1上:

    shell>mysqldump --databases db1 > dump.sql
    

    将转储文件从服务器1复制到服务器2。

    在服务器2上:

    shell>mysql < dump.sql
    

    使用--databasesmysqldump的命令行导致转储文件,包括CREATE DATABASEUSE创建数据库,如果它确实存在,并使其成为默认的数据库为重新加载数据报表。

    另外,您可以--databasesmysqldump命令中省略。然后,您将需要在服务器2上创建数据库(如果需要),并在重新加载转储文件时将其指定为默认数据库。

    在服务器1上:

    shell>mysqldump db1 > dump.sql
    

    在服务器2上:

    shell>mysqladmin create db1
    shell>mysql db1 < dump.sql
    

    在这种情况下,您可以指定一个不同的数据库名称,因此--databasesmysqldump命令中省略可以使您从一个数据库中转储数据并将其加载到另一个数据库中。

    转储的程序

    有几个选项控制mysqldump如何处理存储程序(存储过程和函数,触发器和事件):

    • --events:转储事件计划程序事件
    • --routines:转储存储过程和函数
    • --triggers:表的转储触发器

    --triggers默认情况下,此选项是启用的,以便在转储表时,表将带有它们具有的任何触发器。其他选项默认情况下处于禁用状态,并且必须明确指定以转储相应的对象。要禁用的任何选项明确,利用其跳跃的形式:--skip-events--skip-routines,或--skip-triggers


    分别转储表定义和内容

    --no-dat 选项告诉mysqldump不要转储表数据,从而导致转储文件仅包含创建表的语句。相反,该--no-create-info选项告诉mysqldump抑制CREATE输出中的语句,以便转储文件仅包含表数据。

    例如,要分别转储test数据库的表定义和数据,请使用以下命令:

    shell>mysqldump --no-dat test > dump-defs.sql
    shell>mysqldump --no-create-info test > dump-dat .sql
    

    对于仅定义的转储,添加--routines--events选项以还包括存储的例程和事件定义:

    shell>mysqldump --no-dat  --routines --events test > dump-defs.sql
    

    使用mysqldump测试升级不兼容性

    在考虑进行MySQL升级时,请谨慎选择将新版本与当前生产版本分开安装。然后,您可以从生产服务器中转储数据库和数据库对象定义,并将它们加载到新服务器中,以验证它们是否已正确处理。(这对于测试降级也很有用。)

    在生产服务器上:

    shell>mysqldump --all-databases --no-dat  --routines --events > dump-defs.sql
    

    在升级的服务器上:

    shell>mysql < dump-defs.sql
    

    因为转储文件不包含表数据,所以可以对其进行快速处理。这使您能够发现潜在的不兼容性,而无需等待冗长的数据加载操作。在处理转储文件时查找警告或错误。

    验证定义是否正确处理后,转储数据并尝试将其加载到升级的服务器中。

    在生产服务器上:

    shell>mysqldump --all-databases --no-create-info > dump-dat .sql
    

    在升级的服务器上:

    shell>mysql < dump-dat .sql
    

    现在检查表内容并运行一些测试查询。