單節點部署多實例部署citus

分佈式 citusnode

以前文章中已經部署了postgresql10,安裝目錄/home/pg10/soft。sql

安裝 yum -y install libcurl-devel openssl-devel zlib-devel readline-devel libevent-devel curl

建立cn 和 worker  節點分佈式

    [pg10@data01 ~]$ mkdir -p /data01/pg10/{citus_cn,citus_worker01,citus_worker02}    ide

初始化 cn 節點路徑爲 ~/citus_cn,worker節點分別爲 ~/citus_worker01,~/citus_worker02post

    [pg10@data01 ~]$ initdb -D /data01/pg10/citus_cnflex

    [pg10@data01 ~]$ initdb -D /data01/pg10/citus_worker01ui

    [pg10@data01 ~]$ initdb -D /data01/pg10/citus_worker02url

修改cn 和dn 節點下的 postgresql.auto.conf每一個節點分別添加以下內容prototype

    echo "PORT=1921">> /data01/pg10/citus_cn/postgresql.auto.conf 

    echo "PORT=1922">> /data01/pg10/citus_worker01/postgresql.auto.conf 

    echo "PORT=1923">> /data01/pg10/citus_worker02/postgresql.auto.conf 

    echo "listen_addresses='*'">> /data01/pg10/citus_cn/postgresql.auto.conf 

    echo "listen_addresses='*'">> /data01/pg10/citus_worker01/postgresql.auto.conf 

    echo "listen_addresses='*'">> /data01/pg10/citus_worker02/postgresql.auto.conf 

啓動三個節點

    [pg10@data01 ~]$ pg_ctl  start -D /data01/pg10/citus_cn -l /tmp/cnlog

    [pg10@data01 ~]$ pg_ctl  start -D /data01/pg10/citus_worker01 -l /tmp/dn1log

    [pg10@data01 ~]$ pg_ctl  start -D /data01/pg10/citus_worker02 -l /tmp/dn2log

    

    

    

    

    --鏈接到每一個實例下建立 postgres 超級用戶

[pg10@data01 pg10]$ pg_ctl  start -D /data01/pg10/citus_cn -l /tmp/cnlog

waiting for server to start.... done

server started

[pg10@data01 pg10]$ pg_ctl  start -D /data01/pg10/citus_worker01 -l /tmp/dn1log

waiting for server to start.... done

server started

[pg10@data01 pg10]$ pg_ctl  start -D /data01/pg10/citus_worker02 -l /tmp/dn2log

waiting for server to start.... done

server started

[pg10@data01 pg10]$  psql -d postgres -p1921

psql (10.14)

Type "help" for help.

postgres=#  CREATE USER postgres WITH SUPERUSER PASSWORD '1qaz@WSX';

CREATE ROLE

postgres=# \q

[pg10@data01 pg10]$  psql -d postgres -p1922

psql (10.14)

Type "help" for help.

postgres=#  CREATE USER postgres WITH SUPERUSER PASSWORD '1qaz@WSX';

CREATE ROLE

postgres=# \q

[pg10@data01 pg10]$  psql -d postgres -p1923

psql (10.14)

Type "help" for help.

postgres=#  CREATE USER postgres WITH SUPERUSER PASSWORD '1qaz@WSX';

CREATE ROLE

postgres=# \q

最新版本不兼容pg10版本

[pg10@data01 citus-master]$ ./autogen.sh 

[pg10@data01 citus-master]$ ./configure 

checking for a sed that does not truncate output... /bin/sed

checking for gawk... gawk

checking for flex... /bin/flex

checking for pg_config... /home/pg10/soft/bin/pg_config

configure: error: Citus is not compatible with the detected PostgreSQL version 10.

換成9.0版本編譯

[pg10@data01 citus-9.0.0]$ ./autogen.sh 

[pg10@data01 citus-9.0.0]$ ./configure 

checking for a sed that does not truncate output... /bin/sed

checking for gawk... gawk

checking for flex... /bin/flex

checking for pg_config... /home/pg10/soft/bin/pg_config

configure: building against PostgreSQL 10

checking for gcc... gcc

checking whether the C compiler works... yes

checking for C compiler default output file name... a.out

checking for suffix of executables... 

checking whether we are cross compiling... no

checking for suffix of object files... o

checking whether we are using the GNU C compiler... yes

checking whether gcc accepts -g... yes

checking for gcc option to accept ISO C89... none needed

checking how to run the C preprocessor... gcc -E

checking for grep that handles long lines and -e... /bin/grep

checking for egrep... /bin/grep -E

checking for ANSI C header files... yes

checking for sys/types.h... yes

checking for sys/stat.h... yes

checking for stdlib.h... yes

checking for string.h... yes

checking for memory.h... yes

checking for strings.h... yes

checking for inttypes.h... yes

checking for stdint.h... yes

checking for unistd.h... yes

checking size of void *... 8

checking whether gcc supports -Wall... yes

