精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

多數據庫Citus集群的維護

譯文
數據庫 其他數據庫
本文將介紹如何管理Citus集群的數千個數據庫管理員采用的數百個數據庫。本指南提供了一個完整且經過實戰考驗的解決方案。

譯者 | 李睿

審校 | 孫淑娟

本指南適用于數據庫管理員(DBA),他們使用Citus管理PostgreSQL節點的內部集群,Citus是PostgreSQL的擴展,可實現水平可擴展性和列式存儲。 

當人工維護集群成為一項艱巨的工作時,每個數據庫管理員(DBA)都會在某個時候達到一個閾值,并且一些自動化解決方案的必要性變得越來越明顯。這里將討論這種自動化解決方案的一個示例。

一、設置

使用以下Citus集群進行分析:

  • PostgreSQL 14.2,Citus 10.2。
  • Btrfs文件系統上的21個節點(包括一個協調節點),zstd壓縮級別為10。
  • 集群內36個數據庫,遵循“一個租戶一個數據庫”的原則。
  • pg_database_size報告的數據總量為151TB,btrfs fi使用報告的數據量為30TB。

集群中的每個數據庫都包含自己獨特的表和視圖,包括物化、權限和配置參數。

二、特征

在自動化過程中,可以得出自動化解決方案應具備的以下一組特征:

簡單:維護過程應該簡單、明顯、連貫和統一。盡量減少復雜的指令、從不支持的自定義shell腳本和部落知識。

審計:應記錄在集群上執行的每個操作,其中包括操作的作者、操作的目的、日期和執行的確切命令。

歷史性:當集群從備份中恢復時,應用到集群的一組更改應該很容易重新應用。

三、執行

1.基礎

為了解決這些原則,決定使用Flyway數據庫遷移工具。它允許通過版本化的遷移腳本對數據庫模式進行增量演化。

遷移腳本存儲在帶有持續交付(CD)機制的Git存儲庫中,配置為在每次提交時運行遷移。這樣,為了將更改應用到集群,數據庫管理員(DBA)應該使用遷移SQL腳本創建提交并推送它。

這種設置非常常見,甚至適用于普通PostgreSQL,但對于Citus,有一些細微差別:一些命令應該在集群中的所有節點上執行,有時在特定節點上執行。幸運的是,PostgreSQL和Citus中有足夠的機制來涵蓋幾乎所有用例。

2.單點維護

為了對集群中的數據庫進行維護,最好創建一個專用數據庫。在進一步的示例中,這將被稱為維護。這是一個方便維護相關擴展和功能的地方,但最重要的是它保存了Flyway的歷史表,反映了集群中所有數據庫的演變,而不是在每個數據庫中都有單獨的歷史表。

將在維護時執行的遷移腳本應該能夠創建其他數據庫,以及在它們上執行SQL。這就是dblink擴展發揮重要作用的地方:它允許連接到任何其他PostgreSQL服務器,包括localhost,并在那里執行任意SQL。考慮到這一點,創建帶有Citus擴展的數據庫的遷移腳本如下所示:

SQL

1 CREATE DATABASE new_citus_database;
2 SELECT DBLINK_EXEC('dbname=new_citus_database user=postgres', $remote$
3CREATE EXTENSION citus;
4 $remote$);


需要注意的一點:數據庫不能在事務中創建,因此需要通過腳本配置文件禁用它進行遷移。

在新數據庫上創建Citus擴展是不夠的。根據文檔,為了讓Citus工作,有必要:

  • 在工作節點上創建同名數據庫。
  • 在這些數據庫上創建Citus擴展。
  • 使用集群中每個工作節點的地址調用citus_add_node()。

這很麻煩,因為它需要人工連接到工作人員或專用的Ansible劇本。幸運的是,維護數據庫已經包含了從SQL腳本執行此操作所需的所有工具:

SQL

