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)
posted @ 2021-09-22 00:19  stupidstan2019  阅读(72)  评论(0编辑  收藏  举报