checking whether gcc supports -Wextra... yes

checking whether gcc supports -Wno-unused-parameter... yes

checking whether gcc supports -Wno-sign-compare... yes

checking whether gcc supports -Wno-missing-field-initializers... yes

checking whether gcc supports -Wno-clobbered... yes

checking whether gcc supports -Wno-gnu-variable-sized-type-not-at-end... yes

checking whether gcc supports -Wdeclaration-after-statement... yes

checking whether gcc supports -Wendif-labels... yes

checking whether gcc supports -Wmissing-format-attribute... yes

checking whether gcc supports -Wmissing-declarations... yes

checking whether gcc supports -Wmissing-prototypes... yes

checking whether gcc supports -Wshadow... yes

checking whether gcc supports -Werror=vla... yes

checking for curl_global_init in -lcurl... yes

checking curl/curl.h usability... yes

checking curl/curl.h presence... yes

checking for curl/curl.h... yes

configure: creating ./config.status

config.status: creating Makefile.global

config.status: creating src/include/citus_config.h

config.status: creating src/include/citus_version.h

[pg10@data01 citus-9.0.0]$ 

   --鏈接到每一個實例下,

    --給每一個實例下的 pg_hba.conf 添加以下

    [pg10@data01 ~]$ egrep 0.0.0.0 /data01/pg10/citus_{cn,worker01,worker02}/pg_hba.conf

    /data01/pg10/data_cn/pg_hba.conf:host    all             all             0.0.0.0/0               trust

    /data01/pg10/data_worker01/pg_hba.conf:host    all             all             0.0.0.0/0               trust

    /data01/pg10/data_worker02/pg_hba.conf:host    all             all             0.0.0.0/0               trust

進行reload

[pg10@data01 ~]$ for pgdata in citus_cn citus_worker01 citus_worker02;do

>     pg_ctl reload -D /data01/pg10/$pgdata;

>     done

server signaled

server signaled

server signaled

在 postgresql.conf 中添加 預載庫,並從新啓動

for pgdata in citus_cn citus_worker01 citus_worker02;do

            echo "shared_preload_libraries = 'citus'" >> /data01/pg10/$pgdata/postgresql.conf;

            pg_ctl restart -D /data01/pg10/$pgdata -l /tmp/$pgdata 

        done 

        

        

 [pg10@data01 ~]$  for pgdata in citus_cn citus_worker01 citus_worker02;do

>             echo "shared_preload_libraries = 'citus'" >> /data01/pg10/$pgdata/postgresql.conf;

>             pg_ctl restart -D /data01/pg10/$pgdata -l /tmp/$pgdata 

>         done 

waiting for server to shut down.... done

server stopped

waiting for server to start.... done

server started

waiting for server to shut down.... done

server stopped

waiting for server to start.... done

server started

waiting for server to shut down.... done

server stopped

waiting for server to start.... done

server started       

for pt in 1921 1922 1923;do 

            psql -U postgres -d postgres -p ${pt} -c "CREATE EXTENSION IF NOT EXISTS citus"

        done

[pg10@data01 ~]$    for pt in 1921 1922 1923;do 

>             psql -U postgres -d postgres -p ${pt} -c "CREATE EXTENSION IF NOT EXISTS citus"

>         done

CREATE EXTENSION

CREATE EXTENSION

CREATE EXTENSION

[pg10@data01 ~]$ 

SELECT master_add_node('10.10.10.101',1922);

SELECT master_add_node('10.10.10.101',1923);

在每一個節點建立 citus擴展

[pg10@data01 ~]$    for pt in 1921 1922 1923;do 

>             psql -U postgres -d postgres -p ${pt} -c "CREATE EXTENSION IF NOT EXISTS citus"

>         done

CREATE EXTENSION

CREATE EXTENSION

CREATE EXTENSION

在cn 節點添加 worker 

[pg10@data01 ~]$  psql -U postgres -d postgres -p 1921

psql (10.14)

Type "help" for help.

postgres=# SELECT master_add_node('10.10.10.101',1922);

 master_add_node 

-----------------

               1

(1 row)

postgres=# SELECT master_add_node('10.10.10.101',1923);

 master_add_node 

-----------------

               2

(1 row)

查看添加結果

postgres=# SELECT * FROM master_get_active_worker_nodes();

  node_name   | node_port 

--------------+-----------

 10.10.10.101 |      1923

 10.10.10.101 |      1922

(2 rows)

查看默認分片數量

postgres=#  show citus.shard_count ;

 citus.shard_count 

-------------------

 32

(1 row)

建立分佈表

postgres=#     CREATE TABLE  shiptrack(gid serial primary key,

postgres(#             tracktime timestamp without time zone);

CREATE TABLE

指定分佈鍵

postgres=#  SELECT * FROM create_distributed_table('shiptrack','gid');

 create_distributed_table 

--------------------------

 

(1 row)

相關文章
相關標籤/搜索