PostgreSQL در OpenBSD: ارتقاء از 12 به 13 – با استفاده از pg_dumpall

معرفی
ارتقاء OpenBSD از 6.8 به 6.9 نیز نیازمند ارتقاء سرور PostgreSQL (از 12.6 به 13.2) است. راهنمای ارتقاء OpenBSD این را می گوید.
در این مقاله، postgresql-server
به دنبال readme رسمی بسته، کاری که انجام دادم به این صورت است:
$ nvim -R /usr/local/share/doc/pkg-readmes/postgresql-server
روش دیگری غیر از این مقاله وجود دارد.pg_upgrade
روشی است با استفاده از نیاز به نصب بسته های اضافی دارد، اما می تواند سرعت مهاجرت را بهبود بخشد.
آموزش
مطمئن شوید که سرور در حال اجرا است.
$ doas rcctl check postgresql
postgresql(ok)
pg_dumpall
اجرا کن
$ doas su _postgresql -c "cd /var/postgresql \
&& pg_dumpall -U postgres > /var/postgresql/full.sqldump.bkYYMMDD"
$ # pg superuser's password is required times of the number of tables
توجه داشته باشید که “YYMMDD” در اینجا باید تاریخ واقعی پشتیبان گیری باشد.به عنوان مثال، اگر پوسته ماهی باشد date +"%y%m%d"
می توانید تاریخ سیستم را با .
سرور را متوقف کنید.
$ doas rcctl stop postgresql
postgresql(ok)
$ # check the server is stopped
$ doas rcctl check postgresql
postgresql(failed)
بسته های سرور را ارتقا دهید.
$ doas pkg_add -ui postgresql-server
$ # updated
/var/postgresql/data
می تواند بازسازی شود.
$ doas mv /var/postgresql/data /var/postgresql/data-12
$ doas su _postgresql -c "mkdir /var/postgresql/data"
initdb
اجرا کن
$ # `--locale` option here can be omitted
$ doas su _postgresql -c "cd /var/postgresql && \
initdb -D /var/postgresql/data -U postgres -A scram-sha-256 -E UTF8 -W \
--locale=xx_XX.UTF-8"
$ # pg superuser's password is required
در صورت لزوم سرور را پیکربندی کنید، اما نه لزوما.
$ # in case of using tls/ssl connection
$ # - set `listen_addresses` and `ssl` option
$ doas nvim "/var/postgresql/data/postgresql.conf"
$ # - add `hostssl` authentication
$ doas nvim "/var/postgresql/data/pg_hba.conf"
$ # - create certificate if not exists
$ doas su _postgresql -c \
"cp /var/postgresql/data-12/server.{crt,key} /var/postgresql/data/"
مطالب فوق بر اساس این مقاله است.
سرور جدید را راه اندازی کنید.
$ doas rcctl start postgresql
postgresql(ok)
$ # check the server is started and running
$ doas rcctl check postgresql
postgresql(ok)
پایگاه داده ها و اشیایی مانند جداول و رکوردها را بازیابی کنید.
$ doas su _postgresql -c "cd /var/postgresql && \
psql -U postgres < /var/postgresql/full.sqldump.bkYYMMDD"
$ # restored
انجام شد 🙂