Press ESC to close

PostgreSQL Installation Ubuntu , pg_ctlcluster & pg_ctl command.

Öncelikle çok sorulan bir soruyu cevaplayarak başlamak istiyorum, PostgreSQL database yeni kullanmaya başlayacağız, ancak hangi işletim sistemini seçmeliyim sorusu ile başlayalım , bunun cevabı kişiye göre değişebilir benim gerekçelerim ile cevabım ise aşağıdaki gibidir;

PostgreSQL open source bir VTYS yazılım sistemidir ve arkasında güçlü bir topluluk bulunmaktadır, burada bunu kullanan ve buraya paketleri düzenleyen bir topluluk var, bu topluluğun ise önceliği en çok kullanıcı neredeyse haliyle oraya ilk düzenlemeleri paketleri geliştirmek olacaktır, oraya öncelikle güncelleme ve paket hazırlayacaktır, buradaki kullanım oranlarına baktığımızda ise PostgreSQL kullanımının en çok Centos Redhat grubunda olduğunu %50 den fazla kullanıcının, burada bulunduğunu söylersek yanlış bir şey söylemiş olmayız olmayacaktır, dolayısıyla buradaki extension sayıları, çıkarılmış paket sayıları ve dökümanların sayıları, haliyle bununla orantılı diğer işletim sistemlerine göre fazladır, buda başlangıçtaki arkadaşlar için bir avantaj olarak görülebilir ve bu işletim sistemleri ile yola başlamaları daha mantıklı olacağını ben düşünmekteyim.

Bir konuyu ayrıca belirtmeden geçmeyeyim burada bahsettiğim OS ler içerisinde kesinlikle Windows yok, çünkü Open source bir VTYS yi tutupta Windows koymak zaten uygun değil , ayrıca bu VTYS zaten Windows göre hazırlanmamıştır, Windowsta developer ve test yapan arkadaşlar için uygundur ancak kesinlikle production ortam için uygun değildir.

Gelelim debian tabanlı OS ler için PostgreSQL kullanımına performans olarak Centos Redhat grubundan bir farkı olacağını söylemek doğru olmaz, ancak yukarıda da bahsettiğim üzere kullanıcı ve paket sayıları bakımında Centos ve Redhat daha avantajlı olarak görünmektedir, ama tercih tabiki ubuntuda, debian gurubuda olabilir, danışmanlığını yaptığım bazı kurumlara ne kadar ben tavsiye etsemde bazıları ubuntu tercih etmek isteyebiliyorlar, tabiki ubuntuda kullanılabilir.

Burada ubuntu üzerinde kurulum ve konfigürasyon örneği veriyor olacağım oldukça PostgreSQL kurulumu zaten oldukça basit ,ubuntu tarafında farklı olan bazı kısımlar mevcut, bunlara ayrıca değineceğim,

Öncelikle kullanacağımız OS için PostgreSQL repolarını tanıtacağız sonrasında apt paket yöenticisi ile ilgili paketkerin kurulumunu yapıyor olacağız.

Öncelikle, güvenli bir SSL bağlantısı için yazılım sertifikalarını indirmek ve kurmak için kullanılacak prerequest yazılım paketlerini kuruyoruz.

# sudo apt install wget ca-certificates

Ardından, sertifikayı alın, apt-key yönetim yardımcı programına ekliyoruz ve içinde resmi bir PostgreSQL repo adresi bulunan yeni bir yapılandırma dosyası oluşturuyoruz.

# wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
# sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'

Kurulumdan önce paketlerin bir güncellemesi yapılabilir, sonrasında postgres indirmesini yapalım aşağıdaki gibi herhangi bir version belirtmezsek repodaki en güncel versiyonu indirecektir. Hatta kurulumunu da kendi otomatik yapacaktır, dahası postgresql açık bir şekilde karşımıza gelecek sonrasında kapatıp ayarlama yapmamız gerekecek,

# apt install postgresql postgresql-contrib

--Fakat bazen en güncel versiyonu kullanmak istemeyebiliriz o zaman versiyon belirtmeliyiz

# apt install postgresql-14 postgresql-contrib-14

Bakalım postgres kurulmuşmu ilk kurduğu 15 versiyonu açıldığı için 5432 portunu o aldı sonradan kurduğum 14 versionu ise 5433 ü otamatik alarak ekndini açtı

# su - postgres

$ psql -p 5433
psql (14.6 (Ubuntu 14.6-1.pgdg20.04+1))
Type "help" for help.

Ubuntu için Centos RedHat grubundan farklı dolarak data dizini ile bazı parametre dosyalarının farklı yerde olması ve bazı komut setlerinin yine farklılığı söz konusudur şimdi bunlar nedir bir inceleyelim;

postgres=# show data_directory;
       data_directory
-----------------------------
 /var/lib/postgresql/14/main
(1 row)

--hba_file locasyonuna bakalım; oda etc altında oluşmuş

postgres=# show hba_file ;
              hba_file
-------------------------------------
 /etc/postgresql/14/main/pg_hba.conf
(1 row)

--Log directory ise PGDATA altında değil /var/log/postgresql altındadır;

postgres@ubuntu:/var/log/postgresql$ pwd
/var/log/postgresql
postgres@ubuntu:/var/log/postgresql$ ls -lrt
total 8
-rw-r----- 1 postgres adm 3170 Dec 21 11:23 postgresql-14-main.log.1
-rw-r----- 1 postgres adm    0 Dec 21 11:23 postgresql-14-main.log

