重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛

标题: PG从WINDOWS到LINUX跨平台流复制的关键点 [打印本页]

作者: 郑全    时间: 2025-8-17 09:48
标题: PG从WINDOWS到LINUX跨平台流复制的关键点
本帖最后由 郑全 于 2025-8-17 09:59 编辑

相信大家做过PG流复制的,主要是在同平台做流复制,比如LINUX到LINUX,WINDOWS到WINDOWS,很好有人做过跨平台的流复制,比如从WINDOWS到LINUX的流复制。
实现WINDOWS到LINUX的流复制,主要解决是以前生产中安装时,直接安装到WINDOWS了,随着时间的增加,数据量也在增加,达到几百G,甚至上T,这个时候,有人提出,要迁移到LINUX。
当然,大家都知道,最简单的方法,就是使用PG_DUMP,但大家也知道,PG_DUMP导出比较慢,导入也不快,那这个时间,应用就必须等着,如果应用不重要,等个十天半月都没有问题的,那也无所谓,但有些应用,你让它停半小时,也有人不乐意,怎么办,PG_DUMP这种方式,就不行了。有人说可以逻辑复制,但逻辑复制,如果对象比较多,用户多,还是比较复杂,能否简单一点,比如使用物理复制,就是流复制,能否行呢?
答案是肯定的,使用流复制可以支持PG从WINDOWS到LINUX的复制,先搭建好从WINDOWS到LINUX的流复制,平时进行数据同步,等准备好了,找一个时间,执行一个命令,直接把LINUX下的备库激活即可。时间根据执行者的熟练程度,5分钟以内,应该是可以搞定的,你说方便不方便。
下面说说目前这个跨平台流复制,主要关注的问题,主要有两个:
1.区域问题
   WINDOWS到LINUX,字符集,基本不是事,现在基本都是使用的UTF8,但排序规则WINDOWS和LINUX下不一样,比如WINDOWS上面一般使用的是 zh-cn,注意,zh和CN之间,不是下划线,是减号,这个在LINUX下,目前还没有找到这个排序规则,在LINUX下,PG能打开,但不能使用。找不到,在LINUX下,就得做索引等得重建,非常麻烦。这个是目前最大得问题。
   如果WINDOWS在建库时,区域使用了 C , 那就简单了,在LINUX下和WINDOWS一样使用,具体得初始数据库语句如下:
   initdb -U postgres -D "C:/Program Files/PostgreSQL/16/data" -E UTF8 --locale=C -W

   成功后,如下:
8181468a1321d30ac7.png
登录/注册后可看大图