">

Upgrade Postgresql 11 To 12

Upgrade Postgresql 11 To 12

Merhaba,

Postgresql 11 den 12 sürümüne upgrate işlemini anlatacağim,

Öncelikle postgresql 12 sürümününün kurulumunu yapacağız;

  • yum install postgresql12
  • yum install postgresql12-server
  • /usr/pgsql-12/bin/postgresql-12-setup initdb

Kurulumu tamamladıktan sonra upgrade'e uygunluk check'i çalıştırılır.(postgresql kullanıcısı ile yapılır. buna ek olarak 11 ve 12 sürümlü veri tabanları kapalı olması gerekmektedir.)  

  • /usr/pgsql-12/bin/pg_upgrade   --old-datadir=/var/lib/pgsql/11/data   --new-datadir=/var/lib/pgsql/12/data   --old-bindir=/usr/pgsql-11/bin   --new-bindir=/usr/pgsql-12/bin   --check
  • Aşağıdaki gibi bir çıktı vermeli;

Performing Consistency Checks

-----------------------------

Checking cluster versions                                   ok

Checking database user is the install user                  ok

Checking database connection settings                       ok

Checking for prepared transactions                          ok

Checking for reg* data types in user tables                 ok

Checking for contrib/isn with bigint-passing mismatch       ok

Checking for tables WITH OIDS                               ok

Checking for invalid "sql_identifier" user columns          ok

Checking for presence of required libraries                 ok

Checking database user is the install user                  ok

Checking for prepared transactions                          ok

*Clusters are compatible*

Sonrasında --check komutunu kaldirarak çalıştırmalıyız böylelikle upgrade işlemimiz başlamış olur.

  • usr/pgsql-12/bin/pg_upgrade   --old-datadir=/var/lib/pgsql/11/data   --new-datadir=/var/lib/pgsql/12/data   --old-bindir=/usr/pgsql-11/bin   --new-bindir=/usr/pgsql-12/bin
  • Aşağıdaki gibi çıktı almalıyız.

 

Performing Consistency Checks

-----------------------------

Checking cluster versions                                   ok

Checking database user is the install user                  ok

Checking database connection settings                       ok

Checking for prepared transactions                          ok

Checking for reg* data types in user tables                 ok

Checking for contrib/isn with bigint-passing mismatch       ok

Checking for tables WITH OIDS                               ok

Checking for invalid "sql_identifier" user columns          ok

Creating dump of global objects                             ok

Creating dump of database schemas

                                                            ok

Checking for presence of required libraries                 ok

Checking database user is the install user                  ok

Checking for prepared transactions                          ok

 

If pg_upgrade fails after this point, you must re-initdb the

new cluster before continuing.

 

Performing Upgrade

------------------

Analyzing all rows in the new cluster                       ok

Freezing all rows in the new cluster                        ok

Deleting files from new pg_xact                             ok

Copying old pg_xact to new server                           ok

Setting next transaction ID and epoch for new cluster       ok

Deleting files from new pg_multixact/offsets                ok

Copying old pg_multixact/offsets to new server              ok

Deleting files from new pg_multixact/members                ok

Copying old pg_multixact/members to new server              ok

Setting next multixact ID and offset for new cluster        ok

Resetting WAL archives                                      ok

Setting frozenxid and minmxid counters in new cluster       ok

Restoring global objects in the new cluster                 ok

Restoring database schemas in the new cluster

                                                            ok

Copying user relation files

                                                            ok

Setting next OID for new cluster                            ok

Sync data directory to disk                                 ok

Creating script to analyze new cluster                      ok

Creating script to delete old cluster                       ok

 

Upgrade Complete

----------------

Optimizer statistics are not transferred by pg_upgrade so,

once you start the new server, consider running:

    ./analyze_new_cluster.sh

 

Running this script will delete the old cluster's data files:

    ./delete_old_cluster.sh

 

Upgrade sonrasın istemiş olduğu  ./analyze_new_cluster.sh ve ./delete_old_cluster.sh dosyalarını çalıştırmamız istenmekte.

 

-bash-4.2$ ./analyze_new_cluster.sh

This script will generate minimal optimizer statistics rapidly

so your system is usable, and then gather statistics twice more

with increasing accuracy.  When it is done, your system will

have the default level of optimizer statistics.

 

If you have used ALTER TABLE to modify the statistics target for

any tables, you might want to remove them and restore them after

running this script because they will delay fast statistics generation.

 

If you would like default statistics as quickly as possible, cancel

this script and run:

    "/usr/pgsql-12/bin/vacuumdb" --all --analyze-only

 

vacuumdb: error: could not connect to database template1: could not connect to server: No such file or directory

Is the server running locally and accepting

connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

 

Done

-bash-4.2$ ./delete_old_cluster.sh

 

Upgrade işlemimiz tamamlandı. artik yeni veri tabanımızı açaıp servisimizi enable edeceğiz ve eski veri tabanından gelen verilerimizi kontrol edeceğiz.

 

  • systemctl enable postgresql-12
  • systemctl start postgresql-12
 
Veri tabanı Versiyonu check edilir;
 
-bash-4.2$ psql -c "SELECT version();"
                                                 version                                                 
---------------------------------------------------------------------------------------------------------
 PostgreSQL 12.1 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39), 64-bit
(1 row)

 

Veri tabanına Bağlantı kurulur 

-bash-4.2$ psql

psql (12.1)

Type "help" for help.

Aşağıda görüleceği üzere eng isimli veri tabanımız yeni veri tabanımıza sorunsuz bir şekilde 

 

postgres=# l+

                                                                    List of databases

   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   |  Size   | Tablespace |                Description    

             

-----------+----------+----------+-------------+-------------+-----------------------+---------+------------+-------------------------------

-------------

 eng       | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                       | 138 MB  | pg_default | 

 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                       | 8209 kB | pg_default | default administrative connect

ion database

 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +| 8065 kB | pg_default | unmodifiable empty database

           |          |          |             |             | postgres=CTc/postgres |         |            | 

 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | postgres=CTc/postgres+| 8065 kB | pg_default | default template for new datab

ases

           |          |          |             |             | =c/postgres           |         |            | 

(4 rows)

 

Herhangi bir tablo kontrol edelim;

eng=# select * from den limit 4

eng-# ;

 schemaname |    tablename     | tableowner | tablespace | hasindexes | hasrules | hastriggers | rowsecurity 

------------+------------------+------------+------------+------------+----------+-------------+-------------

 pg_catalog | pg_statistic     | postgres   |            | t          | f        | f           | f

 pg_catalog | pg_foreign_table | postgres   |            | t          | f        | f           | f

 pg_catalog | pg_authid        | postgres   | pg_global  | t          | f        | f           | f

 pg_catalog | pg_user_mapping  | postgres   |            | t          | f        | f           | f

(4 rows)

 

eng=# select count(*) from den;

 count  

--------

 565248

(1 row)

 

 

Umarım Faydalı olmuştur...

Saygılarımla,

 

Yorumlar

Henüz yorum yapılmadı.

Yorum Yapın