dn扩容步骤
参考
https://blog.csdn.net/zhaowenzhong/article/details/109186011
测试前
集群一个dn节点
initgtm -Z gtm -D /home/postgres/data/gtm
initdb -D /home/postgres/data/coord1 --nodename co1
initdb -D /home/postgres/data/datanode1 --nodename dn1
sed -ir "s/#*port.*/port = 15431/" /home/postgres/data/datanode1/postgresql.conf
gtm_ctl -Z gtm -D /home/postgres/data/gtm -l logfile_gtm start
pg_ctl start -D /home/postgres/data/datanode1 -Z datanode -l logfile_datanode1
pg_ctl start -D /home/postgres/data/coord1 -Z coordinator -l logfile_coord1
psql -d postgres -U postgres
CREATE NODE dn1 WITH (TYPE='datanode', PORT=15431);
select pgxc_pool_reload();
select * from pgxc_node;
create table test (id int, note text) distribute by ROUNDROBIN;
insert into test values(1, 'text');
insert into test values(2, 'text');
execute direct on(dn1) 'select * from test';
增加 Datanode节点
1) 连接到任意已有的 coordinator节点,锁住集群,为备份做准备,执行锁住命令 但不要退出,否则备份出来的数据会不一致
select pgxc_lock_for_backup();
做完这个操作后,整个集群不要执行DDL语句,这样数据库的元数据就不会发生变化,就能保证备份的一致性了。
2) 连接到任意 datanode节点,执行元数据的备份
pg_dumpall -p 15431 -s --file=datanode_meta.sql\
文件内容130行
CREATE TABLE test (
id integer,
note text
);
SET default_tablespace = '';
3)初始化新节点
initdb -D /home/postgres/data/datanode2 --nodename dn2
sed -ir "s/#*port.*/port = 15432/" /home/postgres/data/datanode2/postgresql.conf
4) 把新的datanode启动到 restoremode
pg_ctl start -Z restoremode -D /home/postgres/data/datanode2
psql -d postgres -f /home/postgres/datanode_meta.sql -p 15432
pg_ctl stop -D /home/postgres/data/datanode2 -p 15432 -m fast
5) 启动新的datanode节点到正常状态下
pg_ctl start -D /home/postgres/data/datanode2 -Z datanode -l logfile_datanode2
6) 在每台 coordinator执行
CREATE NODE dn2 WITH (TYPE='datanode', PORT=15432);
select pgxc_pool_reload();
7) 退出第二步
验证
1)增加新节点
ALTER TABLE test add node(dn2);
2)插入新数据
insert into test values(3, 'text');
insert into test values(4, 'text');
postgres=# execute direct on(dn1) 'select * from test';
id | note
----+------
1 | text
3 | text
(2 rows)
postgres=# execute direct on(dn2) 'select * from test';
id | note
----+------
2 | text
4 | text
(2 rows)