云数据库RDS MySQL支持将云盘实例的备份数据转换成CSV文件或SQL文件导出,您可以通过该文件将数据恢复到MySQL自建数据库。
说明 关于如何选择数据恢复方案,请参见
数据恢复方案概览。
前提条件
- 自建库中必须已开启local_infile参数。
说明 SQL命令如下:
- 查看当前local_infile参数是否开启:
SHOW GLOBAL VARIABLES LIKE 'local_infile';
- 开启local_infile参数:
SET GLOBAL local_infile=1;
- 查看当前local_infile参数是否开启:
- RDS实例未开启TDE加密。实例中若存在加密过的表,会导致恢复过程出错,请先对已加密的表执行解密操作。
功能限制
从下载的备份集恢复到本地MySQL数据库时,存在以下限制:
- 不支持以下二进制字段类型:BIT、BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB。
说明 如果下载的备份集包含二进制类型字段,此字段将会使用十六进制进行存储。在导入时,MySQL会将十六进制表示的字段当作字符串处理。此种情形需要您手动在 load data local infile命令中使用 UNHEX函数转换为原始二进制串。
- 不支持以下空间字段类型:GEOMETRY、POINT、LINESTRING、POLYGON、MULTIPOINT、MULTILINESTRING、MULTIPOLYGON、GEOMETRYCOLLECTION。
- 建议将数据恢复到相同版本的数据库,不同的数据库版本可能存在不相互兼容的特性,最终导致恢复失败。
操作步骤
本示例以Ubuntu 20.04 LTS版本为例进行演示,其他系统请使用对应命令。
- 通过下载备份功能将云盘实例的备份文件转换成CSV文件或SQL文件下载到本地。
- 解压下载的文件。
解压缩命令格式为
tar -izxvf <压缩包文件名>.tar.gz -C <解压缩后的文件位置>
。示例:
tar -izxvf test1.tar.gz -C /home/mysql/data
- 下载Python脚本文件。
- 执行如下命令对Python脚本文件
restore_from_downloads.py
进行授权。chmod +x ./restore_from_downloads.py
- 将CSV文件或SQL文件恢复至目标数据库。
命令格式为
python ./restore_from_downloads.py <CSV文件或SQL文件路径> <数据库主机> <数据库端口> <数据库账号> <数据库密码>
。示例:
python ./restore_from_downloads.py /home/mysql/data/ 127.0.0.1 3306 zhtxxxxx "#txxxxx"
说明- 如果出现类似
Command 'python' not found
的报错,请确认您系统中安装的Python版本以及执行Python的命令。例如,您的命令可能是python3 ./restore_from_downloads.py ~/mysql/data/ 127.0.0.1 3306 zhtxxxxx "#txxxxx"
。 - 请确保本地数据库中没有和待导入的数据库同名的库,否则将导入失败。
- 如果您的数据库账号名或密码包含特殊字符(例如:#、空格等等),命令行传入参数时请使用英文双引号("")。例如:数据库密码是:
#1234
,那执行脚本处应传入"#1234"
。
- 如果出现类似