1-- Create database on every worker
2SELECT run_command_on_workers($cmd$CREATE DATABASE new_citus_database;$cmd$);
3
4-- Connect to the fresh database on worker nodes and create the Citus extension
5 WITH citus_workers AS (SELECT node_name FROM citus_get_active_worker_nodes())
6 SELECT DBLINK_EXEC(FORMAT('host=%s dbname=new_citus_database user=postgres', node_name), $remote$
7 CREATE EXTENSION citus;
8 $remote$)
9 FROM citus_workers;
10
11 -- Add workers to the fresh database on the coordinator
12 WITH citus_workers AS (SELECT node_name FROM citus_get_active_worker_nodes() ORDER BY node_name)
13 SELECT DBLINK_EXEC('dbname=new_citus_database user=postgres', format($remote$
14 START TRANSACTION;
15 SELECT citus_add_node('%s', 5432);
16 COMMIT ;
17 $remote$, node_name))
18 FROM citus_workers;

在這里,DBLINK_EXEC用于連接集群中的所有工作節點,以及協調器。對于DBLINK_EXEC不支持的SELECT語句,有一個解決方法:START TRANSACTION; ... COMMIT;。

可以以類似的方式配置新創建的數據庫:

SQL

1 ALTER DATABASE new_citus_database SET WORK_MEM = '256MB';
2 SELECT run_command_on_workers($cmd$
3 ALTER DATABASE new_citus_database SET WORK_MEM = '256MB';
4 $cmd$);

以及創建角色、授予權限和任何其他聲明。

3.維護多個數據庫

類似的方法用于在一個腳本中管理幾個數據庫。例如,假設已經創建了另一個數據庫,另一個_citus_database,并且有必要在那里創建相同的表和視圖。使用CTE可以輕松實現:

SQL

1 WITH databases AS (SELECT *
2 FROM (VALUES ('new_citus_database'),
3 ('another_citus_database')) AS t(db_name))
4 SELECT DBLINK_EXEC(FORMAT('dbname=%I user=postgres', db_name), $remote$
5 START TRANSACTION;
6 CREATE TABLE test_table
7 (user_id TEXT, data jsonb);
8 SELECT create_distributed_table('test_table', 'user_id');
9 CREATE VIEW test_table_view AS SELECT * FROM test_table;
10COMMIT;
11 $remote$)
12 FROM databases;

在實踐中,視圖的創建應該被提取到一個特殊的可重復腳本中。

而代替CTE,創建實用程序PL/SQL函數是可能的并且更可取。例如,當在同一個實例上存在安裝和未安裝Citus擴展的數據庫時,擁有一個僅在安裝了Citus的數據庫上運行SQL語句的函數會很方便。此類函數的示例如下所示:

SQL

CREATE OR REPLACE PROCEDURE public.execute_on_databases_with_citus(statement TEXT)
LANGUAGE plpgsql AS
$$
DECLARE
db_name TEXT;
BEGIN
FOREACH db_name IN ARRAY (SELECT ARRAY_AGG(datname)
FROM pg_database
WHERE EXISTS(SELECT *
FROM DBLINK(FORMAT('dbname=%s', datname),
$cmd$SELECT TRUE FROM pg_extension WHERE extname = 'citus'$cmd$) AS t(citus_installed BOOLEAN))
AND datname NOT IN ('template0', 'template1'))
LOOP
RAISE NOTICE 'EXECUTING ON %', db_name;
EXECUTE FORMAT('SELECT * FROM dblink_exec(''dbname=%s'', $_CMD_$%s$_CMD_$);', db_name,
statement);
END LOOP;
END
$$;

有了這樣的功能,運行ALTER EXTENSION citus UPDATE就很容易了。例如:

SQL

CALL execute_on_databases_with_citus($cmd$ALTER EXTENSION CITUS UPDATE$cmd$);

所描述的管理方式非常靈活,允許數據庫管理員(DBA)實現流暢管理體驗所需的每一個邏輯。

4.注意事項

根據設置,可能需要配置.pgpass文件以便能夠通過dblink連接到工作節點。從歷史上看,它是作為Citus安全配置的一部分完成的,但隨著Citus11的發布,它發生了變化。

5.綜合

以上將前面描述的所有步驟放入遷移腳本中。遷移腳本的順序在磁盤上可能如下所示:

