Ana içeriğe geç

Ubuntu Veritabanı - PostgreSQL

PostgreSQL, yeni nesil DBMS sistemlerinde bulunabilecek iyileştirmelerle geleneksel ticari veritabanı sistemlerinin özelliklerine sahip bir nesne ilişkisel veritabanı sistemidir.

Kurulum

PostgreSQL'i kurmak için, komut isteminde aşağıdaki komutu çalıştırın:

sudo apt install postgresql

Veritabanı hizmeti, geçerli varsayılan değerlerle otomatik olarak yapılandırılır, ancak özel ihtiyaçlarınıza göre özelleştirilebilir.

Yapılandırma

PostgreSQL, birden çok istemci kimlik doğrulama yöntemini destekler. Varsayılan olarak, IDENT kimlik doğrulama yöntemi postgres ve yerel kullanıcılar için kullanılır. Kerberos gibi alternatifleri yapılandırmak istiyorsanız lütfen PostgreSQL Yönetici Kılavuzu'na bakın.

Aşağıdaki tartışma, TCP / IP bağlantılarını etkinleştirmek ve istemci kimlik doğrulaması için MD5 yöntemini kullanmak istediğinizi varsayar. PostgreSQL yapılandırma dosyaları /etc/postgresql/<version>/main dizinde saklanır.

Örneğin, PostgreSQL 12'yi kurarsanız, yapılandırma dosyaları /etc/postgresql/12/main dizinde saklanır.

Diğer bilgisayarların PostgreSQL sunucunuza bağlanmasını sağlamak için aşağıdaki dosyayı düzenleyin.

/etc/postgresql/12/main/postgresql.conf

#Listen_addresses = 'localhost' satırını bulun ve şu şekilde değiştirin:

listen_addresses = '*'

Info

Hem IPv4 hem de IPv6 bağlantılarına izin vermek için 'localhost'u' :: 'ile değiştirin

Diğer parametrelerle ilgili ayrıntılar için, nasıl düzenlenebilecekleri hakkında bilgi için yapılandırma dosyasına veya PostgreSQL belgelerine bakın.

Artık PostgreSQL sunucumuza bağlanabildiğimize göre, bir sonraki adım postgres kullanıcısı için bir şifre belirlemektir. Varsayılan PostgreSQL şablon veritabanına bağlanmak için bir terminal isteminde aşağıdaki komutu çalıştırın:

sudo -u postgres psql template1

Yukarıdaki komut PostgreSQL veritabanı template1'e kullanıcı postgres olarak bağlanır. PostgreSQL sunucusuna bağlandığınızda, bir SQL komut isteminde olacaksınız. Kullanıcı postgres parolasını yapılandırmak için psql isteminde aşağıdaki SQL komutunu çalıştırabilirsiniz.

ALTER USER postgres with encrypted password 'your_password';

Parolayı yapılandırdıktan sonra , postgres kullanıcısı ile MD5 kimlik doğrulamasını kullanmak için /etc/postgresql/12/main/pg_hba.conf dosyasını düzenleyin.

local   all         postgres                          md5

Son olarak, yeni yapılandırmayı başlatmak için PostgreSQL hizmetini yeniden başlatmalısınız. PostgreSQL'i yeniden başlatmak için bir terminal isteminden şunu girin:

sudo systemctl restart postgresql.service

Warning

Yukarıdaki konfigürasyon hiçbir şekilde tamamlanmamıştır. Daha fazla parametre yapılandırmak için lütfen PostgreSQL Yönetici Kılavuzu'na bakın.

PostgreSQL istemcisini kullanarak diğer makinelerden sunucu bağlantılarını test edebilirsiniz.

sudo apt install postgresql-client
psql -h postgres.example.com -U postgres -W 

Info

Etki alanı adını gerçek sunucu etki alanı adınızla değiştirin.

Streaming Replication

PostgreSQL, WAL XLOG kayıtlarını güncel tutmak için sürekli olarak bir dizi yedek sunucuya gönderme ve uygulama yeteneği sağlayan Streaming Replication adlı güzel bir özelliğe sahiptir. Burada, bir PostgreSQL sunucusunu (ana) yedek bir sunucuda çoğaltmanın çok basit ve basit bir yolu sunulmuştur.

İlk olarak, bekleme sunucusu tarafından kullanılacak ana bilgisayarda bir çoğaltma kullanıcısı oluşturun:

sudo -u postgres createuser --replication -P -e replicator

Ana sunucuyu akış çoğaltmayı açacak şekilde yapılandıralım. /etc/postgresql/12/main/postgresql.conf dosyasını açın ve aşağıdaki satırları değiştirin.

listen_addresses = '*'
wal_level = replica
max_wal_senders = 10

Ayrıca kullanıcıyı /etc/postgresql/12/main/pg_hba.conf kullanarak bekleme sunucusu bağlantısına izin vermek için fazladan bir satır eklemek için dosyayı düzenleyin

host  replication   replicator   <IP address of the standby>      md5

Değişiklikleri uygulamak için hizmeti yeniden başlatın:

sudo systemctl restart postgresql

Şimdi, bekleme sunucusunda PostgreSQL hizmetini durduralım:

sudo systemctl stop postgresql

/etc/postgresql/12/main/postgresql.conf dosyasını düzenleyin.

hot_standby = on

Ana sunucunun mevcut durumunu yedekleyin:

sudo su - postgres
cp -R /var/lib/postgresql/12/main /var/lib/postgresql/12/main_bak
rm -rf /var/lib/postgresql/12/main/* # remove all the files in the data directory
pg_basebackup -h <IP adrress of the master> -D /var/lib/postgresql/12/main -U replicator -P -v -R

Yukarıdaki komutlarda parametrelerin önlerine koyulacak değerler:

  • -h: ana sunucunun ana bilgisayar adı veya IP adresi
  • -D: veri dizini
  • -U: işlemde kullanılacak kullanıcı
  • -P: ilerleme raporlamasına ilişkin ayarlar
  • -v: ayrıntılı modu etkinleştirir
  • -R: Bir standby.signaldosya oluşturur ve bağlantı ayarlarınıpostgresql.auto.conf

Son olarak, bekleme sunucusunda PostgreSQL hizmetini başlatalım:

sudo systemctl start postgresql

Çalıştığından emin olmak için ana sunucuya gidin ve aşağıdaki komutu çalıştırın:

sudo -u postgres psql -c "select * from pg_stat_replication;"

Bekleme sunucusu için bir giriş görmeniz gerekir. Sunulan satırda görebileceğiniz gibi, veri senkronizasyonu eşzamansızdır. Eşzamanlı yapmak istiyorsanız ana sunucuda /etc/postgresql/12/main/postgresql.conf dosyasına gidin ve aşağıdaki satırlara sahip olduğunuzdan emin olun:

synchronous_commit = on
synchronous_standby_names = '*' # you can also specify a IP address

Ve hizmeti yeniden başlatın:

sudo systemctl restart postgresql

Şimdi, pg_stat_replication tabloyu tekrar kontrol edebilirsiniz

sudo -u postgres psql -c "select * from pg_stat_replication;"

Çoğaltmayı test etmek için artık ana bilgisayarda bir test veritabanı oluşturabilir ve yedek sunucuda çoğaltılmış olup olmadığını kontrol edebilirsiniz:

sudo -u postgres createdb test # on the master server
sudo -u postgres psql -c "\l" # on the standby server

Bekleme sunucusundaki ana bilgisayarda oluşturulan veritabanını görebilmeniz gerekir.