0
我已閱讀「Hans-Jurgen Schonig的PostgreSQL複製」,以及一些最佳實踐,不要在執行archive_command期間覆蓋歸檔WAL文件 - 任何人都可以展開這是爲什麼?並且如果以下方案對WAL覆蓋有效?Postgresql WAL archive_command文件比較
我寫了一個腳本,將執行以下高層次的邏輯爲個人WAL歸檔程序:
if (/archive/00000001000000F700000067 exists and is readable) and (00000001000000F700000067 is byte by byte equal to /archive/00000001000000F700000067)
exit with status 0
else
if (copy 00000001000000F700000067 to /archive/00000001000000F700000067 is successful)
if (/archive/00000001000000F700000067 exists and is readable) and (00000001000000F700000067 is byte by byte equal to /archive/00000001000000F700000067)
exit with status 0
else
exit with status non-zero
else
exit with status non-zero
總之,這種方法希望能抵禦至少場景原WAL文件歸檔錯誤 - 副本具有有效的文件名但已損壞(例如由於硬件故障)。我在這種情況下,WAL歸檔過程的理解:
- 的archive_command在複製過程後字節爲再見比較期間將返回非零退出狀態(我們假定在複製過程有假成功響應)
- 根據該文件,在非零EXIT_STATUS WAL歸檔將無限期重新嘗試 - WAL歸檔的第二次嘗試應該發生
- 的archive_command將認識到,現有的歸檔WAL不會將當前WAL字節匹配-wise
- 複製過程將再次發生,希望結束寫損壞的文件
- EXIT_STATUS 0中的文件的成功比較的情況下,否則這個過程會被重複
有參與的比較(我可以更新到MD5校驗一個非常小的開銷),任何人都可以看到這種方法可能產生的問題嗎?或者推薦什麼?
謝謝
啊當然,輝煌的謝謝你。在我的情況下,這是本地存儲到單個postgresql服務器。 – abstractx1