Shell
.
└── db
└── migration
├── R__test_table_view.sql
├── V1__init.sql
├── V2.0__create_new_citus_database.sql
├── V2.0__create_new_citus_database.sql.conf
├── V2.1__new_citus_database_configuration.sql
├── V3__another_citus_database.sql
├── V3__another_citus_database.sql.conf
├── V4__no_citus_database.sql
├── V5__common_table.sql
└── V6__update_citus_extension.sql

有了這樣的結構,如果使用CLI工具,現在可以調用flywaymigrate,或者如果喜歡Gradle插件,可以調用./gradlewflywayMigrate-i。將其推送到Git并配置最喜歡的持續集成(CI)/持續交付(CD)工具,例如GitLab或GitHubActions,將獲得具有所需特征的解決方案。 

四、局限性

以上所描述的方法有一個嚴重的局限性:由于DBLINK_EXEC的性質,多數據庫語句是非事務性的。它要求遷移腳本以某種方式是冪等的:或者通過數據操作語言(DML)語句中的IFNOTEXISTS類子句,或者通過DROP重新創建對象。用Citus對象實現可能有點棘手,但幾乎總是存在一種解決方法。例如,可以像這樣使表的創建具有冪等性:

SQL

WITH databases AS (SELECT *
FROM (VALUES ('new_citus_database'),
('another_citus_database')) AS t(db_name))
SELECT DBLINK_EXEC(FORMAT('dbname=%I user=postgres', db_name), $remote$
START TRANSACTION;
CREATE TABLE IF NOT EXISTS test_table (user_id TEXT, data jsonb);
DO $$
BEGIN
EXECUTE $cmd$SELECT create_distributed_table('test_table', 'user_id');$cmd$;
EXCEPTION
WHEN SQLSTATE '42P16' THEN
RETURN;
END;$$;
COMMIT;
$remote$)
FROM databases;

五、結語

這一指南展示了使用Citus集群獲得最佳管理體驗的基本原則和工具。Flyway工具的功能與Citus、dblink和PL/pgSQL提供的功能相結合,使數據庫管理員(DBA)可以輕松管理各種規模的集群。

原文鏈接:https://dzone.com/articles/maintenance-of-a-citus-cluster

責任編輯:武曉燕 來源: 51CTO技術棧
相關推薦

2011-03-24 16:38:00

Exchange數據庫維護

2009-06-24 07:58:52

Hibernate多數

2011-08-10 15:46:29

數據庫

2011-05-26 15:53:59

數據庫更新維護

2011-05-25 09:20:24

Oracle數據庫

2010-11-29 11:51:59

Sybase數據庫維護

2011-06-14 15:11:59

ORACLE

2009-02-03 13:06:17

日常維護規范MySQL

2009-06-18 16:29:00

牛新莊數據庫

2009-07-21 15:21:59

iBATIS.NET多

2011-08-04 09:08:09

Vertica多數據庫實例端口

2022-02-25 17:38:15

Citus

2010-09-25 16:38:34

維護DHCP數據庫文件

2010-07-09 11:28:12

SQL Server數

2009-04-24 09:15:50

Oracle維護前瞻性

2011-08-18 16:42:04

Oracle數據庫維護SQL代碼示例

2010-05-12 15:26:05

MySQL數據庫日志

2024-01-15 13:34:00

2020-02-22 14:14:24

數據庫維護必做

2011-06-29 14:01:30

多數據庫實例效率
點贊
收藏

51CTO技術棧公眾號

