Re: Postgresql Hata

From: Samed YILDIRIM <samed(at)reddoc(dot)net>
To: Fırat Güleç <firat(dot)gulec(at)hepsiexpress(dot)com>, "pgsql-tr-genel(at)postgresql(dot)org" <pgsql-tr-genel(at)postgresql(dot)org>
Subject: Re: Postgresql Hata
Date: 2017-08-15 06:48:58
Message-ID: 873611502779738@web45g.yandex.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-tr-genel


Selamlar Fırat Bey,

Burada iki seçeneğiniz var. İlk seçeneğiniz eski transaction loglar ile arada boşluk oluşmasını göze alarak yedekleme sürecini tekrar başlatmak, diğer seçenek ise biraz daha uğraşıp arada boşluk oluşmasına müsade etmeden devam etmek.

Arşivlerinizde arada boşluk oluşması durumunda olası bir yedekten dönüş yapmanız gerektiğinde arşiv loglarda elinizdeki boşluk anına kadar veya boşluk anından sonrası için PITR yapabilirsiniz. Arada atlanmış olan xloglar'a denk gelen herhangi bir ana dönüş yapamazsınız.

İlk opsiyonu (arşiv loglar arasında boşluk oluşması durumu) uygulamak için aşağıdaki adımları uygulamanız yeterli

- postgresql.conf dosyasının içerisindeki archive_command satırını aşağıdaki şekilde değiştirin. Bu satır arşivleme işlemi yapmadan sanki başarılı bir şekilde yapmış gibi Postgres'e cevap dönmesine neden olacaktır.

archive_command = 'cd .'

- Postgresql servisini reload edin. psql ile veya herhangi bir istemci ile PostgreSQL'e yönetici hesabı ile oturum açtıktan sonra aşağıdaki komutu çalıştırın.

select pg_reload_conf();

select pg_switch_xlog();

- 15-20s kadar bekleyin, daha sonra postgresql.conf içerisindeki archive_command'i eski haline getirin.

- archive_command'i düzenledikten sonra PostgreSQL içerisinde aşağıdaki komutu çalıştırın.

select pg_reload_conf();

select pg_switch_xlog();

Bu işlemden sonra arşiv dizininize logların geldiğinden emin olduktan sonra veritabanının base backup'ını alın.

İkinci opsiyon için aşağıdaki adımları uygulayın.

- postgresql.conf içerisindeki wal_keep_segments'i yeterince büyük bir değer ile değiştirin. Bu sizin transaction log üretiminizin miktarı ile ilişkili bir değer olmalı. Örneğin günce 100 log üretiyorsanız bu değeri en azından 1000 olarak belirleyin. Bu sayının pg_xlog dizinindeki mevcut log sayısının da üzerinde olması gerekiyor.

- archive_command'i aşağıdaki gibi değiştirin.

archive_command = 'cd .'

- Postgresql servisinin configürasyonunu yeniden yükleyin.

select pg_reload_conf();

select pg_switch_xlog();

- PostgreSQL servisini durdurun.

- pg_xlog dizini altında yer alan dosyaları arşiv dizininize kopyalayın.

- archive_command satırını aşağıdaki şekilde güncelleyin, wal_keep_segments değerini eski haline getirin.

archive_command = 'cp %p /var/lib/postgresql/pg_log_archive/%f'

- PostgreSQL servisini başlatın.

Arşiv loglarının ilgili dizine kopyalandığını gözlemledikten sonra base backup alın.

İyi çalışmalar.

Samed YILDIRIM

14.08.2017, 15:25, "Fırat Güleç" firat(dot)gulec(at)hepsiexpress(dot)com:


Merhaba Can,



Dönüşün için tesekkur ederim. Bahsettiğin move daha önce de dosyanın ismini rename yaparak denemiştim. Fakat bir değişen olmamıştı. Şimdi de bahsettiğin gibi aşağıdaki komutu çalıştırdım. Bir değişiklik olmadı. Alttaki hataları almaya devam ediyor.



mv -v /var/lib/postgresql/pg_log_archive/000000010000000700000065.00000028.backup /root



p: cannot stat 'pg_xlog/000000010000000700000065.00000028.backup': No such file or directory

2017-08-14 15:21:49 +03 [8898-38767] LOG: archive command failed with exit code 1

2017-08-14 15:21:49 +03 [8898-38768] DETAIL: The failed archive command was: test ! -f /var/lib/postgresql/pg_log_archive/000000010000000700000065.00000028.backup cp pg_xlog/000000010000000700000065.00000028.backup /var/lib/postgresql/pg_log_archive/000000010000000700000065.00000028.backup

cp: cannot stat 'pg_xlog/000000010000000700000065.00000028.backup': No such file or directory

2017-08-14 15:21:50 +03 [8898-38769] LOG: archive command failed with exit code 1

