中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

通過linux命令來將postgresql殺死有什么影響

發布時間:2021-11-26 09:11:46 來源:億速云 閱讀:338 作者:小新 欄目:大數據

這篇文章給大家分享的是有關通過linux命令來將postgresql殺死有什么影響的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

在數據庫的服務器上通過linux 命令來將postgresql 殺死 例如 kill -9  xxxx,這樣做到底會對postgresql 產生什么影響,不少人都曾經這樣干過,為什么說這樣做,糟糕透了。

首先我們需要理解一下postgresql 在 linux中的運行機制,system call and fork() system call ,其中

是system call

postgres 102414      1  0 08:34 ?        00:00:00 /usr/local/postgres/bin/postgres -D /pgdata/data

在下邊的這些就為 fork() sytem call

postgres 102415 102414  0 08:34 ?        00:00:00 postgres: logger   

postgres 102417 102414  0 08:34 ?        00:00:00 postgres: checkpointer   

postgres 102418 102414  0 08:34 ?        00:00:00 postgres: background writer   

postgres 102419 102414  0 08:34 ?        00:00:00 postgres: walwriter   

postgres 102420 102414  0 08:34 ?        00:00:00 postgres: autovacuum launcher   

postgres 102421 102414  0 08:34 ?        00:00:00 postgres: archiver   

postgres 102422 102414  0 08:34 ?        00:00:01 postgres: stats collector   

postgres 102423 102414  0 08:34 ?        00:00:00 postgres: logical replication launcher 

postgres 102415 102414  0 08:34 ?        00:00:00 postgres: logger   

postgres 102417 102414  0 08:34 ?        00:00:00 postgres: checkpointer   

postgres 102418 102414  0 08:34 ?        00:00:00 postgres: background writer   

postgres 102419 102414  0 08:34 ?        00:00:00 postgres: walwriter   

postgres 102420 102414  0 08:34 ?        00:00:00 postgres: autovacuum launcher   

postgres 102421 102414  0 08:34 ?        00:00:00 postgres: archiver   

postgres 102422 102414  0 08:34 ?        00:00:01 postgres: stats collector   

postgres 102423 102414  0 08:34 ?        00:00:00 postgres: logical replication launcher 

上面的通過調用fork()來創建一個新進程。此系統調用復制當前進程,在進程表中創建一個具有許多與當前進程相同屬性的新條目。新創建的進程將是調用進程的子進程

所以父進程為pid 字進程為ppid

通過linux命令來將postgresql殺死有什么影響

當然也可以通過 pstree 來查看當前主線程之間的從屬關系

通過linux命令來將postgresql殺死有什么影響

PostgreSQL 調用LINUX 操作系統的信號種類有以下幾種

1 Abrt  異常終止信號

 2 int  外部中斷,類似于Ctrl +C 的結果

3 quit  直接清理正在運行的線程,并且對臨時產生的文件不清理

4  term  這個命令就是就是我們熟悉的 kill  命令

5  hup   重新初始化線程的命令

6 用戶調用定義

下面我們做一個test , 看看我們要是kill -9 一個用戶連接會有什么問題

通過linux命令來將postgresql殺死有什么影響

下面是在kill 當前連接到數據庫的用戶process 后的日志

通過linux命令來將postgresql殺死有什么影響

如果圖看不清我把關鍵的一句粘一下

WARNING:  terminating connection because of crash of another server process

我們在對比一下kill 用戶連接的進程后的,database 的那些子進程的數字,倒吸一口涼氣了吧。

通過linux命令來將postgresql殺死有什么影響

那馬上看到這里有人就會產生一個問題,那我怎么kill掉 那個 白占著資源,不干活的用戶。

(問題答案將在文末給出)

那么我們翻過來的看一下,在kill -9 一個用戶連接的process后會發生什么

1 用戶的連接process 被kill -9 干掉2

2 終止任何其他活躍的服務器進程

3 警告因為你的這項操作會導致服務器postgresql其他的進程crash

4 所有的服務器的postgresql processes 重新初始化

也就是日志的這幾句話

database system was not properly shut down; automatic recovery in progress

redo starts at 5/1C000098

invalid record length at 5/1C000108: wanted 24, got 0

redo done at 5/1C0000D0

database system is ready to accept connections

OK 到這里你還敢隨便 kill -9 人家用戶的連接,尤其是幾百G 或上T 的大庫,Are you crazy ?

那到底正確的做法是什么

pg_terminate_backend 命令在數據庫里面去KILL 掉這個用戶的連接。

通過linux命令來將postgresql殺死有什么影響

而且不會對數據庫產生任何的危害。(見上圖)

所以你還在天天的kill -9  用戶的process ,建議你住手。

感謝各位的閱讀!關于“通過linux命令來將postgresql殺死有什么影響”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

樟树市| 贵南县| 九台市| 赤城县| 鄂尔多斯市| 泽州县| 陇西县| 唐河县| 开原市| 监利县| 东丽区| 青川县| 和硕县| 郎溪县| 成都市| 咸阳市| 海原县| 张北县| 西贡区| 井陉县| 容城县| 新巴尔虎右旗| 修武县| 高密市| 任丘市| 崇信县| 阿克陶县| 巴中市| 余江县| 长治市| 武山县| 桂东县| 汤原县| 隆化县| 济南市| 抚顺市| 尼木县| 襄汾县| 瑞安市| 大埔县| 临沧市|