Ubuntu下使用pgAdmin进行PostgreSQL数据迁移的完整方案
sudo apt update && sudo apt install postgresql pgadmin4安装);pg_upgrade或pg_dump工具);CREATE(创建数据库对象)、INSERT(插入数据)等必要权限;sudo ufw allow 5432开放端口);pg_dumpall备份所有数据库,避免误操作导致数据丢失)。/home/user/source_db_backup.dump);使用scp(安全拷贝)工具将备份文件从源服务器复制到目标服务器(需输入目标服务器用户密码):
scp /home/user/source_db_backup.dump username@target_server_ip:/home/user/
或使用rsync(支持增量传输,适合大文件):
rsync -avz /home/user/source_db_backup.dump username@target_server_ip:/home/user/
source_db_backup.dump);psql -U username -d target_db);SELECT COUNT(*) FROM your_table;),对比源数据库与目标数据库的记录数;SELECT * FROM pg_indexes WHERE tablename = 'your_table';验证索引)。使用pg_dump命令生成自定义格式备份(保留权限与依赖关系):
pg_dump -U postgres -h source_host -p 5432 -d source_db -F c -b -v -f /path/to/source_db_backup.dump
参数说明:
-U postgres:指定连接用户(需具备数据库备份权限);-h source_host:源数据库服务器地址(本地可省略,默认localhost);-p 5432:源数据库端口(默认5432,若修改需替换);-d source_db:需要备份的数据库名称;-F c:指定自定义格式(兼容性好,支持压缩);-b:包含大对象(如图片、文件);-v:显示详细输出(便于排查问题);-f:指定备份文件路径。使用scp或rsync将备份文件传输至目标服务器(命令参考上文)。
使用pg_restore命令将备份文件恢复到目标数据库(需提前创建目标库,可通过createdb -U postgres target_db创建):
pg_restore -U postgres -h target_host -p 5432 -d target_db /path/to/source_db_backup.dump
参数说明:
-d target_db:目标数据库名称(需提前存在);pg_dump一致。通过查询工具或命令行验证数据完整性(方法参考上文)。
使用pgsync工具实现实时数据同步(避免业务中断):
sudo apt install pgsync;pgsync.yml文件,指定源数据库(source)与目标数据库(target)的连接信息(如主机、端口、用户名、密码),并排除无需同步的表(如日志表);pgsync(支持并行传输,降低对源数据库性能的影响)。使用pgloader工具自动处理数据类型转换(如MySQL的INT→PostgreSQL的INTEGER):
sudo apt install pgloader;mysql_to_pg.load文件,内容示例:LOAD DATABASE
FROM mysql://mysql_user:mysql_pass@mysql_host/mysql_db
INTO postgresql://postgres_user:postgres_pass@postgres_host/postgres_db
WITH include no drop, create tables, create indexes, reset sequences
pgloader mysql_to_pg.load(自动创建目标库结构并迁移数据)。GRANT语句授予必要权限),避免因权限不足导致应用无法访问;CREATE EXTENSION extension_name;);pg_checksums工具验证数据完整性(仅适用于启用校验的数据库);pg_restore恢复备份)。