Linux

Ubuntu 22.04’te PostgreSQL Veri Dizini Yeni Bir Yere Nasıl Taşınır

PostgreSQL’in veri dizinini taşımaya başlamadan önce, etkileşimli bir PostgreSQL oturumu başlatarak mevcut konumu doğrulayalım. Aşağıdaki komutta, psql etkileşimli monitöre girme komutudur ve sistemin postgres kullanıcısı olarak yürütülmesini -u postgres söyler :sudopsql

sudo -u postgres psql

PostgreSQL istemini açtıktan sonra, mevcut veri dizinini göstermek için aşağıdaki komutu kullanın:

SHOW data_directory;
Output       data_directory
-----------------------------
 /var/lib/postgresql/14/main
(1 row)

Bu çıktı, PostgreSQL’in varsayılan veri dizinini kullanacak şekilde yapılandırıldığını onaylar /var/lib/postgresql/14/main, yani taşımanız gereken dizin budur. Sisteminizdeki dizini onayladıktan sonra, meta komutu psqlçalıştırarak istemi kapatabilirsiniz : \q

\q

Verilerin bütünlüğünü sağlamak için, veri dizininde gerçekten değişiklik yapmadan önce PostgreSQL’i durdurun:

sudo systemctl stop postgresql

systemctl tüm hizmet yönetimi komutlarının sonucunu görüntülemez. Hizmeti başarıyla durdurduğunuzu doğrulamak için aşağıdaki komutu kullanın:

sudo systemctl status postgresql

Çıktı size PostgreSQL’in olduğunu inactive (dead), yani durdurulduğunu söylemelidir:

Output○ postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor>
     Active: inactive (dead) since Thu 2022-06-30 18:46:35 UTC; 27s ago
    Process: 4588 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
   Main PID: 4588 (code=exited, status=0/SUCCESS)
        CPU: 1ms

Artık PostgreSQL sunucusu artık çalışmadığına göre, mevcut veritabanı dizinini ile yeni konuma kopyalayın rsync. Bayrağın kullanılması -a, izinleri ve diğer dizin özelliklerini korurken -v, ilerlemeyi izlemenize yardımcı olacak ayrıntılı çıktılar sağlar. Yeni konumdaki orijinal dizin yapısını taklit etmek için dizinden rsync başlayacaksınız . postgresql Bu dizini bağlama noktası dizini içinde oluşturarak postgresql ve PostgreSQL kullanıcısının sahipliğini koruyarak, gelecekteki yükseltmeler için izin sorunlarından kaçınabilirsiniz.

Not: TAB Dizinde, tamamlamayı kullanırsanız eklenebilecek bir eğik çizgi olmadığından emin olun. Sonuna bir eğik çizgi eklerseniz rsync, dizinin içeriğini kopyalamak yerine dizinin içeriğini bağlama noktasına atar.

Sürüm dizini, 14 konumu dosyada açıkça tanımladığınız için kesinlikle gerekli değildir postgresql.conf, ancak proje kuralına uymak, özellikle gelecekte birden fazla PostgreSQL sürümünü çalıştırmaya ihtiyaç duyulacaksa, kesinlikle zarar vermez:

sudo rsync -av /var/lib/postgresql /mnt/volume_nyc1_01

Kopyalama tamamlandıktan sonra, geçerli klasörü bir .bak uzantıyla yeniden adlandırın ve taşımanın başarılı olduğunu onaylayana kadar saklayın. Bu, hem yeni hem de eski konumda benzer şekilde adlandırılmış dizinlere sahip olmaktan kaynaklanabilecek karışıklığı önlemeye yardımcı olacaktır:

sudo mv /var/lib/postgresql/14/main /var/lib/postgresql/14/main.bak

Artık yeni konumunda veri dizinine erişmek için PostgreSQL’i yapılandırmaya hazırsınız.

Adım 2 — Yeni Veri Konumuna İşaret Etme