2017-08-14 15:21:50 +03 [8898-38770] DETAIL: The failed archive command was: test ! -f /var/lib/postgresql/pg_log_archive/000000010000000700000065.00000028.backup cp pg_xlog/000000010000000700000065.00000028.backup /var/lib/postgresql/pg_log_archive/000000010000000700000065.00000028.backup

cp: cannot stat 'pg_xlog/000000010000000700000065.00000028.backup': No such file or directory

2017-08-14 15:21:51 +03 [8898-38771] LOG: archive command failed with exit code 1

2017-08-14 15:21:51 +03 [8898-38772] DETAIL: The failed archive command was: test ! -f /var/lib/postgresql/pg_log_archive/000000010000000700000065.00000028.backup cp pg_xlog/000000010000000700000065.00000028.backup /var/lib/postgresql/pg_log_archive/000000010000000700000065.00000028.backup

2017-08-14 15:21:51 +03 [8898-38773] WARNING: archiving transaction log file "000000010000000700000065.00000028.backup" failed too many times, will try again later



İyi çalışmalar.




From: pgsql-tr-genel-owner(at)postgresql(dot)org [mailto:pgsql-tr-genel-owner(at)postgresql(dot)org] On Behalf Of Can Sirin

Sent: Friday, August 11, 2017 10:40 AM

To: pgsql-tr-genel(at)postgresql(dot)org

Subject: Re: [pgsql-tr-genel] Postgresql Hata




Merhaba,

Logda belirtildiği üzere arşivleme komutunun dönüş değeri 0 olmadığı için arşivleme yapılamamış. Muhtemelen

/var/lib/postgresql/pg_log_archive/

dizininde

000000010000000700000065.00000028.backup

isimli bir dosya hali hazırda mevcut ve bu yüzden de test komutu 1 dönüyor. Bu dosyayı o dizinden farklı bir yere taşıyın. Arşivleme komutunun başarılı çalışacaktır. Zaten ardından pg_xlog dizininde biriken wal segmentleri kendiliğinden archive dizinine taşınmış olacak.

Özetle, aşağıdaki komutu çalıştırırsanız arşivleme kendilğinden devam edecektir.

mv -v /var/lib/postgresql/pg_log_archive/000000010000000700000065.00000028.backup /root

İyi çalışmalar

Can Şirin

Quoting Fırat Güleç firat(dot)gulec(at)hepsiexpress(dot)com:



Merhabalar,



Hepsiexpress ailesi olarak aranıza katılmaktan mutluluk duyuyoruz. Size sormak istediğim bir konu var.


Test ortamında Recovering Using a Continuous Archive Backup işlemi yaptığımda başarılı bir şekilde recovery yaptım. Fakat log dosyalarında sürekli ekteki hataları basmaya başladı ve artık daha önce archieve’leri saklamak icin belirlediğim “/var/lib/postgresql/pg_log_archive” pathinde hic dosya oluşmuyor. Default olarak “/var/lib/postgresql/9.5/main/pg_xlog” path’inde oluşuyor. Araştırma yaptığımda restore işleminden sonra bu şekilde hataların alınabileceğinden bahseden linklere rastladım. 1. Linkteki en altta belirttiğim resolution’I yaptım fakat hata düzelmedi. Henüz Barman veya standby gibi bir sunucumuz yok. /docs/9.5/static/continuous-archiving.html#BACKUP-PITR-RECOVERY-- Setting Up WAL Archiving’e göre ayarları yaptım.





1-http://documentation.commvault.com/commvault/v10/article?p=products/postgresql/restore_troubleshooting.htm



2-https://stackoverflow.com/questions/17444379/postgresql-9-2-archiving-last-replayed-wal-after-recovery



3-/message-id/CAL4HELd1H_1dANNDazPb4TGWVMdxWWEeECPjABUuTZn6n4rn0Q%40mail.gmail.com










Resolution

This error does not interfere with the backups and restores performed by the software, hence you can ignore them.

However, restarting the PostgreSQL Server will eliminate these warnings in the future.

To avoid the warnings, use the archive command without the test utility as shown in the example below.

archive_command = 'cp %p /opt/PostgreSQL/9.1/archive_dir/%f'

For more information on running a correct archive command, seePSQL0005.



İyi çalışmalar.







FIRAT GÜLEÇ

Veritabanı Yöneticisi

firat(dot)gulec(at)hepsiexpress(dot)com



M:0 532 210 57 18

İnönü Mh. Mimar Sinan Cd. No:3 Güzeller Org.San.Bölg. GEBZE / KOCAELİ












In response to

Browse pgsql-tr-genel by date

  From Date Subject
Next Message Samed YILDIRIM 2017-08-15 07:00:46 Re: Postgresql Hata
Previous Message Fırat Güleç 2017-08-15 06:24:00 Re: Postgresql Hata