需要两台虚拟机和4个DB节点:
192.29.0.164:5432(master)
192.29.0.164:5433(work1)
192.29.0.164:5434(work2)
192.29.0.163:5435(新增work3)
164机器初始化节点mpp_master、mpp_work1和mpp_work2;163机器初始化节点mpp_work3。
修改每个节点下的uxsinodb.conf配置文件中的shared_preload_libraries参数。
在mpp_master节点配置~/.uxpass文件。
Test1:数据库:用户名---> uxdb:uxdb
Test2:数据库:用户名---> test:uxdb
Test3:数据库:用户名---> test:test
扩容缩容工具支持非uxdb数据库,如果创建的是其他数据库或用户,则对应的uxpass文件也需要修改,所有的节点在配置文件中database:username这部分需保持一致。
暂不支持master节点使用uxdb数据库,uxdb用户,而某个work节点使用test数据库,test用户这种情况。
创建uxmpp扩展。
启动所有节点的实例
uxsql -p 5432 -U uxdb -d test -c "CREATE EXTENSION uxmpp;"
在每个节点上修改对应的port执行,如果使用的默认数据库和用户uxdb,则-U & -d参数可省略。
扩容和缩容测试按照Test2的配置进行。
通过master节点登录客户端,添加节点work1 & work2。
select * from master_add_node('192.29.0.164’,'5433'); select * from master_add_node('192.29.0.164’,'5434');
master创建分区表并插入数据。
create table test_utility(id int, id2 int, t text); select create_distributed_table('test_utility', 'id2'); insert into test_utility select id, id, lpad(id::text, 5, id::text) from generate_series(1,10000) as t(id);
分别登录work1和work2查看分片表。
./uxsql -p 5433 -U uxdb -d test
./uxsql -p 5434 -U uxdb -d test
master控制台中添加新节点。
select * from master_add_node('192.29.0.163','5435');
master控制台创建uxmpp_utility插件。
create extension uxmpp_utility ;
master控制台进行扩容。
扩容对应的SQL函数master_extend_table_to_node,共有6个参数。
表?9.1.?master_extend_table_to_node参数表
参数 | 说明 |
---|---|
schema_name | 模式名 |
table_name | 表名 |
target_host | 目标节点host |
target_port | 目标节点port |
target_username | 目标节点对应的用户名 |
target_dbname | 目标节点对应的数据库名 |
select master_extend_table_to_node('public','test_utility','192.29.0.163',5435,'uxdb','test');
查看3个work节点上的分片表:
通过master节点登录客户端,添加节点work1 & work2 & work3。
select * from master_add_node('192.29.0.164’,'5433'); select * from master_add_node('192.29.0.164’,'5434'); select * from master_add_node('192.29.0.163’,'5435');
master创建分区表并插入数据。
create table test_utility(id int, id2 int, t text); select create_distributed_table('test_utility', 'id2'); insert into test_utility select id, id, lpad(id::text, 5, id::text) from generate_series(1,10000) as t(id);
master控制台创建uxmpp_utility插件。
create extension uxmpp_utility ;
master控制台进行缩容。
缩容使用的SQL函数master_shrink_node,总共4个参数。
表?9.2.?master_shrink_node参数表
参数 | 说明 |
---|---|
target_host | 目标节点host |
target_port | 目标节点port |
target_username | 目标节点对应的用户名 |
target_dbname | 目标节点对应的数据库名 |
select master_shrink_node('192.29.0.163',5435,'uxdb','test');
查看各work节点的结果: