Ram*_*mar 27 postgresql postgresql-9.1
我的生产服务器(ubuntu 13.10)在 postgresql 9.1 上运行。
我想使用 9.3 的一些功能,因此想升级。
有人可以帮助我从 9.1 升级到 9.3,以便停机时间不超过 30 分钟。或者?
主要关注的是防止数据丢失或文件冗余。
Mat*_*sOl 28
从不同的主要版本(例如 9.1 到 9.3)升级 PostgreSQL 基本上有三种方法。
第一个,如果可能的话,推荐使用较新 (9.3) 版本的二进制文件对旧 (9.1) 版本进行转储,并将其恢复到由较新版本创建的新集群上。
这种方法通常较慢,但也是最可行的。提高速度的一个技巧是使用并发。要转储并行作业,您可以执行以下操作:
$ pg_dump --format=directory --jobs=4 --no-synchronized-snapshots --file=/path/to/mydump mydatabase
Run Code Online (Sandbox Code Playgroud)
您必须为您拥有的每个数据库执行此操作,将--jobs=4值调整为任何值(测试从 2 到核心数的一些值,看看哪个能提供更好的速度)。此外,在此阶段,不应将任何人连接到数据库,任何修改都将导致转储损坏(因为非安全选项--no-synchronized-snapshots)。
之后,您可以使用以下命令将转储恢复到新实例中pg_restore:
$ createdb <options> -T template0 mydatabase
$ pg_restore --exit-on-error --jobs=4 --dbname=mydatabase /path/to/mydump
Run Code Online (Sandbox Code Playgroud)
之后,建议ANALYZE在您的数据库上运行:
$ vacuumdb --analyze-only mydatabase
Run Code Online (Sandbox Code Playgroud)
(如果你有足够的时间,只运行--analyze还VACUUM数据库和更新的知名度映射)
另一种选择是使用contribpg_upgrade。使用该--link方法,它提供了一种非常快速的升级 PostgreSQL 的方法。
在使用之前,您必须备份整个数据目录,因为在--link模式下,如果出现问题,您可能会丢失数据(新旧数据)。另外,阅读整个文档,特别是底部的注释(pg_upgrade 有一些限制)。
更新:请--check在运行最终命令之前使用该选项。此外,对于大型数据库,建议在屏幕会话中运行此命令。
升级版本的另一个选择是使用基于触发器的复制工具。像 Slony、Bucardo 和 Londiste。
这是需要最少停机时间的选项,但它是最难处理的选项。
为此,您需要构建一个主从系统,其中主站是您当前的版本 (9.1),而从站是新版本 (9.3)。然后,等待第一次同步(系统仍在生产中),然后关闭所有连接到数据库的人(停机时间从这里开始),等待从站赶上,将其(从站)提升为主站,然后将所有客户端/应用程序重定向到这个新版本。你已经完成了。
Slony 文档提供了使用 Slony 升级 PostgreSQL的分步指南。
好吧,一如既往,继续:
我希望我能帮上忙。祝你好运。
小智 7
按照以下步骤将 postgres 9.1 升级到 9.3:
首先为ubuntu创建一个/etc/apt/sources.list.d/pgdg.list文件,内容如下:
deb http://apt.postgresql.org/pub/repos/apt/ saucy-pgdg main
Run Code Online (Sandbox Code Playgroud)添加运行以下密钥:
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
Run Code Online (Sandbox Code Playgroud)使用 postgres 安装开发人员工具:
sudo apt-get install postgresql-9.3 postgresql-contrib-9.3 postgresql-server-dev-9.3 pgadmin3
Run Code Online (Sandbox Code Playgroud)为了确认我们的安装,我们将输入“sudo pg_lsclusters”并查看我们运行的两个版本的 PostgreSQL。
停止 Postgressql 服务:
sudo service postgresql stop
Run Code Online (Sandbox Code Playgroud)删除由 9.3 安装创建的默认 9.3 集群。
sudo pg_dropcluster --stop 9.3 main
Run Code Online (Sandbox Code Playgroud)从现有的 9.1 集群创建一个新的 9.3 集群。
sudo pg_upgradecluster 9.1 main
Run Code Online (Sandbox Code Playgroud)确认新集群已加载并且我们正在运行 PostgreSQL 9.3。
sudo service postgresql start 9.3
Run Code Online (Sandbox Code Playgroud)如果一切正常,请降到 9.1 集群。
pg_dropcluster --stop 9.1 main
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
24687 次 |
| 最近记录: |