代码之家  ›  专栏  ›  技术社区  ›  Jürgen Zornig

在Linux上还原从Windows托管的数据库群集创建的pg_basebackup

  •  1
  • Jürgen Zornig  · 技术社区  · 7 年前

    目前,我正在研究如何为HA postgresql体系结构设置流复制。但是,对于混合环境中的备份/恢复和维护,这个问题也与我们有关。

    我们的“主”postgresql服务器运行在Windows机箱上。我每天使用pg_dump创建逻辑备份,使用pg\u basebackup和WAL归档创建完整备份,该备份应提供PITR(我尚未对此进行测试)。

    下一步是设置一个从机,通过流复制保存副本。由于postgresql生态系统的更好支持,这个新主机运行的是Ubuntu Server 16.04 LTS。

    1. pg_basebackup -h <main host> -D <datadirectory> --xlog-method=stream 我初始化了从数据目录。
    2. standby_mode = on
    3. 我验证了服务器配置为 hot_standby = on

    现在,我遇到了一些问题,正如博士后告诉我的那样 “数据库区域设置(English_United_States.1252,显然是Windows特定的)与操作系统不兼容”

    我知道1252是Windows特定的语言环境,我应该使用en_US。Linux上的UTF8,但在这样的混合环境中,我应该:

    • 在Windows上初始化我们的主数据库,也带有一个en_US。UTF8语言环境?
    • 为什么pg_basebackup格式是特定于操作系统的,或者有一种备份格式不是特定的?
    • 是否要设置任何命令行标志来转换此内容?
    • 我也希望只使用Linux(甚至只使用Windows),但我担心我们的客户会在相当长一段时间内依赖这两种操作系统。
    1 回复  |  直到 7 年前
        1
  •  3
  •   Laurenz Albe    7 年前

    您无法恢复像这样的文件系统备份 pg_basebackup 在不同的体系结构上创建,例如从Linux上的Windows还原备份。

    从PostgreSQL v10开始,您可以考虑逻辑复制。