日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Citus数据分片分布研究(二 副本与故障)

發布時間:2025/5/22 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Citus数据分片分布研究(二 副本与故障) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

(本文中凡是未顯式指出的SQL,均在協調節點上執行)

工作節點

mydb1=# SELECT * FROM master_get_active_worker_nodes();node_name | node_port ---------------+-----------192.168.7.131 | 5432192.168.7.135 | 5432192.168.7.136 | 5432192.168.7.137 | 5432192.168.7.133 | 5432192.168.7.132 | 5432192.168.7.134 | 5432192.168.7.130 | 5432 (8 rows)

創建表test_table

create table test_table(id int, name varchar(16));

配置分片原則

SELECT master_create_distributed_table('test_table', 'id', 'hash');

根據分片數和副本數進行分片

SELECT master_create_worker_shards('test_table', 8, 2);

查看分片

mydb1=# SELECT * from pg_dist_shard order by shardid; logicalrelid | shardid | shardstorage | shardminvalue | shardmaxvalue --------------+---------+--------------+---------------+---------------test_table | 102032 | t | -2147483648 | -1610612737test_table | 102033 | t | -1610612736 | -1073741825test_table | 102034 | t | -1073741824 | -536870913test_table | 102035 | t | -536870912 | -1test_table | 102036 | t | 0 | 536870911test_table | 102037 | t | 536870912 | 1073741823test_table | 102038 | t | 1073741824 | 1610612735test_table | 102039 | t | 1610612736 | 2147483647 (8 rows)

可見一共有8個分片。

查看分片分布

mydb1=# SELECT * from pg_dist_shard_placement order by shardid, placementid;shardid | shardstate | shardlength | nodename | nodeport | placementid ---------+------------+-------------+---------------+----------+-------------102032 | 1 | 0 | 192.168.7.130 | 5432 | 33102032 | 1 | 0 | 192.168.7.131 | 5432 | 34102033 | 1 | 0 | 192.168.7.131 | 5432 | 35102033 | 1 | 0 | 192.168.7.132 | 5432 | 36102034 | 1 | 0 | 192.168.7.132 | 5432 | 37102034 | 1 | 0 | 192.168.7.133 | 5432 | 38102035 | 1 | 0 | 192.168.7.133 | 5432 | 39102035 | 1 | 0 | 192.168.7.134 | 5432 | 40102036 | 1 | 0 | 192.168.7.134 | 5432 | 41102036 | 1 | 0 | 192.168.7.135 | 5432 | 42102037 | 1 | 0 | 192.168.7.135 | 5432 | 43102037 | 1 | 0 | 192.168.7.136 | 5432 | 44102038 | 1 | 0 | 192.168.7.136 | 5432 | 45102038 | 1 | 0 | 192.168.7.137 | 5432 | 46102039 | 1 | 0 | 192.168.7.137 | 5432 | 47102039 | 1 | 0 | 192.168.7.130 | 5432 | 48 (16 rows)

可見每個分片有2個副本,分布在相鄰的不同工作節點上。

插入8條記錄

mydb1=# select * from test_table order by id;id | name ----+------1 | a2 | b3 | c4 | d5 | e6 | f7 | g8 | h (8 rows)

在工作節點上查詢分片內的數據

在節點192.168.7.130和節點192.168.7.131上查詢分片102032(及其副本),查詢結果相同。

mydb1=# select * from test_table_102032; id | name ----+------ 1 | a 8 | h (2 rows)

直接向工作節點寫數據(故意)造成數據不同步

在節點192.168.7.130上執行:

mydb1=# INSERT INTO test_table_102032 VALUES(111,'111'); INSERT 0 1 mydb1=# select * from test_table_102032;id | name -----+------1 | a8 | h111 | 111 (3 rows)

在節點192.168.7.131上執行:

mydb1=# INSERT INTO test_table_102032 VALUES(222,'222'); INSERT 0 1 mydb1=# select * from test_table_102032;id | name -----+------1 | a8 | h222 | 222 (3 rows)

在協調節點上查看結果

mydb1=# select * from test_table order by id;id | name -----+------1 | a2 | b3 | c4 | d5 | e6 | f7 | g8 | h111 | 111 (9 rows)

可以判斷:協調節點通常只從主工作節點取數據。

人為拔出“主工作節點”網線

mydb1=# select * from test_table order by id; WARNING: could not establish asynchronous connection after 5000 msid | name -----+------1 | a2 | b3 | c4 | d5 | e6 | f7 | g8 | h222 | 222 (9 rows)

可以判斷:當無法從主工作節點(192.168.7.130)獲取數據時,協調節點會從副本工作節點(192.168.7.131)取數據。

將主工作節點網絡恢復后,再次查詢

mydb1=# select * from test_table order by id;id | name -----+------1 | a2 | b3 | c4 | d5 | e6 | f7 | g8 | h111 | 111 (9 rows)

可以判斷:協調節點自動切回了主工作節點

