将 Mastodon 的 PostgreSQL 升级至 9.5 → 11.1
过程
我正在运营一个供单人使用的Mastodon实例,但由于Mastodon升级至2.7.0版本,推荐升级PostgreSQL。我从未升级过中间件,也没有人可以咨询,所以感到有点无从下手。我在去年夏天建立了这个服务器,其中的PostgreSQL版本是9.5,所以我决定趁此机会一次性升级,以解决这个负债。我进行了各种调研,并采用了自己能理解并实施的步骤。
如果可以对其他罐头的人有所帮助,我想公开这个问题,但说实话,我觉得在Ubuntu上使用下面的方法是最佳选择,所以希望你尝试一下那个方法。
https://gorails.com/guides/upgrading-postgresql-version-on-ubuntu-server
我知道这个方法的存在,但是我不太了解是否需要更改端口来启动。因此我就放弃了。
现在我手动升级了一下,感觉可以理解并执行了呢。
只需简单地使用apt-get安装11,并按照上述步骤进行即可。
前提 tí) – prerequisite/condition/requisite
-
- Ubuntu 16.04
- mastodon 非Docker
大致的步骤
-
- mastodonを停止
-
- 既存PostgreSQLのバックアップと退避
-
- 新しいPostgreSQLをインストール
-
- バックアップより復元
- サーバリブート
停止Mastodon
暂时停下来。
systemctl stop mastodon-*.service
对现有的PostgreSQL进行备份和转移
请使用pg_dumpall命令将PostgreSQL的内容导出。
由于需要使用postgres用户才能运行,请不要忘记在su命令中切换用户。
sudo su postgres
mkdir backup
cd backup
pg_dumpall > all_backup_postgres-db_20190122
exit
当删除完成后,可以将旧的PostgreSQL暂时备份在root目录下。虽然实际上即使不备份也应该能够正确处理,所以也可以将其放置不管。
sudo su
systemctl stop postgresql
mv /var/lib/postgresql /var/lib/postgresql.old
mv /etc/postgresql /etc/postgresql.old
在我们的环境中,似乎将PostgreSQL安装在了/var/lib/postgresql。此外,查看/etc/postgresql/9.5/main/postgresql.conf文件时,发现data_directory=/var/lib/postgresql,所以也将其进行了备份。
安装最新的PostgreSQL。
这个本身就是与原始页面相同的。
https://www.postgresql.org/download/linux/ubuntu/
只是没有指定版本,而是选择了最新的。
我将它添加到apt-get的存储库中。
vim /etc/apt/sources.list.d/pgdg.list
# でこれ↓を追加
deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main
随后,安装新的PostgreSQL。
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
apt-get update
apt-get install postgresql
仅需一种选项,请用中文将以下内容进行释义:从备份中恢复
从备份的数据库中恢复数据。
sudo su postgres
cd /var/lib/postgresql.old/backup
# dumpより復元
psql -d postgres -f all_backup_postgres-db_20190122
# 一応再起動
sudo systemctl restart postgresql
# クラスターが上がってきているか確認
pg_lsclusters
重新启动服务器
在这个时候,尽管使用 “sudo systemctl start mastodon-*.service” 命令大致能启动,但是 sidekiq 先生不能正常工作,并且与其他服务器的通信也失败了,所以我决定重启服务器。
有了自己的服务器,可以随意自主决策,真是太好了。
总结
幸好我有机会体验了升级DB这个“一跃而危险”的宝贵经历,这真是太好了。
拥有自己的服务器,就能深刻地理解基础设施周围的困难啊…
如果有任何不对劲的地方,请给予指正。
啊,下次还要将Redis从3升级到5,将Ruby从2.5.3升级到2.6…