Debian PostgreSQL数据库迁移方法是什么
导读:Debian 上 PostgreSQL 数据库迁移方法 一 常用方法概览 逻辑迁移:使用 pg_dump/pg_restore 导出为自定义格式并恢复,适合跨版本、跨主机、跨平台迁移,灵活度高。 全实例迁移:使用 pg_dumpall +...
Debian 上 PostgreSQL 数据库迁移方法
一 常用方法概览
- 逻辑迁移:使用 pg_dump/pg_restore 导出为自定义格式并恢复,适合跨版本、跨主机、跨平台迁移,灵活度高。
- 全实例迁移:使用 pg_dumpall + psql 迁移所有数据库与角色,适合整机搬迁或重建实例。
- 物理复制/基础备份:通过流复制或文件系统拷贝实现近零停机迁移,适合大型库或要求高可用的场景。
- 异构迁移:使用 pgloader 从 MySQL/Oracle/CSV 等导入到 PostgreSQL,适合改型或整合。
- 文件导入:使用 COPY 将 CSV/TSV 批量导入,适合外部系统导出的平面文件落地。
二 标准步骤 逻辑迁移 pg_dump 与 pg_restore
- 源库导出(自定义格式,含大对象,详细输出):
sudo -u postgres pg_dump -Fc -b -v -f /path/to/backup/mydatabase.dump mydatabase - 传输到目标主机:
scp /path/to/backup/mydatabase.dump user@target:/path/to/backup/ - 目标库准备(安装同版本或兼容版本 PostgreSQL,创建空库):
sudo apt update & & sudo apt install -y postgresql postgresql-contrib
sudo -u postgres createdb mydatabase - 目标库恢复:
sudo -u postgres pg_restore -d mydatabase /path/to/backup/mydatabase.dump - 校验:
sudo -u postgres psql -d mydatabase -c “SELECT COUNT(*) FROM my_table; ” - 清理:
rm /path/to/backup/mydatabase.dump - 说明:自定义格式 -F c 支持并行恢复与选择性表恢复,适合大库与复杂对象(如大对象)。
三 全实例迁移 pg_dumpall 与 psql
- 导出全部数据库与角色:
sudo -u postgres pg_dumpall -U postgres -f /path/to/backup/all_dbs.sql - 目标库安装与启动:
sudo apt update & & sudo apt install -y postgresql postgresql-contrib
sudo systemctl start postgresql - 恢复:
sudo -u postgres psql -U postgres -f /path/to/backup/all_dbs.sql - 适用:需要一次性迁移 全部数据库、角色、表空间 等全局对象时使用。
四 近零停机与异构迁移
- 物理复制/基础备份(近零停机)
- 源库配置(postgresql.conf):
wal_level = replica
max_wal_senders = 10
wal_keep_segments = 64 - 创建复制用户:
CREATE USER replicator WITH REPLICATION PASSWORD ‘password’ LOGIN; - 目标库配置(postgresql.conf):
hot_standby = on - 重启服务后建立复制链路,切换时执行基础备份/切换,适合大库与高可用诉求。
- 源库配置(postgresql.conf):
- 异构迁移 pgloader(示例)
- 安装:sudo apt-get install pgloader
- 配置 my_migration.load:
LOAD DATABASE
FROM mysql://user:pass@host:port/src_db
INTO postgresql:///tgt_db
WITH include drop, create tables, create indexes, reset sequences, foreign keys; - 执行:pgloader my_migration.load
- 文件导入 COPY(CSV/TSV)
- 示例:
COPY my_table(name, age) FROM ‘/path/to/data.csv’ WITH CSV HEADER;
- 示例:
- 适用:跨库改型(MySQL/Oracle→PostgreSQL)、外部系统批量数据落地。
五 关键注意事项
- 版本兼容:尽量保持源与目标 PostgreSQL 主版本一致;跨版本迁移先在测试环境演练,必要时调整数据类型与默认值。
- 停机窗口:逻辑迁移建议安排在 低峰时段;对可用性要求高的场景优先考虑 物理复制/基础备份。
- 一致性:单机迁移可在导出前短暂停止写入;若需完全一致性,可在维护窗口内短暂停库或使用复制配合切换。
- 大对象与扩展:使用 -b 包含大对象;确认目标库已安装相同 扩展(如 postgis、uuid-ossp 等)。
- 网络与权限:大文件传输建议使用 scp/rsync;确保目标库 角色/权限 完备,避免导入失败。
- 校验:恢复后执行 行数、主键、外键、约束、视图/函数 等一致性校验,并抽样查询业务关键表。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian PostgreSQL数据库迁移方法是什么
本文地址: https://pptw.com/jishu/756026.html
