暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

什么?不需要共享存储的PolarDB共享存储集群来了?附快速安装指南,泡杯茶的时间快速体验轻量级分布式小数仓

中启乘数 2024-07-15
287

在之前的文章中,给大家介绍了PolarDB+ConshFS的高性能数仓组合,使用ConshFS替代了传统的PFS,不再需要额外的共享存储软件,就可以快速搭建一套高性能PolarDB共享存储集群,加减只读节点也很方便。可以点击下面的链接直达之前的文章:

PolarDB+ConshFS高性能数仓解决方案

ConshFS的架构如下:

这篇文章主要教大家如何快速搭建一个ConshFS版本的PolarDB共享集群,机器规划如下:

准备至少两台服务器或虚拟机用于polardb_conshfs共享存储集群的搭建,分别作为计算的主节点和存储数据的从节点。操作系统示例为CentOS7。

主机名IP主节点/从节点是否存储数据数据目录共享存储目录
polardb0110.197.165.65主节点/home/postgres/pgdata/nvme1n1/shared_data
polardb0210.197.165.59从节点/home/postgres/pgdataN/A

搭建步骤

1.创建用户组与用户

yum install -y sudo

创建用户

groupadd -g 701 -r postgres
useradd -u 701 -m -g postgres postgres -p ''
usermod -aG wheel postgres

给用户赋权(特别是sudo的权限)

chmod u+w etc/sudoers
echo 'postgres ALL=(ALL) NOPASSWD: ALL' >> etc/sudoers
chmod u-w etc/sudoers

# grant permission of accessing home directory to postgres
chown -R postgres:postgres home/postgres/
echo 'source etc/bashrc' >> home/postgres/.bashrc
# for su postgres
sed -i 's/4096/unlimited/g' etc/security/limits.d/20-nproc.conf

在/home/postgres/.bashrc设置环境变量:

export PATH=/usr/polardb/bin:$PATH
export LD_LIBRARY_PATH=/usr/polardb/lib:$LD_LIBRARY_PATH
export PGDATA=/home/postgres/pgdata
export PGHOST=/tmp

2.安装polardb_conshfs数据库软件

在root用户执行以下命令即可一键安装polardb_conshfs数据库软件

wget -qO tmp/polardb_conshfs.sh --no-check-certificate https://get.csudata.com/csuinst/polardb_conshfs.sh && bash tmp/polardb_conshfs.sh install

3.主节点部署

创建consh_fs共享存储目录

mkdir -p nvme1n1/shared_data/
chown -R postgres:postgres nvme1n1/shared_data

初始化数据库

su - postgres
initdb

初始化db的consh_fs共享数据目录

/usr/polardb/bin/polar-initdb.sh home/postgres/pgdata/ nvme1n1/shared_data/

在/home/postgres/pgdata/postgresql.conf设置数据库参数,注意polar_hostid参数值在集群里唯一,polar_disk_name和polar_datadir需要指定之后创建的consh_fs共享存储的目录。

port=5432
listen_addresses='*'
max_connections=1000

log_directory='pg_log'
logging_collector=on
log_line_prefix='%p\t%r\t%u\t%m\t'

polar_hostid=1
polar_enable_shared_storage_mode=on
polar_disk_name='nvme1n1'
polar_datadir='/nvme1n1/shared_data/'
polar_vfs.localfs_mode=off
shared_preload_libraries='$libdir/polar_vfs,$libdir/polar_worker'
polar_storage_cluster_name='disk'

synchronous_standby_names='replica1'
full_page_writes=off

在/home/postgres/pgdata/pg_hba.conf中增加如下配置,用于从节点能通过流复制访问主库

host    replication     postgres    10.197.165.59/32    trust

在/home/postgres/.bashrc设置postgres用户的环境变量,其中的CONSHFS_REMOTE_ADDR的地址需要填写主节点的地址。

export CONSHFS_REMOTE_ADDR=10.197.165.65
export CONSHFS_REMOTE_PORT=5060
export CONSHFS_LOCAL_PORT=5060
export CONSHFS_MY_HOSTID=1

4.从节点部署

在/home/postgres/.bashrc设置环境变量,注意CONSHFS_MYHOSTID是唯一的,不能与其他节点相同。

export CONSHFS_REMOTE_ADDR=10.197.165.65
export CONSHFS_REMOTE_PORT=5060
export CONSHFS_LOCAL_PORT=5060
export CONSHFS_MY_HOSTID=2

初始化数据目录

su - postgres
initdb

在/home/postgres/pgdata/postgresql.conf设置数据库参数,注意polar_hostid参数值在集群里唯一,polar_disk_name和polar_datadir需要指定consh_fs共享存储的目录。

port=5432
polar_hostid=2
polar_enable_shared_storage_mode=on
polar_disk_name='nvme1n1'
polar_datadir='/nvme1n1/shared_data/'
polar_vfs.localfs_mode=off
shared_preload_libraries='$libdir/polar_vfs,$libdir/polar_worker'
polar_storage_cluster_name='disk'
logging_collector=on
log_line_prefix='%p\t%r\t%u\t%m\t'
log_directory='pg_log'
listen_addresses='*'
max_connections=1000
full_page_writes=off

在/home/postgres/pgdata/创建recovery.conf配置文件

polar_replica='on'
recovery_target_timeline='latest'
primary_slot_name='replica1'
primary_conninfo='host=10.197.165.65 port=5432 user=postgres dbname=postgres application_name=replica1'

5.启动集群

在主节点和从节点分别启动consh_fs程序,注意该程序需要一直运行,建议在tmux窗口或后台运行。

su - postgres
cd /usr/polardb/bin
./consh_fs

依此启动主节点、从节点数据库实例

pg_ctl start

启动所有从节点数据库实例后,进入主节点的数据库内,创建物理复制槽。注意名称要和从库recovery.conf中配置的primary_slot_name相同。

select pg_create_physical_replication_slot('replica1');

创建成功后查询pg_stat_replication视图若存在该复制槽且状态为steaming即可创建成功。

到这里,就成功把使用conshfs的polardb共享存储集群搭建完成了,可以进行使用了。

点击关注乘数科技

‍欢迎大家关注我们的技术分享公众号,会经常分享最新的前沿数据库技术(点击下方公众号链接即可),谢谢大家

扫码添加乘数小助手微信号
邀您进入《PostgreSQL修炼之道:从小工到专家》
读者技术交流群

文章转载自中启乘数,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论