乳尖春药H糙汉共妻,国产成人无码精品亚洲,少妇肉欲系列1000篇,免费永久看黄神器

公司新聞

如何破壞你的PostgreSQL數據庫?

作者:admin 日期:2023-10-11 瀏覽:

如何破壞你的PostgreSQL數據庫?

  當然,大多數人不想破壞他們的數據庫。這些人將從避免本文中使用的技術中受益。但對于某些人來說,損壞數據庫可能很有用,例如,如果您想測試將用于檢測或修復數據損壞的工具或過程。

  先決條件

  我們需要一個包含一些數據的數據庫,對于我們的一些實驗,我們需要進行一些持續的活動。為此我們可以使用內置的: PostgreSQL benchmark pgbench。我們使用比例因子 100,因此最大的表包含 1000 萬行:

  將使用 5 個并發客戶端會話生成負載:

  通過設置fsync = off創建一個損壞的數據庫

  讓我們在postgresql.conf中設置fsync = off,并在服務器處于負載狀態時關閉服務器。

南通數據恢復

  經過幾次嘗試,我們可以用amcheck擴展檢測數據損壞:

  發生了什么事?數據不再按正確的順序刷新到磁盤,因此數據修改可以在WAL之前到達磁盤。這將導致崩潰恢復期間的數據損壞。

  從備份中創建損壞的數據庫

  當pgbench運行時,我們創建一個基本備份:

  注意,由于我使用的是PostgreSQL v15,

  所以啟動備份模式的函數是:pg_backup_start()而不是pg_start_backup()。

  這是因為自PostgreSQL 9.6以來就被棄用的獨占備份API最終在v15中被刪除了。

  讓我們找出數據庫和pgbench_accounts主鍵索引的對象id:

  我們通過復制數據目錄來創建備份。然后,我們再次復制pgbench_accounts的主鍵索引和提交日志,以確保它們比其他的更近:

  關鍵部分:不要創造backup_label

  現在我們退出備份模式。

  但是忽略pg_backup_stop()返回的backup_label文件的內容

  然后,讓我們確??刂莆募械淖詈笠粋€檢查點不同:

  讓我們啟動服務器:

  現在索引掃描pgbench_accounts失敗了,因為索引包含比表更多的最新數據:

  發生了什么事?通過從備份中省略backup_label文件,我們從錯誤的檢查點恢復,因此表中的數據及其索引不再一致。注意,沒有pg_backup_start()和pg_backup_stop()也能得到同樣的效果,我只是想強調backup_label的重要性。

  使用pg_resetwal創建一個損壞的數據庫

  當數據庫在pgbench負載下時,我們使用

  然后我們運行pg_resetwal:

  然后我們啟動服務器并用amcheck像以前一樣使用來檢查索引的完整性:

  發生了什么事?Pg_resetwal只在干凈關閉的集群上使用是安全的。選項-f只在作為啟動損壞的服務器和搶救一些數據的最后努力。只有專家才應該使用它。

  使用pg_upgrade——link創建一個損壞的數據庫

  我們創建第二個集群initdb:

  然后我們編輯postgresql.conf并選擇一個不同的端口號。關閉原始集群后,我們以鏈接模式運行“升級”:

  pg_upgrade重命名舊集群的控制文件,以免誤啟動。我們將撤消它:

  現在我們可以啟動兩個集群并pgbench在兩者上運行。很快我們就會看到類似的錯誤信息

  發生了什么?由于兩個集群共享相同的數據文件,我們設法在相同的數據文件上啟動了兩臺服務器。這會導致數據損壞。

  通過操作數據文件創建一個損壞的數據庫

  為此,我們找出屬于pgbench_accounts表的文件名:

  現在我們停止服務器并將一些垃圾寫入第一個數據塊:

  然后我們啟動服務器并嘗試從表中選擇:

  發生了什么?我們篡改了數據文件,因此表損壞也就不足為奇了。

  用目錄修改創建一個損壞的數據庫

  誰需要ALTER TABLE來刪除表列?我們可以直接運行

  之后,再查詢這張表就會報錯:

  發生了什么事?我們忽略了在pg_attribute中刪除一列會將attisdrop設置為TRUE,而不是實際刪除條目。此外,我們沒有檢查pg_depend中的依賴關系,也沒有正確地鎖定表以防止并發訪問。不支持修改編目表,如果它破壞了數據庫,則必須保留這兩部分。

  結論

