快速解決openGauss數(shù)據(jù)庫(kù)pg_xlog爆滿問(wèn)題
問(wèn)題現(xiàn)象
最近有一個(gè)之前搭的環(huán)境登不上了,好久沒用想拿來(lái)測(cè)試的時(shí)候發(fā)現(xiàn)啟動(dòng)不了。啟動(dòng)時(shí)報(bào)錯(cuò):[Errno 28] No space left on device
query也不行了,提示沒有空間了。
查詢磁盤使用情況 df -h ,果然100%
這個(gè)環(huán)境當(dāng)時(shí)安裝的是主備,看了下備庫(kù)的服務(wù)器,發(fā)現(xiàn)不知道啥時(shí)候已經(jīng)被刪庫(kù)了,安裝用戶都不在了。
問(wèn)題定位
進(jìn)一步排查主庫(kù)服務(wù)器,發(fā)現(xiàn)opt目錄下的空間最可疑。
[root@opengauss1 /]# du -lh --max-depth=1
根據(jù)經(jīng)驗(yàn)直奔data/dn目錄,果然就是這里 ,pg_xlog下面產(chǎn)生了過(guò)多日志文件。
看了下文件個(gè)數(shù),有1500多個(gè)。
[root@opengauss1 pg_xlog]# ls -l |wc -l 1591
但是pg_xlog是WAL日志,是不能直接刪除的。我們?cè)诹硗饪臻e的空間下/tmp新建目錄,再挪一部分xlog過(guò)去
[omm@opengauss1 ~]$ cd /tmp/ [omm@opengauss1 tmp]$ ll total 0 -rw-r--r-- 1 root root 0 Mar 22 11:40 ck_monitor.lock drwxr-x--- 2 root root 40 Sep 29 10:00 his-matrixagent_job -rw-r--r-- 1 root root 0 Mar 22 11:40 monitor.lock dr-xr-x--- 2 root root 40 May 27 2022 pub drwx------ 3 root root 60 May 6 2022 systemd-private-ff4a118aad534bfe95b6b390fe984558-chronyd.service-Cy8Q8X drwx------ 3 root root 60 May 6 2022 systemd-private-ff4a118aad534bfe95b6b390fe984558-systemd-logind.service-KrDeKX [omm@opengauss1 tmp]$ mkdir xlog_mv_322
回到 pg_xlog目錄 執(zhí)行遷移
[omm@opengauss1 pg_xlog]$ ls -ltr | head -n 100 | awk '{print "mv "$9 " /tmp/xlog_mv_322/"}' | sh
再嘗試重新啟動(dòng)數(shù)據(jù)庫(kù)。因?yàn)槲业膫鋷?kù)已經(jīng)完全廢棄了,只能指定以主庫(kù)模型重啟 加 -M primary參數(shù)。
[omm@opengauss1 pg_xlog]$ gs_ctl start -D /opt/huawei/install/data/dn/ -M primary
主庫(kù)啟動(dòng)成功。登進(jìn)去查看邏輯復(fù)制槽。
[omm@opengauss1 pg_xlog]$ gsql -d postgres -p 15400 -r gsql ((openGauss 3.0.0 build 02c14696) compiled at 2022-04-01 18:12:19 commit 0 last mr ) NOTICE : The password has been expired, please change the password. Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help. openGauss=# select * from pg_replication_slots; slot_name | plugin | slot_type | datoid | database | active | xmin | catalog_xmin | restart_lsn | dummy_standby -----------+--------+-----------+--------+----------+--------+------+--------------+-------------+--------------- dn_6002 | | physical | 0 | | f | | | 1/4C6B8F70 | f (1 row)
刪除失效邏輯復(fù)制槽
openGauss=# select * from pg_drop_replication_slot('dn_6002'); WARNING: replicationSlotMinLSN is InvalidXLogRecPtr!!! WARNING: replicationSlotMaxLSN is InvalidXLogRecPtr!!! pg_drop_replication_slot -------------------------- (1 row) openGauss=# select * from pg_replication_slots; slot_name | plugin | slot_type | datoid | database | active | xmin | catalog_xmin | restart_lsn | dummy_standby -----------+--------+-----------+--------+----------+--------+------+--------------+-------------+--------------- (0 rows)
查看相關(guān)參數(shù)
openGauss=# show wal_keep_segments; wal_keep_segments ------------------- 16 (1 row) openGauss=# show max_size_for_xlog_prune; max_size_for_xlog_prune ------------------------- 2147483647kB (1 row) openGauss=# show enable_xlog_prune; enable_xlog_prune ------------------- on (1 row) openGauss=# show archive_mode; archive_mode -------------- off (1 row) openGauss=# \q
綜合看下來(lái), max_size_for_xlog_prune參數(shù)的問(wèn)題,它表示如果有備機(jī)斷連且xlog日志大小大于此閾值,則回收日志。但是,默認(rèn)值 給 的 太大了2048G,但是我這個(gè)環(huán)境只有40G,磁盤撐爆了。
解決辦法
知道了問(wèn)題,那么解決方法就是修改max_size_for_xlog_prune為4G,多余的日志 讓DB自動(dòng)清理。
[omm@opengauss1 pg_xlog]$ gs_guc reload -D /opt/huawei/install/data/dn/ -c "max_size_for_xlog_prune=4194304"
再去查看空間已經(jīng)釋放。
問(wèn)題解決,主庫(kù)又能繼續(xù)堅(jiān)持工作了。
總結(jié)
當(dāng)歸檔或流復(fù)制發(fā)生異常時(shí),事務(wù)日志會(huì)不斷生成,如果默認(rèn)值沒修改,可能會(huì)造成磁盤撐爆,直接導(dǎo)致DB掛掉還起不來(lái)。遇到pg_xlog爆滿時(shí),先備份一部分pg_xlog日志到其他地方,刪掉較早時(shí)間的日志,等有一定磁盤空間后再嘗試啟動(dòng)數(shù)據(jù)庫(kù),然后設(shè)置合適的參數(shù)值,最后修復(fù)問(wèn)題。
到此這篇關(guān)于openGauss數(shù)據(jù)庫(kù)pg_xlog爆滿問(wèn)題解決的文章就介紹到這了,更多相關(guān)openGauss數(shù)據(jù)庫(kù)pg_xlog爆滿內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
DataGrip 連接 HiveServer2 報(bào)錯(cuò)的問(wèn)題
這篇文章主要介紹了DataGrip 連接 HiveServer2 報(bào)錯(cuò)的問(wèn)題,本文通過(guò)圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09數(shù)據(jù)庫(kù)sql查詢性能優(yōu)化詳解
這篇文章主要介紹了數(shù)據(jù)庫(kù)sql查詢性能優(yōu)化詳解,查詢優(yōu)化的本質(zhì)是讓數(shù)據(jù)庫(kù)優(yōu)化器為SQL語(yǔ)句選擇最佳的執(zhí)行計(jì)劃,對(duì)于大型的應(yīng)用系統(tǒng),大量的數(shù)據(jù)當(dāng)然需要效率最快的執(zhí)行語(yǔ)句,需要的朋友可以參考下2023-07-07數(shù)據(jù)庫(kù)正規(guī)化和設(shè)計(jì)技巧
數(shù)據(jù)庫(kù)正規(guī)化和設(shè)計(jì)技巧...2007-06-06eXtremeDB 6.0正式發(fā)布:提高擴(kuò)展性和分布式查詢速度
這篇文章主要介紹了eXtremeDB 6.0正式發(fā)布:提高擴(kuò)展性和分布式查詢速度,本文詳細(xì)介紹了全新的eXtremeDB 6.0的一些特性,需要的朋友可以參考下2014-10-10sql中l(wèi)eft join的效率分析與提高效率方法
網(wǎng)站隨著數(shù)據(jù)量與訪問(wèn)量越來(lái)越大,訪問(wèn)的速度變的越來(lái)越慢,于是開始想辦法解決優(yōu)化速度慢的原因,下面是對(duì)程序中一條sql的分析與提高效率的過(guò)程2018-03-03Sql Server 和 Access 操作數(shù)據(jù)庫(kù)結(jié)構(gòu)Sql語(yǔ)句小結(jié)
Sql Server 和 Access 操作數(shù)據(jù)庫(kù)結(jié)構(gòu)Sql語(yǔ)句小結(jié)...2007-06-06