凯发k8国际娱乐官网入口-k8凯发> 云数据库 gaussdb(for mysql)> > > 使用mysqldump迁移gaussdb(for mysql)数据
更新时间:2023-08-31 gmt 08:00

使用mysqldump迁移gaussdb(for mysql)数据-凯发k8国际娱乐官网入口

对于mysqlpump工具,由于在并行备份场景有coredump问题,不建议您使用,推荐您使用mysqldump工具迁移。

迁移准备

gaussdb(for mysql)支持开启公网访问功能,通过弹性公网ip进行访问。您也可通过弹性云服务器的内网访问gaussdb(for mysql)

  1. 准备弹性云服务器或可通过公网访问gaussdb(for mysql)
    • 通过弹性云服务器连接gaussdb(for mysql)数据库实例,需要创建一台弹性云服务器。

      创建并登录弹性云服务器,请参见《弹性云服务器快速入门》中“”和“”。

    • 通过公网地址连接gaussdb(for mysql)数据库实例,需具备以下条件。
      1. 先对gaussdb(for mysql)数据库实例绑定公网地址,如何绑定公网地址,请参见绑定弹性公网ip
      2. 保证本地设备可以访问gaussdb(for mysql)数据库实例绑定的公网地址。
  2. 在准备的弹性云服务器或可访问gaussdb(for mysql)数据库的设备上,安装mysql客户端。

    该弹性云服务器或可访问gaussdb(for mysql)数据库的设备需要安装和gaussdb(for mysql)数据库服务端相同版本或更高版本的数据库客户端,mysql数据库或客户端会自带mysqldump和mysql工具。

导出数据

要将源数据库迁移到gaussdb(for mysql)数据库,需要先对其进行导出。

  • 相应导出工具需要与数据库引擎版本匹配。
  • 数据库迁移为离线迁移,您需要停止使用源数据库的应用程序。
  1. 登录已准备的弹性云服务器,或可访问gaussdb(for mysql)数据库的设备。
  2. 使用mysqldump将元数据导出至sql文件。

    mysql数据库是gaussdb(for mysql)数据库服务管理所必须的数据库,导出元数据时,禁止指定--all-database参数,否则会造成数据库故障。

    mysqldump --databases <db_name> --single-transaction --order-by-primary --hex-blob --no-data --routines --events --set-gtid-purged=off -u <db_user> -p -h <db_address> -p <db_port> |sed -e 's/definer[ ]*=[ ]*[^*]*\*/\*/' -e 's/definer[ ]*=.*function/function/' -e 's/definer[ ]*=.*procedure/procedure/' -e 's/definer[ ]*=.*trigger/trigger/' -e 's/definer[ ]*=.*event/event/' >

    • db_name为要迁移的数据库名称。
    • db_user为数据库用户。
    • db_address为数据库地址。
    • db_port为数据库端口。
    • backup_file为导出生成的文件名称

    根据命令提示输入数据库密码。

    示例如下:

    mysqldump --databases gaussdb --single-transaction --order-by-primary --hex-blob --no-data --routines --events --set-gtid-purged=off -u root -p -h 192.xx.xx.xx -p 3306 |sed -e 's/definer[ ]*=[ ]*[^*]*\*/\*/' -e 's/definer[ ]*=.*function/function/' -e 's/definer[ ]*=.*procedure/procedure/' -e 's/definer[ ]*=.*trigger/trigger/' -e 's/definer[ ]*=.*event/event/' > dump-defs.sql

    enter password:

    命令执行完会生成“dump-defs.sql”文件。

  3. 使用mysqldump将数据导出至sql文件。

    mysql数据库是gaussdb(for mysql)数据库服务管理所必须的数据库,导出元数据时,禁止指定--all-database参数,否则会造成数据库故障。

    mysqldump --databases <db_name> --single-transaction --hex-blob --set-gtid-purged=off --no-create-info --skip-triggers -u <db_user> -p -h <db_address> -p <db_port> -r <backup_file>

    以上命令的参数说明如2所示。

    根据命令提示输入数据库密码。

    示例如下:

    mysqldump --databases gaussdb --single-transaction --hex-blob --set-gtid-purged=off --no-create-info --skip-triggers -u root -p -h 192.xx.xx.xx -p 3306 -r dump-data.sql

    命令执行完会生成“dump-data.sql”文件。

导入数据

通过弹性云服务器或可访问gaussdb(for mysql)数据库的设备,用相应客户端连接gaussdb(for mysql)数据库实例,将导出的sql文件导入到gaussdb(for mysql)数据库。

如果源数据库中包含触发器、存储过程、函数或事件调用,则需确保导入前设置目标数据库参数log_bin_trust_function_creators=on

  1. 导入元数据到gaussdb(for mysql)数据库。

    mysql -f -h -p <db_port> -u root -p < /dump-defs.sql

    • db_address为gaussdb(for mysql)数据库实例的ip地址。
    • db_port为当前数据库实例的端口。
    • backup_dir为“dump-defs.sql”所在目录。

    示例如下:

    mysql -f -h 172.xx.xx.xx -p 3306 -u root -p < dump-defs.sql

    enter password:

  2. 导入数据到gaussdb(for mysql)数据库。

    mysql -f -h -p <db_port> -u root -p < /dump-data.sql

    • db_address为gaussdb(for mysql)数据库实例的ip地址。
    • db_port为当前数据库实例的端口。
    • backup_dir为“dump-data.sql”所在目录。

    示例如下:

    mysql -f -h 172.xx.xx.198 -p 3306 -u root -p < dump-data.sql

    enter password:

  3. 使用mysql工具连接gaussdb(for mysql)数据库实例,查看迁移结果。

    mysql> show databases;

    示例中,名为my_db的数据库已经被导入了:

    mysql> show databases;
     -------------------- 
    | database           |
     -------------------- 
    | information_schema |
    | my_db              |
    | mysql              |
    | performance_schema |
     -------------------- 
    4 rows in set (0.00 sec)
分享:
网站地图