作者:Digital Observer(施嘉伟)
Oracle ACE Pro: Database
PostgreSQL ACE Partner
11年数据库行业经验,现主要从事数据库服务工作
拥有Oracle OCM、DB2 10.1 Fundamentals、MySQL 8.0 OCP、WebLogic 12c OCA、KCP、PCTP、PCSD、PGCE、OCI、PolarDB技术专家、达梦师资认证、数据安全咨询高级等认证
ITPUB认证专家、PolarDB开源社区技术顾问、HaloDB技术顾问、TiDB社区技术布道师、青学会MOP技术社区专家顾问、国内某高校企业实践指导教师
公众号:Digital Observer;CSDN:施嘉伟;ITPUB:sjw1933;PGFans:施嘉伟。
在数据库技术领域,随着业务的发展和技术的演进,选择适合的数据库平台变得尤为重要。对于已经使用 PostgreSQL 的用户来说,迁移到 Klustron 这样的分布式数据库可能是提升性能和扩展能力的一个不错选择。然而,数据库迁移并非简单的工作,如何保证数据的完整性和系统的稳定性,是每一个技术人员需要面对的挑战。
本文将为你提供从 PostgreSQL 数据库迁移到 Klustron 的一些基础思路和步骤,希望通过这些实践经验,能够为你的迁移过程提供一些参考和帮助。
| pg版本 | PostgreSQL 14.8 |
| Klustron版本 | 1.3.1 |

假设我们希望将postgres中的shijw这个数据库导入到Klustron数据库
[postgres@localhost ~]$ psql
psql (14.8)
Type "help" for help.
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
appdb | appuser | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
shijw | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(5 rows)查看shijw数据库信息
postgres=# \c shijw
You are now connected to database "shijw" as user "postgres".
shijw=# \dt
List of relations
Schema | Name | Type | Owner
--------+------------+-------+----------
public | hard | table | postgres
public | test | table | postgres
public | test_table | table | postgres
shijw=# select count(*) from hard;
count
----------
12250000
(1 row)
shijw=# select count(*) from test;
count
---------
1000000
(1 row)
shijw=# select count(*) from test_table;
count
---------
1000000
(1 row)
远端导出shijw数据库
[kunlun@kunlun01 ~]$ PGPASSWORD=postgres pg_dump -h192.xxx.xxx.211 -p5666 -U postgres -d shijw --no-owner --no-privileges --quote-all-identifiers > dbname.sql
pg_dump: server version: 14.8; pg_dump version: 11.21
解释:由于 PostgreSQL 大版本不一致,pg_dump 无法直接导出数据。
确保 pg_dump 版本与 PostgreSQL 目标版本兼容。一般来说,pg_dump 可以向下兼容,但不一定能向上兼容。如果你需要从一个版本较新的 PostgreSQL 导出数据,并在较旧的版本中导入,可能会遇到问题。建议使用相同版本的 pg_dump 和 PostgreSQL 进行操作。
本地导出
[postgres@localhost ~]$ pg_dump -U postgres -d shijw --no-owner --no-privileges --quote-all-identifiers > shijw.sql
将备份介质拷贝到Klustron服务器
[postgres@localhost ~]$ scp shijw.sql root@192.xxx.xxx.47:/home/kunlun
root@192.xxx.xxx.47's password:
shijw.sql 100% 3342MB 33.0MB/s 01:41
[kunlun@kunlun01 ~]$ PGPASSWORD=abc psql -h192.xxx.xxx.48 -p47001 -U abc -d postgres -f shijw.sql
SET
SET
SET
SET
SET
set_config
------------
(1 row)
SET
SET
SET
SET
SET
psql:shijw.sql:21: WARNING: unrecognized mysql configuration parameter "default_table_access_method"
SET
CREATE TABLE
ALTER SEQUENCE
CREATE TABLE
CREATE SEQUENCE
ALTER SEQUENCE
CREATE TABLE
CREATE SEQUENCE
ALTER SEQUENCE
ALTER TABLE
ALTER TABLE
ALTER TABLE
COPY 12250000
COPY 1000000
COPY 1000000
setval
----------
12250000
(1 row)
setval
---------
1000000
(1 row)
setval
---------
1000000
(1 row)
ALTER TABLE
ALTER TABLE
ALTER TABLE


通过本文的详细步骤介绍,相信你已经掌握了如何将 PostgreSQL 数据库成功迁移至 Klustron 数据库。从准备工作到数据导出、导入以及迁移后的验证,每一步都至关重要。迁移不仅仅是简单的数据传输,更是保障数据完整性和系统性能的关键环节。建议在实施过程中,定期备份,并通过小规模的数据迁移进行测试,以确保最终迁移的顺利进行。同时,务必要充分考虑数据库的兼容性,避免因功能差异或版本不一致引发的问题。
往期推荐:

在看点这里

点击"阅读原文"
原文作者:Digital Observer;如有侵权,请联系管理员删除。