Varsayılan olarak, data_directory yapılandırma yönergesi dosyada /var/lib/postgresql/14/main olarak ayarlanmıştır. /etc/postgresql/14/main/postgresql.conf Yeni veri dizinini yansıtmak için bu dosyayı düzenleyin:

sudo nano /etc/postgresql/14/main/postgresql.conf

İle başlayan çizgiyi bulun ve data_directory takip eden yolu yeni konumu yansıtacak şekilde değiştirin. Bu öğretici bağlamında, güncellenen yönerge şu şekilde yazılacaktır: /etc/postgresql/14/main/postgresql.conf

. . .
data_directory = '/mnt/volume_nyc1_01/postgresql/14/main'
. . .

CTRL + XY ve ardından tuşlarına basarak dosyayı kaydedin ve kapatın ENTER. PostgreSQL’i yeni veri dizini konumunu kullanacak şekilde yapılandırmak için yapmanız gereken tek şey budur. Bu noktada geriye kalan tek şey PostgreSQL hizmetini yeniden başlatmak ve gerçekten doğru veri dizinine işaret edip etmediğini kontrol etmektir.

Adım 3 — PostgreSQL’i Yeniden Başlatma

data-directory Dosyadaki yönergeyi değiştirdikten sonra postgresql.conf devam edin ve aşağıdakileri kullanarak PostgreSQL sunucusunu başlatın systemctl:

sudo systemctl start postgresql

PostgreSQL sunucusunun başarıyla başlatıldığını doğrulamak için aşağıdakileri kullanarak durumunu tekrar kontrol edin systemctl:

sudo systemctl status postgresql

Hizmet doğru bir şekilde başlatıldıysa , komutun çıktısında Active satır şunu söyleyecektir : active (exited)

Output● postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor>
     Active: active (exited) since Thu 2022-06-30 18:50:18 UTC; 3s ago
    Process: 4852 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
   Main PID: 4852 (code=exited, status=0/SUCCESS)
        CPU: 1ms

Son olarak, yeni veri dizininin gerçekten kullanımda olduğundan emin olmak için PostgreSQL komut istemini açın:

sudo -u postgres psql

Veri dizini için değeri tekrar kontrol edin:

SHOW data_directory;
Output             data_directory
----------------------------------------
 /mnt/volume_nyc1_01/postgresql/14/main
(1 row)

Bu, PostgreSQL’in yeni veri dizini konumunu kullandığını doğrular. Bunu takiben, veritabanınıza erişebildiğinizden ve içindeki verilerle etkileşim kurabildiğinizden emin olmak için bir dakikanızı ayırın. Mevcut verilerin bütünlüğünü doğruladıktan sonra, yedek veri dizinini kaldırabilirsiniz:

sudo rm -Rf /var/lib/postgresql/14/main.bak

Bununla, PostgreSQL veri dizininizi başarıyla yeni bir konuma taşıdınız.

Muhammed Kerim Koç

1996 yılında Giresun Şebinkarahisarda dünyaya geldim. İlk ve orta öğretimi şebinkarahisarda tamamladım. Liseyi şebinkarahisar Anadolu Teknik ve Endüstri Meslek Lisesinde bitirdim. Üniversite için de Şebinkarahisar Teknik Bilimler Meslek Yüksek Okulunda Bilgisayar programcılığını okudum. Üniversite stajı için gelmiş olduğum özel bir firmada işe başladım. 5,5 yıl bu firmadan çalıştıktan sonra farklı bir sektör olan inşaat sektöründe Bilgi teknolojileri Uzmanı olarak devam etmekteyim. Kendimi geliştirmek için Bilge adam akademiden sistem uzmanlığı eğitimi aldım. Sanallaştırma ve Ağ tarafında kendimi sürekli olarak geliştiriyorum.

İlgili Makaleler

Göz Atın
Kapalı
Başa dön tuşu
Sohbet Başlat
Yardıma mı ihtiyacınız var ?
Merhaba size nasıl yardımcı olabilirim