在工作節點掉線的過程中,如果不發生涉及掉線節點的寫操作,分片信息和分片分布信息未發生變化。(只涉及其他節點的寫操作,沒有影響)

mydb1=# INSERT INTO test_table VALUES(99,'99'); INSERT 0 1 mydb1=# SELECT * from pg_dist_shard order by shardid;logicalrelid | shardid | shardstorage | shardminvalue | shardmaxvalue --------------+---------+--------------+---------------+---------------test_table | 102032 | t | -2147483648 | -1610612737test_table | 102033 | t | -1610612736 | -1073741825test_table | 102034 | t | -1073741824 | -536870913test_table | 102035 | t | -536870912 | -1test_table | 102036 | t | 0 | 536870911test_table | 102037 | t | 536870912 | 1073741823test_table | 102038 | t | 1073741824 | 1610612735test_table | 102039 | t | 1610612736 | 2147483647 (8 rows)mydb1=# SELECT * from pg_dist_shard_placement order by shardid, placementid;shardid | shardstate | shardlength | nodename | nodeport | placementid ---------+------------+-------------+---------------+----------+-------------102032 | 1 | 0 | 192.168.7.130 | 5432 | 33102032 | 1 | 0 | 192.168.7.131 | 5432 | 34102033 | 1 | 0 | 192.168.7.131 | 5432 | 35102033 | 1 | 0 | 192.168.7.132 | 5432 | 36102034 | 1 | 0 | 192.168.7.132 | 5432 | 37102034 | 1 | 0 | 192.168.7.133 | 5432 | 38102035 | 1 | 0 | 192.168.7.133 | 5432 | 39102035 | 1 | 0 | 192.168.7.134 | 5432 | 40102036 | 1 | 0 | 192.168.7.134 | 5432 | 41102036 | 1 | 0 | 192.168.7.135 | 5432 | 42102037 | 1 | 0 | 192.168.7.135 | 5432 | 43102037 | 1 | 0 | 192.168.7.136 | 5432 | 44102038 | 1 | 0 | 192.168.7.136 | 5432 | 45102038 | 1 | 0 | 192.168.7.137 | 5432 | 46102039 | 1 | 0 | 192.168.7.137 | 5432 | 47102039 | 1 | 0 | 192.168.7.130 | 5432 | 48 (16 rows)

在工作節點掉線的過程中,如果發生了涉及掉線節點的寫操作,分片分布信息中“分片狀態”發生了變化。(從1變成3)

mydb1=# INSERT INTO test_table VALUES(1,'1111111'); WARNING: connection error: 192.168.7.130:5432 DETAIL: could not send data to server: No route to host could not send SSL negotiation packet: No route to host INSERT 0 1 mydb1=# SELECT * from pg_dist_shard order by shardid;logicalrelid | shardid | shardstorage | shardminvalue | shardmaxvalue --------------+---------+--------------+---------------+---------------test_table | 102032 | t | -2147483648 | -1610612737test_table | 102033 | t | -1610612736 | -1073741825test_table | 102034 | t | -1073741824 | -536870913test_table | 102035 | t | -536870912 | -1test_table | 102036 | t | 0 | 536870911test_table | 102037 | t | 536870912 | 1073741823test_table | 102038 | t | 1073741824 | 1610612735test_table | 102039 | t | 1610612736 | 2147483647 (8 rows)mydb1=# SELECT * from pg_dist_shard_placement order by shardid, placementid;shardid | shardstate | shardlength | nodename | nodeport | placementid ---------+------------+-------------+---------------+----------+-------------102032 | 3 | 0 | 192.168.7.130 | 5432 | 33102032 | 1 | 0 | 192.168.7.131 | 5432 | 34102033 | 1 | 0 | 192.168.7.131 | 5432 | 35102033 | 1 | 0 | 192.168.7.132 | 5432 | 36102034 | 1 | 0 | 192.168.7.132 | 5432 | 37102034 | 1 | 0 | 192.168.7.133 | 5432 | 38102035 | 1 | 0 | 192.168.7.133 | 5432 | 39102035 | 1 | 0 | 192.168.7.134 | 5432 | 40102036 | 1 | 0 | 192.168.7.134 | 5432 | 41102036 | 1 | 0 | 192.168.7.135 | 5432 | 42102037 | 1 | 0 | 192.168.7.135 | 5432 | 43102037 | 1 | 0 | 192.168.7.136 | 5432 | 44102038 | 1 | 0 | 192.168.7.136 | 5432 | 45102038 | 1 | 0 | 192.168.7.137 | 5432 | 46102039 | 1 | 0 | 192.168.7.137 | 5432 | 47102039 | 1 | 0 | 192.168.7.130 | 5432 | 48 (16 rows)

此時再恢復原“主工作節點”,發現標記并未恢復;且協調節點仍會從原先的“副本工作節點”取得數據。

在節點192.168.7.130上執行:

mydb1=# select * from test_table_102032 order by id; id | name -----+------ 1 | a 8 | h 111 | 111 (3 rows)

缺少記錄 (1, ‘1111111’)

在節點192.168.7.131上執行:

