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.