• 沒有找到結果。

使用 mysqldump 迁移 GaussDB(for MySQL)数据

须知

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

迁移准备

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

1. 准备弹性云服务器或可通过公网访问GaussDB(for MySQL)。

– 通过弹性云服务器连接GaussDB(for MySQL)数据库实例,需要创建一台弹性 云服务器。

创建并连接弹性云服务器,请参见如何创建和连接ECS。

– 通过公网地址连接GaussDB(for MySQL)数据库实例,需具备以下条件。

i. 先对GaussDB(for MySQL)数据库实例绑定公网地址,如何绑定公网地 址,请参见绑定弹性公网IP。

ii. 保证本地设备可以访问GaussDB(for MySQL)数据库实例绑定的公网地 址。

2. 在准备的弹性云服务器或可访问GaussDB(for MySQL)数据库的设备上,安装 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/' > <BACKUP_FILE>

● 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.168.151.18 -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.168.151.18 -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 <DB_ADDRESS> -P <DB_PORT> -u root -p < <BACKUP_DIR> /dump-defs.sql

● DB_ADDRESS为GaussDB(for MySQL)数据库实例的IP地址。

● DB_PORT为当前数据库实例的端口。

● BACKUP_DIR为“dump-defs.sql”所在目录。

示例如下:

mysql -f -h 172.16.66.198 -P 3306 -u root -p < dump-defs.sql Enter password:

步骤2 导入数据到GaussDB(for MySQL)数据库。

mysql -f -h <DB_ADDRESS> -P <DB_PORT> -u root -p < <BACKUP_DIR> /dump-data.sql

● DB_ADDRESS为GaussDB(for MySQL)数据库实例的IP地址。

● DB_PORT为当前数据库实例的端口。

● BACKUP_DIR为“dump-data.sql”所在目录。

示例如下:

mysql -f -h 172.16.66.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)

----结束

4 数据库代理(读写分离)

相關文件