揚州數據恢復

  我們已經看到了幾種破壞PostgreSQL數據庫的方式。其中一些是顯而易見的,一些可能會讓初學者感到驚訝。如果你不想數據庫損壞,

常州數據恢復

  不要打亂系統目錄

  永遠不要修改數據目錄中的任何內容(配置文件除外)

  不要使用fsync = off運行

  不要在崩潰的服務器上調用pg_resetwal -f

  使用pg_upgrade——link進行升級后移除舊集群

  不要刪除或省略backup_label

  運行支持的PostgreSQL版本以避免已知的軟件錯誤

  在可靠的硬件上運行

  原文鏈接:https://www.cybertec-postgresql.com/en/how-to-corrupt-your-postgresql-database/

  PG考試咨詢

  2022年中國PostgreSQL考試認證開班計劃PGCCC,公眾號:PostgreSQL考試認證中心通知:2022年中國PostgreSQL考試認證計劃

  2022新春限時特價PGCCC,公眾號:PostgreSQL考試認證中心通知:2022新春限時特價

  冬奧會紀念幣(每套20枚裝)免費領取中...PGCCC,公眾號:PostgreSQL考試認證中心冬奧會紀念幣(每套20枚裝)免費領取中...

  永遠都不晚:PostgreSQL認證專家(培訓考試-廣州站)PGCCC,公眾號:PostgreSQL考試認證中心永遠都不晚:PostgreSQL認證專家(培訓考試-廣州站)開班通知-PCP認證專家(上海站)培訓開班1106PGCCC,公眾號:PostgreSQL考試認證中心開班通知-PCP認證專家(上海站)培訓開班1106

  PostgreSQL-PCP認證專家-北京站-精彩花絮PGCCC,公眾號:PostgreSQL考試認證中心PostgreSQL認證專家考試(培訓)(10月16日北京站)精彩花絮

  PostgreSQL-PCP認證專家-成都站公眾號:PostgreSQL考試認證中心開班通知-PCP認證專家(成都站)培訓開班1016

  PostgreSQL-PCP認證專家考試-北京站-考試風采PGCCC,公眾號:PostgreSQL考試認證中心PostgreSQL認證專家考試(培訓)-北京站-成功舉辦

  PostgreSQL-PCA認證考試-貴陽站-考試風采PGCCC,公眾號:PostgreSQL考試認證中心PostgreSQL PCA+PCP認證考試在貴陽成功舉辦

  PostgreSQL-PCP認證專家考試-上海站-考試風采PGCCC,公眾號:PostgreSQL考試認證中心PostgreSQL PCP認證考試(上海站)成功舉辦

  PostgreSQL認證專家考試-學員考試總結薛曉剛,公眾號:PostgreSQL考試認證中心難考的PostgreSQL認證考試

  PostgreSQL-PCM認證大師考試-天津站-考試風采PGCCC,公眾號:PostgreSQL考試認證中心PostgreSQL-PCM認證大師考試(天津站)成功舉辦

  如何在工業和信息化部教育與考試中心官網查詢證書PG考試認證中心,公眾號:PostgreSQL考試認證中心如何在工業和信息化部教育與考試中心查詢PostgreSQL證書

  中國PostgreSQL考試認證體系PG考試認證中心,公眾號:PostgreSQL考試認證中心中國PostgreSQL考試認證體系

  電話咨詢

<abbr id="ehohq"><form id="ehohq"><small id="ehohq"></small></form></abbr>
  • <menu id="ehohq"><dl id="ehohq"></dl></menu>

    1. <bdo id="ehohq"><span id="ehohq"></span></bdo>
        主站蜘蛛池模板: 施甸县| 三台县| 保康县| 祥云县| 道孚县| 德格县| 利辛县| 汤阴县| 洛阳市| 丰县| 饶平县| 科尔| 宜丰县| 河间市| 伊吾县| 仁怀市| 长白| 岐山县| 天峨县| 宣城市| 盘锦市| 周宁县| 左权县| 河间市| 长沙市| 静乐县| 永州市| 靖州| 宣城市| 若尔盖县| 昌图县| 桃江县| 高台县| 宁波市| 屏南县| 安图县| 定西市| 双桥区| 扬中市| 精河县| 夏津县|