文章目录
环境
系统平台:N/A
版本:4.1.1
症状
从PostgreSQL迁移数据到HighGoDB。
解决方案
1.禁止业务连接数据库
客户停止所有连接至x.x.10.11的应用程序。(或修改Postgresql数据库的pg_hba文件,禁止所有IP地址连接数据库)
应用程序停止之后,使用 ps -ef |grep postgres命令观察是否还有IP访问数据库。
2.使用如下命令从源端数据库导出数据和全局对象
备份角色和表空间。
pg_dumpall -h localhost -U postgres --port=5866 -f backup.sql --globals-only --clean --verbose
导出某个数据库的数据,例如导出test数据库:
pg_dump --host localhost --port 5866 --username "postgres" --format custom --file "/xxxx/yyy/backup.dmp" "test"
如需导出多个数据库的数据,修改数据库名,多次导出多个库。也可以使用pg_dumpall的方式,将所有数据全部导出。
注:不建议使用pg_dumpall,因为该方式只能导出SQL文本,恢复极其耗时。
3.打开目标端数据库,恢复全局对象并开始导入数据。
将bakcup.sql文件中的SQL语句拷贝并在目标数据库中运行,例如:
CREATE ROLE postgres LOGIN ENCRYPTED PASSWORD 'md52cc18edfxxxxxxxxx4610288ab1f1ca9' SUPERUSER INHERIT CREATEDB CREATEROLE REPLICATION;
恢复数据:
pg_restore -h localhost -p 5866 -U highgo -d highgo --create --verbose --format custom "/xxxx/yyy/backup.dmp "
4.导入完成后,psql进入数据库查看是否导入成功。