PostgreSQL数据库上云迁移
概览
RDS-for-PostgreSQL 支持用户使用离线的方式完成对自建数据库迁移的需求。
需求场景
面向需要将自建PostgreSQL迁移至云上RDS的用户。为了保证数据的同步性,建议用户在使用离线迁移的时候执行停服操作。
方案概述
当用户需要迁移的数据源基于 PostgreSQL 数据库时,由于 RDS 提供的关系型数据库服务与 PostgreSQL 数据库完全兼容,用户将原有数据库迁移到RDS实例的过程,类似于将一个 PostgreSQL 数据库迁移到另一个 PostgreSQL 数据库的过程。这个过程可以使用 pg_dump 工具来实现。
迁移步骤
详细迁移步骤如下:
- 创建RDS实例
用户创建RDS实例后,系统会为用户提供RDS实例的域名和端口,如:postgresql94.example.rds.bj.baidubce.com:3306。详情请参考创建RDS实例。
- 创建数据库和账号
用户在控制台创建RDS实例之后,继续在其中创建需要的数据库和账号并分配对应的读写权限。具体内容请参考创建数据库和创建账号。
- 用户数据导出
3.1 使用pg_dump导出用户数据
使用pg_dump工具从用户的PostgreSQL数据源中导出需要导入RDS实例中的数据文件(本步骤仅导出数据,不包括存储过程、触发器及函数)。命令格式如下:
${pgdir}/bin/pg_dump –h ${ip} -p ${port} –d ${db_name} –U
${user} -f ${datadir}/${db_name}.sql
参数说明:
参数 | 说明 |
---|---|
${pgdir} | 用户本地安装PostgreSQL的路径 |
${ip} | 用户本地PostgreSQL服务的IP地址 |
${port} | 用户本地PostgreSQL服务的端口 |
${user} | 用户本地PostgreSQL数据库用户名 |
${db_name} | 用户本地需要迁移的自建数据库名 |
${datadir} | 用户本地备份生成的文件路径 |
${db_name}.sql | 用户本地备份生成的文件名 |
3.2 通过云服务器BCC将数据迁移至RDS
第一步:将备份文件上传至云服务器BCC
使用云服务器的方法请参考管理云服务器,以下用Linux服务器为例,假设已上传的文件在云服务器中的路径为:
/tmp/${db_name}.sql
第二步:将数据迁移至RDS
使用云服务器将上传的数据文件导入到已购买的RDS实例中,命令格式:
${pgdir}/bin/psql –U ${rds_user} –h ${rds_ip} –p
${port} -d ${rds_db_name} -f /tmp/${db_name}.sql
参数说明:
参数 | 说明 |
---|---|
${rds_ip} | RDS实例的域名,具体请参考使用RDS实例 |
${rds_user} | RDS数据库账号,具体请参考创建账号 |
${rds_db_name} | RDS中数据库名,具体请参考创建数据库 |
${port} | RDS中PostgreSQL服务的端口 |
${db_name}.sql | 用户备份生成的文件名 |
注意:由于账号针对每个数据库都有访问权限,因此用户需要提前在RDS中创建需要导入数据的数据库并赋予对应使用账号的读写权限才可以成功导入数据。
至此数据迁移完毕,您可使用数据库客户端工具或程序的方式,通过RDS实例连接地址、端口号、数据库账号和密码连接数据库。
相关产品
云服务器BCC:高性能、高可靠、安全稳定的弹性计算服务