点击上方蓝字关注我们

1
测试环境

2
环境准备
psql -h 192.168.40.152 -p 47001 postgrescreate user kunlun_test with password 'kunlun';create database testdb owner kunlun_test;grant all privileges on database testdb to kunlun_test;
psql -h 192.168.40.152 -p 47001 -U kunlun_test testdbCREATE TABLE sales_order(order_number INT NOT NULL,customer_number INT NOT NULL,product_code INT NOT NULL,order_date DATETIME NOT NULL,entry_date DATETIME NOT NULL,order_amount DECIMAL(18,2) NOT NULL,PRIMARY KEY (order_number,order_date)) partition by range(order_date);CREATE TABLE sales_order_202301 PARTITION OF sales_orderFOR VALUES FROM ('2023-01-01') TO ('2023-02-01') with (Shard=5);CREATE TABLE sales_order_202302 PARTITION OF sales_orderFOR VALUES FROM ('2023-02-01') TO ('2023-03-01') with (Shard=6);CREATE TABLE sales_order_202303 PARTITION OF sales_orderFOR VALUES FROM ('2023-03-01') TO ('2023-04-01') with (Shard=7);
create or replace procedure generate_order_data()AS $$DECLAREv_customer_number integer;v_product_code integer;v_order_date date;v_amount integer;start_date date := to_date('2023-01-01','yyyy-mm-dd');i integer :=1;BEGINwhile i<=10000 loopv_customer_number := FLOOR(1+RANDOM()*6);v_product_code := FLOOR(1+RANDOM()*1000);v_order_date := start_date + CAST(FLOOR(RANDOM()*90) AS INT);v_amount := FLOOR(1000+RANDOM()*9000);INSERT INTO sales_order VALUES (i,v_customer_number,v_product_code,v_order_date,v_order_date,v_amount);commit;i := i+1;end loop;END; $$LANGUAGE plpgsql;call generate_order_data();analyze sales_order;testdb=> select count(*) from sales_order;count-------10000(1 row)testdb=> select count(*) from sales_order where order_date between '2023-01-01' and '2023-01-31';count-------3417(1 row)testdb=> select count(*) from sales_order where order_date between '2023-02-01' and '2023-02-28';count-------3086(1 row)testdb=> select count(*) from sales_order where order_date between '2023-03-01' and '2023-03-31';count-------3497(1 row)
3
模拟整个Shard故障
cd /kunlun/storage_datadirmv 57003 57003_bak
4
故障隔离测试
testdb=> select count(*) from sales_order where order_date between '2023-02-01' and '2023-02-28';ERROR: Kunlun-db: Failed to connect to mysql storage node at (192.168.40.151, 57003): 2002, Can't connect to server on '192.168.40.151' (111)
testdb=> select count(*) from sales_order where order_date between '2023-01-01' and '2023-01-31';count-------3417(1 row)testdb=> select count(*) from sales_order where order_date between '2023-03-01' and '2023-03-31';count-------3497(1 row)
testdb=> begin;BEGINtestdb=> select count(*) from sales_order where order_date between '2023-01-01' and '2023-01-31';count-------3417(1 row)testdb=> select count(*) from sales_order where order_date between '2023-03-01' and '2023-03-31';count-------3497(1 row)testdb=> insert into sales_order values(10001,1,1000,'2023-01-31','2023-01-31',1800);INSERT 0 1testdb=> insert into sales_order values(10002,1,1000,'2023-03-31','2023-03-31',2000);INSERT 0 1testdb=> select count(*) from sales_order where order_date between '2023-01-01' and '2023-01-31';count-------3418(1 row)testdb=> select count(*) from sales_order where order_date between '2023-03-01' and '2023-03-31';count-------3498(1 row)testdb=> commit;
testdb=> begin;BEGINtestdb=> select count(*) from sales_order where order_date between '2023-03-01' and '2023-03-31';count-------3498(1 row)testdb=> update sales_order set order_amount=1000 where order_date='2023-03-31';UPDATE 113testdb=> insert into sales_order values(10003,1,1000,'2023-02-14','2023-02-14',1800);ERROR: Kunlun-db: Failed to connect to mysql storage node at (192.168.40.151, 57003): 2002, Can't connect to server on '192.168.40.151' (111)testdb=> insert into sales_order values(10005,2,1000,'2023-03-30','2023-03-30',2000);ERROR: current transaction is aborted, commands ignored until end of transaction blocktestdb=> rollback;ROLLBACK

文章转载自KunlunBase 昆仑数据库,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




