日韩性视频-久久久蜜桃-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数据分片分布研究(二 副本与故障)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 免费人成自慰网站 | 中文字幕高清一区 | 免费精品一区二区 | 国产午夜av| 免费黄色美女网站 | 波多野结衣黄色片 | 国产xxxxxx | 欲求不满的岳中文字幕 | 色综合久久综合 | 亚洲男性天堂 | 日本高清免费看 | 国产福利av | 久久天天躁狠狠躁夜夜躁 | 国产精品综合一区二区 | 饥渴放荡受np公车奶牛 | 日本久久久久久久久久 | 国产视频污 | 女人久久久久 | www.黄在线观看 | 99久久婷婷国产综合精品电影 | 污污免费观看 | 亚卅色图| 78日本xxxxxxxxx59| 脱女学生小内内摸了高潮 | 国产精品免费视频一区二区三区 | 国产精选自拍 | 依人久久 | 91福利在线观看 | 欧美在线激情视频 | 欧美大胆a视频 | 中文字幕狠狠干 | 伊人影视网 | 狂野欧美性猛交xxxx巴西 | 国产美女在线精品 | 国产特黄级aaaaa片免 | 香蕉国产在线视频 | 97香蕉视频 | 国产97色在线 | 国产精品伦一区二区三级视频 | 天堂免费在线视频 | 色94色欧美sute亚洲线路二 | 日韩免费三级 | 在线观看免费www | 日韩在线高清视频 | 国产真实乱在线更新 | 狠狠五月天 | 中文字幕久久一区 | 性久久久 | 欧美日韩高清在线 | 91超碰在线免费观看 | 各处沟厕大尺度偷拍女厕嘘嘘 | 男男黄色片 | 精品人妻天天爽夜夜爽视频 | 亚洲情人网 | 日韩视频一区二区 | 日本成人在线免费视频 | 欧美性色网站 | 激情综合丁香五月 | 欧美性猛烈| 在线看黄的网站 | 成人一级黄色 | 国产欧美一区二区三区四区 | 精品人妻一区二区三区日产乱码卜 | 毛片基地免费观看 | 成人午夜免费福利 | 一个人看的视频www 色就是色网站 | 亚洲国产婷婷 | 亚洲免费av网 | 麻豆一区二区99久久久久 | 三年中文免费观看大全动漫 | 激情五月激情综合网 | 午夜视频在线观看视频 | 探花视频在线免费观看 | 久久国产视频播放 | 美女天天操 | 欧美xxxx胸大 | 日本电影一区 | 欧美福利一区 | 99涩涩 | www.四虎精品 | 成人免费毛片网站 | 天堂v在线观看 | 97人妻天天摸天天爽天天 | www.白白色 | 欧美在线一区二区三区四区 | 亚洲一区欧美 | 一区二区国产欧美 | 在线免费日韩 | 亚洲区成人 | 天天躁夜夜躁狠狠躁 | 伊人天堂av | 狠狠爱综合网 | 久久成人福利 | 一区二区三区少妇 | www.成人网.com | 国产精品精东影业 | 精品中文字幕在线播放 | 一级黄色淫片 | 日韩性av |