本文介绍通过pg_dumpall
、pg_dump
和pg_restore
命令将自建PostgreSQL数据库迁移至PolarDB PostgreSQL版中。
迁移的源库为RDS for PostgreSQL实例时,请参考从RDS PostgreSQL迁移至PolarDB PostgreSQL版。
前提条件
PolarDB PostgreSQL版实例的存储空间应大于自建PostgreSQL数据库的存储空间。
注意事项
该操作为全量数据迁移。为避免迁移前后数据不一致,迁移操作开始前请停止自建数据库的相关业务,并停止数据写入。
准备工作
- 创建一个Linux操作系统的ECS实例,本案例使用的ECS为Ubuntu 16.04 64位操作系统。详情请参考创建ECS实例。
说明
- 要求ECS实例和迁移的目标PolarDB PostgreSQL版实例处于同一个专有网络。
- 可创建一个按量付费的ECS实例,迁移完成后释放实例。
- 在ECS实例中安装PostgreSQL,以便执行数据恢复的命令。详情请参考PostgreSQL官方文档。
说明
请确保安装的PostgreSQL数据库版本与自建PostgreSQL数据库版本一致。
操作步骤一 备份自建数据库
该操作为全量数据迁移。为避免迁移前后数据不一致,迁移操作开始前请停止自建数据库的相关业务,并停止数据写入。
- 在自建PostgreSQL数据库服务器上执行以下命令,备份数据库中的所有角色信息。
pg_dumpall -U <username> -h <hostname> -p <port> -r -f <filename>
参数说明:
- <username>:登录自建PostgreSQL数据库的账号。
- <hostname>:自建PostgreSQL数据库的连接地址,本机可使用localhost。
- <port>:数据库服务的端口号。
- <filename>:生成的备份文件名称。
示例:
pg_dumpall -U postgres -h localhost -p 5432 -r -f roleinfo.sql
- 命令行提示
Password:
时,输入数据库账号对应的密码,开始备份数据库中的所有角色信息。 - 使用
vim
命令将角色信息备份文件中的SUPERUSER
替换为polar_superuser
。说明
如果角色信息备份文件中没有
SUPERUSER
信息,可跳过本步骤。 - 在自建PostgreSQL数据库服务器上执行以下命令,备份数据库中的数据。
pg_dump -U <username> -h <hostname> -p <port> <dbname> -Fd -j <njobs> -f <dumpdir>
参数说明:
- <username>:登录自建PostgreSQL数据库的账号。
- <hostname>:自建PostgreSQL数据库的连接地址,本机可使用localhost。
- <port>:数据库服务的端口号。
- <dbname>:要备份的数据库名。
- <njobs>:同时执行备份作业的并发数。
说明
- 参数<njobs>可减少转储的时间,但也会增加数据库服务器的负载。
- 如果您的自建PostgreSQL数据库是9.2以前的版本,您还需要指定
--no-synchronized-snapshots
参数。
- <dumpdir>:生成的备份文件所属目录。
示例:
pg_dump -U postgres -h localhost -p 5432 mytestdata -Fd -j 5 -f postgresdump
- 命令行提示
Password:
时,输入数据库账号对应的密码,数据库开始备份。 - 等待备份完成,PostgreSQL数据库数据将备份至指定的目录中,本案例为postgresdump。
操作步骤二 数据迁移至PolarDB PostgreSQL版
- 将备份文件所属的目录上传至ECS实例中。
说明
包含角色信息备份文件和数据库备份文件。
- 在ECS上执行以下命令,将角色信息备份文件中的角色信息迁移至PolarDB PostgreSQL版实例中。
psql -U <username> -h <hostname> -p <port> -d <dbname> -f <filename>
参数说明:
- <username>:登录PolarDB PostgreSQL版数据库的账号。
- <hostname>:PolarDB PostgreSQL版实例的主地址(私网)。
- <port>:数据库服务的端口号,默认为1921。
- <dbname>:连接的数据库的名称。
- <filename>:角色信息备份文件名。
psql -U gctest -h pc-xxxxxxxx.pg.polardb.cn-qd-pldb1.rds.aliyuncs.com -d testdb -p 1921 -f roleinfo.sql
- 命令行提示
Password:
时,输入数据库账号对应的密码,角色信息开始导入。 - 在ECS上执行以下命令,将数据库数据恢复至PolarDB PostgreSQL版实例中。
pg_restore -U <username> -h <hostname> -p <port> -d <dbname> -j <njobs> <dumpdir>
参数说明:
- <username>:登录PolarDB PostgreSQL版数据库的账号。
- <hostname>:PolarDB PostgreSQL版实例的主地址(私网),详情请参考查看或申请连接地址。
- <port>:数据库服务的端口号,默认为1921。
- <dbname>:连接并直接恢复到的目标数据库名。
说明
目标数据库需已存在,如不存在请在目标实例中创建该数据库。
- <njobs>:同时执行数据恢复作业的并发数。
说明
此选项可减少数据恢复的时间,但也会增加数据库服务器的负载。
- <dumpdir>:备份文件所在目录。
示例:
pg_restore -U gctest -h pc-mxxxxxxxx.pg.polardb.cn-qd-pldb1.rds.aliyuncs.com -p 1921 -d mytestdata -j 6 postgresdump
- 命令行提示
Password:
时,输入数据库账号对应的密码,数据开始迁移。说明
如果忘记密码,请参考修改密码。
等待数据迁移完成即可。
- 在自建PostgreSQL数据库服务器上执行以下命令,备份数据库中的所有角色信息。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
2025年4月中国数据库流行度排行榜:OB高分复登顶,崖山稳驭撼十强
墨天轮编辑部
1329次阅读
2025-04-09 15:33:27
从mysql社区版迁移到信创PolardbX-DN上
金同学
147次阅读
2025-04-01 09:50:14
阿里云Tair KVCache:打造以缓存为中心的大模型Token超级工厂
阿里云瑶池数据库
124次阅读
2025-03-25 10:37:41
PolarSearch使用指南
快点好起来
51次阅读
2025-03-19 15:32:53
VACUUM常见问题及优化
千寻
43次阅读
2025-03-19 16:33:17
智能搜索(PolarSearch)
快点好起来
42次阅读
2025-03-19 15:21:42
备份原理
胖橘
41次阅读
2025-03-19 14:05:32
客户说|MiniMax DevOps最佳实践:基于阿里云SelectDB构建PB级日志系统
阿里云瑶池数据库
39次阅读
2025-03-20 09:51:08
Ganos全空间数据多态分层存储能力解析与最佳实践
Ganos全空间数据库
38次阅读
2025-03-26 11:08:10
向量检索使用说明
胖橘
38次阅读
2025-03-19 14:18:05