PostgreSQL如何进行跨服务器迁移数据
文章目录
-
- 1、方案
- 2、准备工作
- 3、操作流程
-
- 3.1 导出原始数据库数据
- 3.2 传输数据文件
- 3.3 目标数据库导入数据
-
- 3.3.1 导入前目标数据库准备
- 3.3.2 数据导入
- 3.4 数据验证
- 3.5 更新数据库统计信息
- 4、 应用服务数据更新
-
- 4.1 重建ElasticSearch索引
- 4.2 应用数据检查
- 5、附录:pg_restore参数说明
1、方案
在针对PostgreSQL的数据迁移这一块功能,官方有相应的工具支持:pg_dump和pg_restore,通过这两个工具,可以很好的对数据库中的数据进行备份和恢复。那既然支持通过包来备份和恢复,那在跨服务器数据迁移,区别也仅仅在于PostgreSQL服务器地址存在差异,需要增加步骤来在两台服务器之间进行备份数据包的传输即可,基于此,下面来说明如何来操作这一系列过程。
2、准备工作
梳理本地环境以及目标环境相应参数表如下:
| 配置项 | 源数据库(本地) | 目标数据库(远程) |
|---|---|---|
| 服务器IP | localhost(或127.0.0.1) |
10.17.100.245 |
| 数据库名称 | sonarqube_db |
sonarqube_db(可同名或不同名) |
| Postgresql连接用户 | sonar |
sonar |
| Postgresql端口 | 5432(默认端口) |
5432(默认端口) |
| 远程服务器系统用户 | 本地用户 | sonar(用于SSH/SCP传输) |
上层服务应用:Sonarqube
操作流程与实际的应用服务理论上无关,这里说明上层应用仅方便后续验证实际数据恢复后的效果用。
3、操作流程
3.1 导出原始数据库数据
登录原始数据库所在的Linux服务器,以数据库管理员身份登录到PostgreSQL:
sudo -u postgres psql
使用pg_dump命令导出数据库中的数据:
# 从本地localhost 5432端口以sonar身份登录postgresql将sonarqube_db数据库导出到文件source_db_dump.custom
pg_dump -h localhost -p 5432 -U sonar -F c -v -f source_db_dump.custom sonarqube_db
执行后,会要求输入sonar账户的口令密码,输入密码后开始正常导出数据:

导出完成后,数据文件source_db_dump.custom在当前命令执行的目录下生成:

3.2 传输数据文件
在完成原始数据库的数据导出之后,使用scp工具将其远程传输到需要恢复数据的目标服务器上:
# 将以sonar用户身份登录到10.17.100.245服务器并传输source_db_dump.custom到/home/sonar路径
scp source_db_dump.custom sonar@10.17.100.245:/home/sonar/
输入目标服务器的连接账户密码后开始传输:

传输完成后,开始准备下一步导入数据。