/etc/postgresql/14/main/ altında neler var bakalım;

$ pwd
/etc/postgresql/14/main/
$ ls
conf.d  environment  pg_ctl.conf  pg_hba.conf  pg_ident.conf  postgresql.conf  start.conf

Centos RedHat e bulunan pg_ctl yerine burada pg_ctlcluster komutu bulunmaktadır. Ama pg_ctl de lullanılabilir. Postgres OS user için .profile dosyasını set edelim ve iki komutun kullanımlarına bakalım;

$ nano .profile
export PGDATA=/var/lib/postgresql/14/main
export PATH=/usr/lib/postgresql/14/bin:$PATH

Burada bazı farklılıkları belirtmek istiyorum, pg_ctl komutlarını kullanmak ve replica oluşturuken dosyaların farklı dizinlerde olması problem yaratabiliyor bunun için burada /etc/postgresql/14/main/ dizini altındaki pg_hba.conf dosyasını, conf.d dizinini ve altındaki dosyaları en son postgresq.conf dosyasını $PGDATA altına taşıyabiliriz veya yeni bir kurulum yapıyorsak, mevcut kurulumu kaldırarak initdb ile temiz bir kurulum yapabiliriz;

pg_ctlcluster Komutu;

pg_ctlcluster - start/stop/restart/reload a PostgreSQL cluster

Neler var --> start|stop|restart|reload|promote


COMMAND
 start
           A log file for this specific cluster is created if it does not exist yet (by default,
           /var/log/postgresql/postgresql-cluster-version-cluster-name.log), and a PostreSQL
           server process (postmaster(1)) is started on it. Exits with 0 on success, with 2 if
           the server is already running, and with 1 on other failure conditions.

       stop
           Stops the postmaster(1) server of the given cluster. By default, "smart" shutdown mode
           is used, which waits until all clients disconnected.

       restart
           Stops the server if it is running and starts it (again).

       reload
           Causes the configuration files to be re-read without a full shutdown of the server.

       promote
           Commands a running standby server to exit recovery and begin read-write operations.


OPTIONS
       -f|--force
           For stop and restart, the "fast" mode is used which rolls back all active
           transactions, disconnects clients immediately and thus shuts down cleanly. If that
           does not work, shutdown is attempted again in "immediate" mode, which can leave the
           cluster in an inconsistent state and thus will lead to a recovery run at the next
           start. If this still does not help, the postmaster process is killed.  Exits with 0 on
           success, with 2 if the server is not running, and with 1 on other failure conditions.
           This mode should only be used when the machine is about to be shut down.

       -m|--mode [smart|fast|immediate]
           Shutdown mode to use for stop and restart actions, default is smart.  See pg_ctl(1)
           for documentation.

       -o|--options option
           Pass given option as command line option to the postmaster process. It is possible to
           specify -o multiple times. See postmaster(1) for a description of valid options.

       pg_ctl options
           Pass given pg_ctl options as command line options to pg_ctl. See pg_ctl(1) for a
           description of valid options.

pg_ctl komutu

$ pg_ctl --help
pg_ctl is a utility to initialize, start, stop, or control a PostgreSQL server.

Usage:
  pg_ctl init[db]   [-D DATADIR] [-s] [-o OPTIONS]
  pg_ctl start      [-D DATADIR] [-l FILENAME] [-W] [-t SECS] [-s]
                    [-o OPTIONS] [-p PATH] [-c]
  pg_ctl stop       [-D DATADIR] [-m SHUTDOWN-MODE] [-W] [-t SECS] [-s]
  pg_ctl restart    [-D DATADIR] [-m SHUTDOWN-MODE] [-W] [-t SECS] [-s]
                    [-o OPTIONS] [-c]
  pg_ctl reload     [-D DATADIR] [-s]
  pg_ctl status     [-D DATADIR]
  pg_ctl promote    [-D DATADIR] [-W] [-t SECS] [-s]
  pg_ctl logrotate  [-D DATADIR] [-s]
  pg_ctl kill       SIGNALNAME PID

Common options:
  -D, --pgdata=DATADIR   location of the database storage area
  -s, --silent           only print errors, no informational messages
  -t, --timeout=SECS     seconds to wait when using -w option
  -V, --version          output version information, then exit
  -w, --wait             wait until operation completes (default)
  -W, --no-wait          do not wait until operation completes
  -?, --help             show this help, then exit
If the -D option is omitted, the environment variable PGDATA is used.

Options for start or restart:
  -c, --core-files       allow postgres to produce core files
  -l, --log=FILENAME     write (or append) server log to FILENAME
  -o, --options=OPTIONS  command line options to pass to postgres
                         (PostgreSQL server executable) or initdb
  -p PATH-TO-POSTGRES    normally not necessary

Options for stop or restart:
  -m, --mode=MODE        MODE can be "smart", "fast", or "immediate"

Shutdown modes are:
  smart       quit after all clients have disconnected
  fast        quit directly, with proper shutdown (default)
  immediate   quit without complete shutdown; will lead to recovery on restart

Allowed signal names for kill:
  ABRT HUP INT KILL QUIT TERM USR1 USR2

Report bugs to <pgsql-bugs@lists.postgresql.org>.
PostgreSQL home page: <https://www.postgresql.org/>

PostgreSQL listener, pg_hba ve diğer konfigürasyonları ile best practice parameterler için aşağıdaki yazıyı inceleyebilirsiniz.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir