首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Postgresql内部数据库升级

Postgresql内部数据库升级
EN

Stack Overflow用户
提问于 2016-02-28 12:06:39
回答 1查看 1.3K关注 0票数 1

我试图找到一种最快的方法,将postgresql数据库v9.1.20从一台服务器转移到postgres v9.3.10的另一台服务器。

设想如下:

生产服务器运行Ubuntu12.04 postgresql 9.1.20,数据库大小为appox 250 g

我们试图重新定位的目标服务器是Ubuntu14.04 postgresq 9.3.10。

我们尝试的第一次尝试是从旧服务器转储数据库(pg_dump),并在新服务器(pg_restore)上恢复数据库。

它运行得很好,但是我们花在重新定位上的时间大约是4小时(pg_dump需要3小时,pg_restore需要1小时(两个服务器上的网络链接1g,SSD磁盘)。

4小时内的总停机时间是不可接受的。

下一次尝试是使用pg_basebackup而不是pg_dump。该方法将备份时间从3小时缩短到40分钟,这是可以接受的。

但是,由于版本不兼容,我们不能使用pg_basebackup提供的转储。

我读过许多关于如何提供内部数据库升级的文章,但它们似乎都是指在同一台服务器上进行升级。

那么,我的问题是--如何升级服务器上的pg_basebackup生成的数据库备份,而不安装以前的postgresql二进制文件?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-03-06 10:56:18

您可以使用瑞姆格pg_upgrade以最少的停机时间(几分钟)执行升级。

  1. 在主(PostgreSQL9.1)上启用流复制。需要重新启动DB hot_standby = on wal_keep_segments = 4000 #必须足够高,以便待机赶上
  2. 在备用服务器上安装PostgreSQL 9.1和9.3。在这两台服务器上安装repmgr 2.0。因为repmgr 3.x版本适用于PostgreSQL 9.3或更高版本。
  3. 同步主服务器和备用服务器: -D /var/lib/postgresql/9.1/main -p 5432 -d repmgr -U repmgr -详细备用克隆-h psql01a.example.net -快速检查点 应该在pg_basebackup下面使用。所以这个方法和你描述的方法差不多。
  4. 一旦克隆完成,您就可以启动注册备用: repmgr -f /etc/repmgr.conf备用注册服务postgresql启动 这将使备用程序能够赶上复制期间在主服务器上提交的更改。
  5. 在两个数据库运行(同步)的情况下,检查是否可以升级: /usr/lib/postgresql/9.3/bin/pg_升级
  6. 如果您通过升级检查,您必须停止主程序。现在,停工期到了。提升待命状态到主人。 postgres#:repmgr备用促进服务postgresql #如果一切正常,只需停止服务器服务postgresql停止 最快的升级方法是使用链接: /usr/lib/postgresql/9.3/bin/pg_升级-链接\-旧-datadir=/var/lib/postgresql/9.1/main\-new=/var/lib/postgresql/9.3/main\-old-bindir=/usr/lib/postgresql/9.1/bin\bindir=/usr/lib/postgresql/9.3/bin 即使有200‘t的数据,升级也不应该超过几分钟(通常不到一分钟)。当情况恶化时,很难恢复更改(但我们仍然有功能的主服务器)。升级完成后,启动新服务器。验证一切正常,然后可以安全地删除旧集群: ./删除_old_cluster.sh
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35682315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档