国产一区白浆| 日本黄色免费在线| 国产成人精品亚洲777人妖| 欧美福利视频网站| 一区二区免费在线观看视频| av综合电影网站| 亚洲欧洲一区二区三区| 国产精品一区视频| 伊人网综合在线| 亚洲经典视频在线观看| 有码中文亚洲精品| 国内精品免费视频| 成人黄色免费观看| 亚洲电影第三页| 一区二区三区偷拍| 人妻少妇精品无码专区久久| 美女高潮久久久| 久久免费精品日本久久中文字幕| 天天操天天舔天天射| 盗摄牛牛av影视一区二区| 欧美亚洲综合另类| 欧美成人高潮一二区在线看| 欧美a在线看| 972aa.com艺术欧美| 91网站在线看| 国产精品xxxxxx| 国产精品婷婷| 欧美精品aaa| 视频国产一区二区| 国产精品免费大片| 亚洲精品第一国产综合精品| 亚洲综合123| 九九久久国产| 91国产精品成人| 欧美日韩一道本| 日本在线视频中文有码| 亚洲国产精品99久久久久久久久| 精品国产乱码久久久久软件 | 一级片一级片一级片| 免费欧美一区| 亚洲开心激情网| 国产精品手机在线观看| 日韩视频一二区| 欧美日本一区二区三区| 99热手机在线| 亚洲一区二区三区四区| 欧美日韩在线视频一区二区| 男人插女人视频在线观看| 婷婷色在线资源| 亚洲欧美乱综合| 9l视频自拍9l视频自拍| 国产肥老妇视频| 成人影院在线观看| 99国产欧美另类久久久精品| 国产精品日韩一区二区| 亚洲精品97久久中文字幕无码| 国产制服丝袜一区| 91欧美激情另类亚洲| 国产精品毛片久久久久久久av | 一区二区久久精品| 亚洲伊人精品酒店| 91精品国产一区二区| 午夜视频在线观| 久久国际精品| 欧美v日韩v国产v| 无码国产精品一区二区免费式直播| 亚洲国产欧美在线观看| 精品国产污污免费网站入口| 亚洲av人人澡人人爽人人夜夜| 国产亚洲成av人片在线观黄桃| 欧美精品一区二区三区四区 | 欧美激情极品| 国产丝袜一区视频在线观看| 日本二区在线观看| 99久久精品网| 欧美激情日韩图片| 国产成人免费观看视频| 久久电影一区| 国产女精品视频网站免费| 国产精品天天操| 国产91精品久久久久久久网曝门| 国产精品一区二区av| 三区在线视频| 国产精品第13页| 欧美中日韩在线| 二区三区不卡| 91精品一区二区三区在线观看| 国产人妖在线观看| 婷婷亚洲精品| 日韩中文字幕在线播放| 欧美爱爱小视频| 久久国产欧美| 成人两性免费视频| 午夜小视频在线播放| 国产午夜久久久久| 400部精品国偷自产在线观看| h片在线观看| 色婷婷精品大视频在线蜜桃视频| 日本高清一区二区视频| 成人爽a毛片免费啪啪红桃视频| 国产一区二区三区视频| 久久成人国产精品入口| 久久久久久9| 成人欧美一区二区三区视频xxx| 韩国三级av在线免费观看| 亚洲欧美另类图片小说| 国产熟女高潮视频| 亚洲一区网址| 中文字幕av一区中文字幕天堂 | 91九色在线观看| 免费在线观看污视频| 亚洲日本丝袜连裤袜办公室| www.玖玖玖| 日韩视频一区二区三区四区| 一色桃子一区二区| 国产精品6666| 国产一二三精品| 日韩一区不卡| 国产免费拔擦拔擦8x在线播放| 欧美福利一区二区| 美女被到爽高潮视频| 伊人成人在线| 亚洲一区二区三区视频| 成人在线观看一区| 欧美色视频日本高清在线观看| a级大片免费看| 免费久久久久久久久| 久久久久久亚洲精品不卡| 91片黄在线观看喷潮| 久久精品视频网| 日韩av片在线看| 国产精品久久久网站| 欧美精品日韩三级| 一级黄色免费片| 中文字幕乱码亚洲精品一区 | 日本在线观看中文字幕| 国产乱对白刺激视频不卡| 亚洲看片网站| 成人涩涩视频| 在线播放国产一区中文字幕剧情欧美| 四虎成人永久免费视频| 成人av先锋影音| 亚洲理论电影在线观看| 亚洲午夜免费| 欧美国产中文字幕| 亚洲AV午夜精品| 亚洲激情图片一区| 小日子的在线观看免费第8集| 色喇叭免费久久综合网| 国产精品一区二区三| 国产人成在线观看| 在线观看日韩高清av| 一区二区三区伦理片| 视频一区二区不卡| 日本一区二区免费看| 国产精欧美一区二区三区蓝颜男同| 亚洲精品美女久久| 国产一级片毛片| 久久亚洲二区三区| 熟妇人妻无乱码中文字幕真矢织江| 亚洲人成伊人成综合图片| 青青草精品毛片| 高清性色生活片在线观看| 欧美亚洲高清一区| 国产精品麻豆一区| 韩国午夜理伦三级不卡影院| 7777在线视频| 99国产精品免费网站| 性欧美在线看片a免费观看| 天天操天天射天天舔| 欧美日韩激情网| 欧美另类z0zx974| 国产在线视频一区二区三区| 久久久久久久香蕉| 欧美影院天天5g天天爽| 国产精欧美一区二区三区| 91caoporn在线| 日韩精品最新网址| 天天爽夜夜爽夜夜爽精品| 久久蜜桃香蕉精品一区二区三区| jizz欧美激情18| 永久亚洲成a人片777777| 国产精品对白一区二区三区| 午夜精品成人av| 爱福利视频一区| 涩涩视频免费看| 欧美性猛交xxxx乱大交退制版 | 免费日韩av片| 综合色婷婷一区二区亚洲欧美国产| 日韩亚洲欧美在线| 国产精品爽黄69天堂a| 国产写真视频在线观看| 精品精品欲导航| 中文字幕高清在线免费播放| 国产精品免费aⅴ片在线观看| 色男人天堂av| 久久国产精品99国产| 免费成人深夜夜行网站视频| 欧美a一欧美| 国产精品视频一区二区高潮| 日本在线观看高清完整版| 亚洲人成电影在线| 精品国产亚洲AV| 日本韩国一区二区三区| 免费在线视频观看| 国产午夜精品一区二区三区嫩草| xxx中文字幕| 日韩影院免费视频| 日本wwwcom| 99久久99久久精品国产片果冰| 久久久久久艹| 成人中文字幕视频| 成人在线视频网| 欧美人体一区二区三区| 欧美激情精品久久久久| 午夜在线播放| 亚洲欧美中文字幕| 免费激情视频网站| 宅男噜噜噜66一区二区66| 黄色小视频在线免费看| 亚洲视频在线一区| аⅴ天堂中文在线网| 99精品欧美一区二区三区小说| 国产精品久久久久久久av福利| 天堂va蜜桃一区二区三区| 热99这里只有精品| 欧美精品三区| 久久国产精品免费观看| 色呦哟—国产精品| 色999日韩自偷自拍美女| 日韩欧美在线精品| 国产福利久久| 亚洲91网站| 91亚洲永久免费精品| 久久99久久久精品欧美 | 九色porny丨入口在线| 欧美精品一区在线播放| 成人video亚洲精品| 久久久国产一区二区| 日本电影在线观看网站| 伊人久久综合97精品| 天堂中文在线观看视频| 91精品国产综合久久精品麻豆 | 日韩精品一区二区av| 一区二区三区 在线观看视频| 久久久久久视频| 亚洲欧美日韩在线播放| 999精品视频在线观看播放| 国产精品久久免费看| 貂蝉被到爽流白浆在线观看| 欧美国产日韩一二三区| 99久久99久久精品免费看小说.| 国产日产欧产精品推荐色| 在线不卡av电影| 欧美精彩视频一区二区三区| 自拍偷拍你懂的| 国产精品盗摄一区二区三区| 激情无码人妻又粗又大| 亚洲欧洲一区二区三区| 免看一级a毛片一片成人不卡| 亚洲精品国久久99热| 久久一区二区三| 亚洲成av人片| 伊人手机在线视频| 欧美系列亚洲系列| 97精品人妻一区二区三区在线| 91精品国产福利| 欧性猛交ⅹxxx乱大交| 精品爽片免费看久久| 成人在线免费观看| 不卡毛片在线看| 国产美女高潮在线| 国产精品精品国产| 国产欧美视频在线| 国产精品入口免费| 亚洲精品国产精品粉嫩| 亚洲高清视频一区二区| 中文字幕一区二区精品区| 欧美精品久久久久久久久久久| 久久久国产精品一区二区中文| av网站在线不卡| 国产东北露脸精品视频| 国产精品第七页| 欧美激情一区二区| 曰本女人与公拘交酡| 欧美日韩激情小视频| 中文字幕视频二区| 精品伦理精品一区| 国产网站在线播放| 欧美人与物videos| 日韩三级影视| 97人人澡人人爽| 国产精品亚洲片在线播放| 男女激烈动态图| 久久av一区| 亚洲成人精品在线播放| 国产午夜精品久久久久久久| 激情小说中文字幕| 在线观看欧美日本| 日本激情一区二区三区| 最近2019免费中文字幕视频三| 538视频在线| 91在线免费视频| 国产精品一区二区三区av麻| 久久艹国产精品| 精品一区二区三区视频在线观看 | 一区二区三区四区不卡视频| 日本中文字幕第一页| 日韩午夜在线影院| 91看片在线观看| 26uuu亚洲伊人春色| 日韩成人精品| 一本色道久久综合亚洲精品婷婷 | 人人人妻人人澡人人爽欧美一区| 一区二区三区欧美日| 中文字幕视频二区| 亚洲欧美国产另类| 91高清视频在线观看| 成人午夜在线视频一区| 成人精品亚洲| 苍井空浴缸大战猛男120分钟| 国产成人高清视频| 国产精品视频一区二区在线观看| 在线观看日韩毛片| 视频一区二区三区国产| 久久久久久国产免费| 国产精品美女久久久久| 亚洲欧美日韩国产成人综合一二三区 | 日韩精品视频三区| 美女精品视频| 91久久偷偷做嫩草影院| 91综合在线| 另类小说第一页| 国产日韩欧美不卡| 手机在线看片1024| 亚洲免费伊人电影在线观看av| 美女露胸视频在线观看| 国产精品免费区二区三区观看 | 国产性xxxx18免费观看视频| 成人高清免费观看| 国产性生活网站| 精品久久久久久久久久久久包黑料| 黄av在线免费观看| 91丝袜美腿美女视频网站| 水蜜桃久久夜色精品一区| 浓精h攵女乱爱av| 亚洲欧洲成人自拍| 91中文字幕在线播放| 久久精品中文字幕电影| 99er精品视频| 日本天堂免费a| 高清在线不卡av| 日韩成人av毛片| 国产视频精品在线| 欧美黑人粗大| 亚洲国产精品毛片| 老汉av免费一区二区三区 | 亚洲影院免费观看| 亚洲成人77777| 97国产精品人人爽人人做| 神马香蕉久久| 亚洲少妇第一页| 中文字幕在线一区免费| 精品乱子伦一区二区| 久久久人成影片一区二区三区| 农村少妇一区二区三区四区五区 | 国产一区欧美一区| 免费又黄又爽又色的视频| 亚洲精品www| 台湾成人免费视频| 国产手机视频在线观看| 成人午夜大片免费观看| 视频一区二区三区四区五区| 在线电影av不卡网址| 高清一区二区| 国产3p露脸普通话对白| 国产午夜精品一区二区| av中文字幕免费| 98精品国产高清在线xxxx天堂| 国产一区网站| 日日夜夜精品视频免费观看| 亚洲观看高清完整版在线观看| 黄色电影免费在线看| 91精品中文在线| 国产婷婷精品| 成年人免费视频播放| 精品国产第一区二区三区观看体验| 成人一区福利| 五月天男人天堂| 99re视频精品| 91国在线视频| 91精品国产高清久久久久久| 成人午夜av| 亚洲少妇中文字幕| 欧美视频在线播放| 国产黄色大片在线观看| 亚洲精品不卡| 99精品偷自拍| 国产男男gay体育生白袜| 欧美有码在线观看|