citus 之一

版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/ctypyb2002/article/details/83992233

os: ubuntu 16.04
postgresql: 9.6.8
citus: postgresql-9.6-citus 8.0.0

citus 是 postgresql 一种分库分表解决方案。是作为 extension使用的。

数据库的实例分为两类:

coordinator 节点: 存储数据库分表的元数据,不存储实际的数据。
worker 节点: 真实存储数据,是shard节点。

用户只连接 coordinator 节点,由 coordinator 解析sql,发给 worker节点执行,执行结果再返回给 coordinator 节点。

ip规划如下:

192.168.0.92 pgsql1 --coordinator 节点

192.168.0.90 pgsql2 --worker 节点
192.168.0.88 pgsql3 --worker 节点

生产环境一定要创建各个节点的salve节点,必须创建。

下载安装

所有节点都需要操作

# vi /etc/apt/sources.list.d/pgdg.list
deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main
# wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
# apt-get update
# apt list |grep -i 9.6 |grep -i citus
# apt install postgresql-9.6-citus
# dpkg -l postgresql-9.6-citus
# dpkg -L postgresql-9.6-citus

列出一些相关的文件及及文件

/usr/include/postgresql/9.6/server
/usr/include/postgresql/9.6/server/citus_version.h
/usr/include/postgresql/9.6/server/distributed

/usr/share/postgresql/9.6
/usr/share/postgresql/9.6/extension/citus*.sql
/usr/share/postgresql/9.6/extension/citus.control

/usr/lib/postgresql/9.6/lib/citus.so

创建环境变量

所有节点都需要操作

# su - postgres
$ cat ~/.profile
export PGHOME=/usr/lib/postgresql/9.6
export PGDATA=/data/pg9.6/main
export PATH=$PGHOME/bin:$PATH
export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH
$ source ~/.profile

调整参数

所有节点都需要操作

# vi /etc/postgresql/9.6/main/postgresql.conf
shared_preload_libraries = 'citus,pg_stat_statements'

# /etc/init.d/postgresql restart

配置 citus

所有节点都需要操作

# su - postgres
postgres@pgsql1:~$ psql
psql (9.6.8)
Type "help" for help.
postgres=# select * from pg_available_extensions where name like '%citus%';
 name  | default_version | installed_version |          comment           
-------+-----------------+-------------------+----------------------------
 citus | 8.0-8           |                   | Citus distributed database
(1 row)

由于 extension 是针对 database 级别的,所以需要先创建指定的业务数据库和 extension。
所有节点都需要操作

$ psql  
psql (9.6.8)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.

postgres=# create user cituser with superuser; 
postgres=# alter user cituser with password 'citusercituser';
postgres=# create database citusdb with owner = cituser;
postgres=# \q

$ psql -h 127.0.0.1 -U cituser citusdb -c "create extension citus;"

配置 pg_hba.conf
所有节点都需要操作

$ vi /etc/postgresql/9.6/main/pg_hba.conf
host    all             cituser         192.168.0.92/32            trust
host    all             cituser         192.168.0.90/32            trust
host    all             cituser         192.168.0.88/32            trust

$ psql -c "select pg_reload_conf();"

注意,pgsql2、pgsql3 是限定用户访问的,用户只能连接 pgsql1 。

plsql1节点上添加 work节点


$ psql -h 192.168.0.92 -U cituser citusdb
Password for user cituser: 
psql (9.6.8)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.

citusdb=# select * from master_add_node('192.168.0.90',5432);
citusdb=# select * from master_add_node('192.168.0.88',5432);

citusdb=# select * from master_get_active_worker_nodes();
  node_name   | node_port 
--------------+-----------
 192.168.0.88 |      5432
 192.168.0.90 |      5432
(2 rows)

安装结束,下一篇blog介绍下如何创建表。

参考:
https://www.citusdata.com/
https://docs.citusdata.com/en/v8.0/
https://docs.citusdata.com/en/stable/index.html

猜你喜欢

转载自blog.csdn.net/ctypyb2002/article/details/83992233