Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Linux上还原从Windows托管的数据库群集创建的pg_basebackup_Linux_Windows_Postgresql_High Availability_Backup Strategies - Fatal编程技术网

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

在Linux上还原从Windows托管的数据库群集创建的pg_basebackup,linux,windows,postgresql,high-availability,backup-strategies,Linux,Windows,Postgresql,High Availability,Backup Strategies,目前,我正在研究如何为HA postgresql体系结构设置流式复制。但是,对于混合环境中的备份/恢复和维护,这个问题通常也与我们有关 我们的“主”postgresql服务器在Windows机箱上运行。我每天使用pg_dump创建逻辑备份,使用pg_basebackup和WAL归档创建完整备份,该备份应提供PITR(我还没有测试过) 下一步是设置一个从机,通过流式复制保存副本。由于postgresql生态系统的更好支持,这个新主机运行的是Ubuntu Server 16.04 LTS 使用pg_

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

我们的“主”postgresql服务器在Windows机箱上运行。我每天使用pg_dump创建逻辑备份,使用pg_basebackup和WAL归档创建完整备份,该备份应提供PITR(我还没有测试过)

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

  • 使用
    pg_basebackup-h-D--xlog method=stream
    I初始化了从数据目录
  • 然后我必须在表空间文件上修复一些符号链接,因为这些链接指向的是Windows路径,而不是Linux文件系统
  • 接下来,我创建了recovery.conf文件,其中包含
    standby\u mode=on
    和connectioninfo
  • 我验证了服务器是否配置为
    hot\u standby=on
    ,并启动了守护进程
  • 现在我遇到了一些问题,正如postgres告诉我的那样,“数据库区域设置(English_United_States.1252,显然是特定于Windows的)与操作系统不兼容”

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

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

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

    在这种情况下,也不可能有流式重复


    从PostgreSQL V10开始,您可能会考虑逻辑复制。

    从Windows到Linux的PG或反之亦然的流式复制不支持。如何使用“代码> PGYBaseBoost</代码>进行逻辑备份?您应该使用pg_dump从一个操作系统移动到另一个操作系统different@VaoTsun正如我所写的,为了备份的目的,我正在做这两件事(pg_dump,pg_basebackup)。为了将数据库从一台主机传送到另一台主机以初始化流式复制,我使用pg_basebackupstreaming复制需要数据文件的二进制安全拷贝-
    pg_backup
    rsync
    -另一个操作系统不会只接收这样的文件。pg_dump不复制仅文件数据,因此不能用于流式复制
    pg_dump
    不是
    pg_basebackup
    。您应该能够使用
    pg_dump
    ,但您在上面讨论的是
    pg_basebackup
    。感谢您的澄清,我恐怕是这样的。另外,非常感谢您提出pglogic(),我将进一步研究它作为postgres-9.6I的扩展。我不会对pglogic说任何反对的话,但它与v10附带的逻辑复制不同。如果你能等到那时,我会这么做的。