mydb1=# select * from test_table_102032 order by id; id | name -----+--------- 1 | a 1 | 1111111 8 | h 222 | 222 (4 rows)

在協調節點上執行:

mydb1=# select * from test_table order by id;id | name -----+---------1 | a1 | 11111112 | b3 | c4 | d5 | e6 | f7 | g8 | h99 | 99222 | 222 <-----可見是從131上取的數據 (11 rows)

查看分片分布狀態:

mydb1=# SELECT * from pg_dist_shard_placement order by shardid, placementid;shardid | shardstate | shardlength | nodename | nodeport | placementid ---------+------------+-------------+---------------+----------+-------------102032 | 3 | 0 | 192.168.7.130 | 5432 | 33102032 | 1 | 0 | 192.168.7.131 | 5432 | 34102033 | 1 | 0 | 192.168.7.131 | 5432 | 35102033 | 1 | 0 | 192.168.7.132 | 5432 | 36102034 | 1 | 0 | 192.168.7.132 | 5432 | 37102034 | 1 | 0 | 192.168.7.133 | 5432 | 38102035 | 1 | 0 | 192.168.7.133 | 5432 | 39102035 | 1 | 0 | 192.168.7.134 | 5432 | 40102036 | 1 | 0 | 192.168.7.134 | 5432 | 41102036 | 1 | 0 | 192.168.7.135 | 5432 | 42102037 | 1 | 0 | 192.168.7.135 | 5432 | 43102037 | 1 | 0 | 192.168.7.136 | 5432 | 44102038 | 1 | 0 | 192.168.7.136 | 5432 | 45102038 | 1 | 0 | 192.168.7.137 | 5432 | 46102039 | 1 | 0 | 192.168.7.137 | 5432 | 47102039 | 1 | 0 | 192.168.7.130 | 5432 | 48 (16 rows)

總結

以上是生活随笔為你收集整理的Citus数据分片分布研究(二 副本与故障)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲成人精品在线观看 | 欧美狂猛xxxxx乱大交3 | 四虎影裤 | 免费看的黄色小视频 | 欧美另类极品videosbest使用方法 | 亚洲五月激情 | 在线无码va中文字幕无码 | 国产第99页 | 国产二区电影 | 欧美寡妇性猛交 | 天天综合影院 | 国产99对白在线播放 | 国产高清视频 | 亚欧精品在线 | 自拍偷拍亚洲图片 | 久久综合免费视频 | 可以在线观看的av网站 | 一级在线毛片 | 波多野结衣三级视频 | 日韩福利影院 | 91直接看 | 国产情侣激情 | 国产一级片播放 | 成人综合网址 | 黄色国产在线播放 | 国产偷人妻精品一区二区在线 | 欧美久草 | 亚洲av无码乱码在线观看富二代 | 色中文在线 | jizzz18 | 久久久香蕉网 | 女人下面流白浆的视频 | 四虎av网址 | yes4444视频在线观看 | 国产亚洲精品久久久久久777 | 亚洲AV无码精品一区二区三区 | 午夜福利一区二区三区 | 真实乱视频国产免费观看 | av一级在线 | 真人bbbbbbbbb毛片 | 精品人妻一区二 | 日韩免费网址 | 国产精品91av | 久久这里只有精品6 | 日韩高清片 | 天天干天天干天天干天天 | 色播五月激情五月 | 日韩大片av | www.久色| 欧美黄色录像带 | 日韩国产欧美一区 | 精品国自产拍在线观看 | 亚洲少妇毛片 | 潘金莲一级淫片aaaaaa播放 | 精品在线一区二区 | 精品二三区 | 国产成人一区在线观看 | 欧美第九页 | 老司机午夜影院 | 日韩中文字幕一区二区三区四区 | 无人在线观看高清视频 单曲 | 日韩一区二区在线播放 | 51妺嘿嘿午夜福利 | 亚洲av无码乱码在线观看性色 | 欧美动态色图 | 精品久久久久中文慕人妻 | 在线看v片| 成人网在线看 | 精品人妻一区二区三区浪潮在线 | 午夜天堂在线观看 | 午夜寂寞自拍 | 久草视频观看 | 日韩爆操| 亚洲国产中文字幕在线 | 91视频精选 | 成人动漫h在线观看 | 免费午夜人成电影 | 国产精品精品久久久久久 | 一级欧美视频 | 亚洲最大的网站 | 日韩欧美国产一区二区 | а√天堂8资源在线官网 | 日本中文字幕精品 | 色就是色亚洲色图 | 古风h啪肉h文 | 好男人在线视频 | 黄色av免费在线观看 | 在线观看黄色免费视频 | 五月天丁香视频 | 少妇一区二区三区四区 | 人妻丰满熟妇av无码区不卡 | 综合天堂av久久久久久久 | 自拍偷拍亚洲综合 | 制服丝袜av在线 | 女同性恋一区二区三区 | 男女男精品视频 | 成年人视频在线观看免费 | 日韩av免费网址 | 男人天堂国产 |