新聞中心
在數(shù)據(jù)庫應(yīng)用過程中,由于各種原因,我們可能需要重啟數(shù)據(jù)庫,而PostgreSQL數(shù)據(jù)庫作為一種開源的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),數(shù)據(jù)庫重啟不僅是經(jīng)常出現(xiàn)的情況,也是非常重要的操作,因?yàn)椴徽_的重啟操作可能會(huì)導(dǎo)致數(shù)據(jù)丟失或系統(tǒng)崩潰。因此,本篇文章將詳細(xì)介紹如何正確重啟PostgreSQL數(shù)據(jù)庫。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)、雅安服務(wù)器托管、營銷軟件、網(wǎng)站建設(shè)、雁塔網(wǎng)站維護(hù)、網(wǎng)站推廣。
1. 了解常見的數(shù)據(jù)庫重啟方式
常見的數(shù)據(jù)庫重啟方式包括軟件重啟、系統(tǒng)重啟和硬件重啟。
1.1 軟件重啟
在軟件重啟的情況下,我們需要使用系統(tǒng)管理員或superuser的權(quán)限,讓PostgreSQL進(jìn)程停止并重新啟動(dòng)。在這種情況下,數(shù)據(jù)不會(huì)丟失,只是數(shù)據(jù)庫的連接會(huì)被重置。
1.2 系統(tǒng)重啟
系統(tǒng)重啟是最常用的重啟數(shù)據(jù)庫方法之一。在這種情況下,操作系統(tǒng)會(huì)關(guān)閉PostgreSQL進(jìn)程,并在系統(tǒng)啟動(dòng)時(shí)重新啟動(dòng)它。這種操作會(huì)直接關(guān)閉數(shù)據(jù)庫,因此需要事先備份數(shù)據(jù),并確保所有數(shù)據(jù)都已經(jīng)保存。
1.3 硬件重啟
硬件重啟是非常危險(xiǎn)的,因?yàn)樗赡軙?huì)導(dǎo)致數(shù)據(jù)丟失。如果是在關(guān)閉硬件的情況下進(jìn)行重啟,那么你需要備份所有數(shù)據(jù),并確保所有數(shù)據(jù)都已經(jīng)保存。
2. 在進(jìn)行數(shù)據(jù)庫重啟前的準(zhǔn)備工作
在進(jìn)行數(shù)據(jù)庫重啟操作之前,我們需要做好以下準(zhǔn)備工作:
2.1 確定是否需要重啟
在進(jìn)行數(shù)據(jù)庫重啟之前,我們需要確定是否需要進(jìn)行重啟操作。如果有任何錯(cuò)誤報(bào)告或異常情況,我們需要首先檢查日志文件以確保是否能夠通過解決問題來避免重啟操作。
2.2 備份數(shù)據(jù)
在數(shù)據(jù)庫重啟之前,我們需要備份數(shù)據(jù)。數(shù)據(jù)庫的備份可以采用多種方式,例如使用pg_dump實(shí)用程序備份數(shù)據(jù)庫。
2.3 關(guān)閉所有會(huì)話
在執(zhí)行重啟之前,我們需要關(guān)閉所有連接到數(shù)據(jù)庫的會(huì)話,這可以通過授予系統(tǒng)管理員或superuser權(quán)限來實(shí)現(xiàn)。如果我們不關(guān)閉所有連接,則可以發(fā)生數(shù)據(jù)丟失或壞塊的情況。
2.4 停止所有工作線程
在重啟數(shù)據(jù)庫之前,需要停止所有的工作線程。在PostgreSQL中,工作線程是負(fù)責(zé)執(zhí)行用戶查詢和計(jì)算的進(jìn)程。在關(guān)閉工作線程之前,需要先授予superuser或系統(tǒng)管理員權(quán)限。
2.5 關(guān)閉PostgreSQL實(shí)例
在執(zhí)行操作之前,需要關(guān)閉正在運(yùn)行的PostgreSQL實(shí)例。在關(guān)閉數(shù)據(jù)庫之前,請(qǐng)確保沒有其他程序在使用數(shù)據(jù)庫服務(wù)。
3. PostgreSQL數(shù)據(jù)庫重啟操作步驟
在做好準(zhǔn)備工作之后,我們可以按照以下步驟重啟PostgreSQL數(shù)據(jù)庫:
3.1 關(guān)閉數(shù)據(jù)庫
在執(zhí)行重啟操作之前,我們需要先關(guān)閉當(dāng)前運(yùn)行的PostgreSQL實(shí)例。我們可以通過使用pg_ctl命令關(guān)閉PostgreSQL,命令如下:
$ sudo systemctl stop postgresql-13
3.2 啟動(dòng)PostgreSQL
在關(guān)閉PostgreSQL之后,可以通過以下命令重新啟動(dòng)數(shù)據(jù)庫實(shí)例:
$ sudo systemctl start postgresql-13
3.3 檢查數(shù)據(jù)庫狀態(tài)
啟動(dòng)數(shù)據(jù)庫之后,我們需要檢查數(shù)據(jù)庫狀態(tài)并確認(rèn)所有進(jìn)程已經(jīng)完成。我們可以使用以下命令檢查數(shù)據(jù)庫狀態(tài):
$ sudo systemctl status postgresql-13
如果數(shù)據(jù)庫狀態(tài)顯示為“活動(dòng)(運(yùn)行中)”,則表示數(shù)據(jù)庫已經(jīng)成功重啟。
4.
在使用PostgreSQL數(shù)據(jù)庫時(shí),重啟操作是非常常見的操作之一。然而,由于重啟操作可能會(huì)影響到數(shù)據(jù)庫的穩(wěn)定性和數(shù)據(jù)完整性,因此需要進(jìn)行嚴(yán)謹(jǐn)?shù)臏?zhǔn)備和保護(hù)。在執(zhí)行重啟操作之前,需要備份所有數(shù)據(jù),并關(guān)閉所有會(huì)話和工作線程。通過正確的操作步驟,我們可以確保PostgreSQL數(shù)據(jù)庫能夠安全高效地進(jìn)行重啟操作。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù)!
如何退出postgresq數(shù)據(jù)庫
\q 退出postgresql數(shù)據(jù)庫,建議使用\?查看幫助信息!
啟動(dòng)數(shù)據(jù)庫服務(wù)器(posgres用戶)
$ postgres D /opt/postgresql/data/ > /opt/postgresql/log/pg_serverlog >& &
當(dāng)然如果設(shè)置了環(huán)境變量
PGDATA=/opt/postgresql/data
export PGDATA
后可使用pg_ctl工具進(jìn)行啟動(dòng):
$ pg_ctl start l /opt/postgresql/log/pg_serverlog
pg_ctl: another server might be running; trying to start server anyway
pg_ctl: could not start server
Examine the log output
$
因?yàn)橹耙呀?jīng)啟動(dòng)所以打印another server might be running此時(shí)查看日志有如下信息:
$ cat pg_serverlog
FATAL: lock file postmasterpid already exists
HINT: Is another postmaster (PID ) running in data directory /opt/postgresql/data?
$
當(dāng)然最簡的啟動(dòng)方式是
$ pg_ctl start
server starting
$ LOG: database system was shut down at :: CST
LOG: autovacuum launcher started
LOG: database system is ready to accept connections
如果要在操作系統(tǒng)啟動(dòng)時(shí)就啟動(dòng)PG可以在/etc/信掘rcd/rclocal 文件中加以下語句
/opt/postgresql/bin/pg_ctl start l /opt/postgresql/log/pg_serverlog D /opt/postgresql/data
關(guān)閉服務(wù)器
最簡單方法
$ pg_ctl stop
waiting for server to shut down done
server stopped
與Oracle相同在關(guān)閉時(shí)也可采用不同的模式簡介如下
SIGTERM
不再允許新的連接但是允許所有活躍的會(huì)話正常完成他們的工作只有在所有會(huì)話都結(jié)束任務(wù)后才關(guān)閉這是智能關(guān)閉
SIGINT
不再允許新的連接向所有活躍服務(wù)器發(fā)送 SIGTERM(讓它們立刻退出)然后等待所有子進(jìn)程退出并關(guān)閉數(shù)據(jù)庫這是快速關(guān)閉
SIGQUIT
令 postgres 向所有子進(jìn)程發(fā)送 SIGQUIT 并且立即退出(所有子進(jìn)程也會(huì)立即退出)而不會(huì)妥善地關(guān)閉數(shù)據(jù)庫系統(tǒng)這是立即關(guān)閉這樣做會(huì)導(dǎo)致下次啟動(dòng)時(shí)的恢復(fù)(通過重放 WAL 日志)我們推薦只在緊急的時(shí)候使用這個(gè)方法
SIGKILL
此選項(xiàng)盡量不要使用這樣會(huì)阻橋差止服務(wù)器清理共享內(nèi)存和信號(hào)燈資源那樣的話你只能在啟動(dòng)服務(wù)器之前自己手工做這件事另外SIGKILL 直接把 postgres 殺掉而不會(huì)等它把信號(hào)中繼給它的敏坦皮子進(jìn)程因此我們還需要手工殺掉每個(gè)獨(dú)立子進(jìn)程
使用方法舉例
$ pg_ctl stop o SIGTERM
LOG: received art shutdown request
LOG: autovacuum launcher shutting down
waiting for server to shut downLOG: shutting down
LOG: database system is shut down
done
server stopped
$
最快速關(guān)閉方法kill postgres 進(jìn)程
$ kill INT `head /opt/postgresql/data/postmasterpid`
$ LOG: received fast shutdown request
LOG: aborting any active transactions
LOG: autovacuum launcher shutting down
LOG: shutting down
LOG: database system is shut down
附postgre啟動(dòng)后的進(jìn)程如下:
$ ps ef|grep post
root: pts/ :: su postgres
postgres: pts/ :: bash
postgres: pts/ :: /opt/postgresql/bin/postgres
postgres: ?:: postgres: writer process
postgres: ?:: postgres: wal writer process
postgres: ?:: postgres: autovacuum launcher process
postgres: ?:: postgres: stats collector process
postgres: pts/ :: ps ef
postgres: pts/ :: grep post
$
直腔哪兆接在命令緩廳行輸入:quit或伍租者是exist即可完成退出。
關(guān)于postgres數(shù)據(jù)庫重啟動(dòng)的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
香港服務(wù)器選創(chuàng)新互聯(lián),香港虛擬主機(jī)被稱為香港虛擬空間/香港網(wǎng)站空間,或者簡稱香港主機(jī)/香港空間。香港虛擬主機(jī)特點(diǎn)是免備案空間開通就用, 創(chuàng)新互聯(lián)香港主機(jī)精選cn2+bgp線路訪問快、穩(wěn)定!
分享名稱:PostgreSQL數(shù)據(jù)庫重啟詳解(postgres數(shù)據(jù)庫重啟動(dòng))
分享鏈接:http://m.5511xx.com/article/djjciss.html


咨詢
建站咨詢
