亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

PostgreSQL定時清理舊數(shù)據(jù)的實現(xiàn)方法

 更新時間:2024年03月13日 09:11:14   作者:總比一事無成的好  
最近覺得數(shù)據(jù)庫中每日數(shù)據(jù)不需要都保持,只需要保留30天的,所以這篇文章給大家介紹了PostgreSQL定時清理舊數(shù)據(jù)的實現(xiàn)方法,文中通過代碼示例和圖文給大家介紹的非常詳細,具有一定的參考價值,需要的朋友可以參考下

前言

最近leader覺得數(shù)據(jù)庫中每日數(shù)據(jù)不需要都保持,只需要保留30天的,就讓我去研究下??邮钦娴拇?,最后才勉強實現(xiàn),故記錄一下。

技術(shù)涉及:docker docker-conpose SQL pgadmin4 pgagent

環(huán)境說明

我們的數(shù)據(jù)庫是部署是使用docker-conponse直接部署在服務(wù)器上的,默認為debain。

postgre為14,所以下面默認你已經(jīng)在docker中安裝了數(shù)據(jù)庫

1、對原來的docker—compose進行修改

在原來的基礎(chǔ)上添加:

pgadmin: 
    container_name: pgadmin4_container 
    image: dpage/pgadmin4 
    restart: always 
    environment: 
        PGADMIN_DEFAULT_EMAIL: <admin@admin.com> PGADMIN_DEFAULT_PASSWORD: root 
    ports: - "5050:80"

添加完畢后,重啟下容器

docker-compose up -d

這個時候我們訪問下服務(wù)器ip:5050就能看到一個可視化的數(shù)據(jù)庫管理頁面

記得在postgres中添加以下sql代碼

CREATE OR REPLACE FUNCTION delete_old_data() RETURNS void AS $$
DECLARE
tbl_name record;
table_date date;
BEGIN
FOR tbl_name IN SELECT table_name FROM information_schema.tables WHERE table_schema = 'public' AND table_name LIKE 'position_record_%' AND table_name ~ '\d{8}' LOOP
table_date := to_date(substring(tbl_name.table_name from '\d{8}'), 'YYYYMMDD');
IF table_date < current_date - 30 THEN
EXECUTE format('DROP TABLE IF EXISTS public.%I', tbl_name.table_name);
END IF;
END LOOP;
END;
$$ LANGUAGE plpgsql;

2、pgadmin基本操作

輸入賬號和密碼:admin@admin.com、root

登陸成功

(修改中文為:左上角-FILE-Preferences-User language-Chinese)

右擊Servers-創(chuàng)建-服務(wù)器

輸入對應(yīng)的ip賬號密碼,就可以看到自己的數(shù)據(jù)庫了。

3、安裝pgagent插件(重點)

你需要進入postgres容器、環(huán)境配置、安裝pgagent、pgagent配置

docker-compose exec pgsql bash # 進入容器
apt-get update # 更新源
apt install vim # 安裝vim工具
vim /etc/apt/sources.list # 進入系統(tǒng)源配置文件把原來的注釋了添加

deb <http://mirrors.aliyun.com/debian/> bullseye main deb 
<http://mirrors.aliyun.com/debian-security> bullseye-security main deb 
<http://mirrors.aliyun.com/debian> bullseye-updates main
# 修改成國內(nèi)源

apt-get update
apt install pgagent # 安裝pgagent
psql -U postgres -h localhost # 創(chuàng)建db擴展
CREATE EXTENSION pgagent; 
\q 
exit
# 在postgres數(shù)據(jù)庫上啟用pgagent:
pgagent hostaddr=127.0.0.1 dbname=postgres user=postgres password=***** 
# 和你的docker-conpose保持一致就好

如果輸入pgagent hostaddr...指令沒有報錯的話就安裝插件完畢了。

這個時候你再去訪問pgadmin就可以看到

即pgagent配置完畢!

4、定時任務(wù)的開啟和清理的sql語句

鼠標右擊pgAgent任務(wù)-創(chuàng)建-pgAgent作業(yè)...

輸入名稱后,點擊步驟

由于我是本地所以連接字符串不需要(按照你的需求來) 在代碼中添加

SELECT delete_old_data();

這個清理的具體邏輯按照你實際情況來

這樣就是一天執(zhí)行一次,按照你的需求來,如果是小時為00分鐘為30,那就是到30分鐘就清理一次(一小時)

點擊保存就好了。

這里可以看到配置的狀態(tài)

尾聲

我就是簡單配置下,看看會不會生效。如果可以的話,我將把定時備份數(shù)據(jù)庫的操作也放到上面去。如果我上的有錯,也會修改。

以上就是PostgreSQL定時清理舊數(shù)據(jù)的實現(xiàn)方法的詳細內(nèi)容,更多關(guān)于PostgreSQL定時清理舊數(shù)據(jù)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論