PolarDBforPostgreSQL/docs/zh/deploying/db-pfs.md

187 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
author: 棠羽
date: 2022/05/09
minute: 15
---
# 基于 PFS 文件系统部署
<ArticleInfo :frontmatter=$frontmatter></ArticleInfo>
本文将指导您在分布式文件系统 PolarDB File SystemPFS上编译部署 PolarDB适用于已经在共享存储上格式化并挂载 PFS 文件系统的计算节点。
[[toc]]
## 读写节点部署
初始化读写节点的本地数据目录 `~/primary/`
```bash:no-line-numbers
$HOME/tmp_basedir_polardb_pg_1100_bld/bin/initdb -D $HOME/primary
```
在共享存储的 `/nvme1n1/shared_data/` 路径上创建共享数据目录,然后使用 `polar-initdb.sh` 脚本初始化共享数据目录:
```bash:no-line-numbers
# 使用 pfs 创建共享数据目录
sudo pfs -C disk mkdir /nvme1n1/shared_data
# 初始化 db 的本地和共享数据目录
sudo $HOME/tmp_basedir_polardb_pg_1100_bld/bin/polar-initdb.sh \
$HOME/primary/ /nvme1n1/shared_data/
```
编辑读写节点的配置。打开 `~/primary/postgresql.conf`,增加配置项:
```ini
port=5432
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'
logging_collector=on
log_line_prefix='%p\t%r\t%u\t%m\t'
log_directory='pg_log'
listen_addresses='*'
max_connections=1000
synchronous_standby_names='replica1'
```
编辑读写节点的客户端认证文件 `~/primary/pg_hba.conf`,增加以下配置项,允许只读节点进行物理复制:
```ini:no-line-numbers
host replication postgres 0.0.0.0/0 trust
```
最后,启动读写节点:
```bash:no-line-numbers
$HOME/tmp_basedir_polardb_pg_1100_bld/bin/pg_ctl start -D $HOME/primary
```
检查读写节点能否正常运行:
```bash:no-line-numbers
$HOME/tmp_basedir_polardb_pg_1100_bld/bin/psql \
-p 5432 \
-d postgres \
-c 'SELECT version();'
version
--------------------------------
PostgreSQL 11.9 (POLARDB 11.9)
(1 row)
```
在读写节点上,为对应的只读节点创建相应的复制槽,用于只读节点的物理复制:
```bash:no-line-numbers
$HOME/tmp_basedir_polardb_pg_1100_bld/bin/psql \
-p 5432 \
-d postgres \
-c "SELECT pg_create_physical_replication_slot('replica1');"
pg_create_physical_replication_slot
-------------------------------------
(replica1,)
(1 row)
```
## 只读节点部署
在只读节点本地磁盘的 `~/replica1` 路径上创建一个空目录,然后通过 `polar-replica-initdb.sh` 脚本使用共享存储上的数据目录来初始化只读节点的本地目录。初始化后的本地目录中没有默认配置文件,所以还需要使用 `initdb` 创建一个临时的本地目录模板,然后将所有的默认配置文件拷贝到只读节点的本地目录下:
```shell:no-line-numbers
mkdir -m 0700 $HOME/replica1
sudo ~/tmp_basedir_polardb_pg_1100_bld/bin/polar-replica-initdb.sh \
/nvme1n1/shared_data/ $HOME/replica1/
$HOME/tmp_basedir_polardb_pg_1100_bld/bin/initdb -D /tmp/replica1
cp /tmp/replica1/*.conf $HOME/replica1/
```
编辑只读节点的配置。打开 `~/replica1/postgresql.conf`,增加配置项:
```ini
port=5433
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
```
创建只读节点的复制配置文件 `~/replica1/recovery.conf`,增加读写节点的连接信息,以及复制槽名称:
```ini:no-line-numbers
polar_replica='on'
recovery_target_timeline='latest'
primary_slot_name='replica1'
primary_conninfo='host=[读写节点所在IP] port=5432 user=postgres dbname=postgres application_name=replica1'
```
最后,启动只读节点:
```bash:no-line-numbers
$HOME/tmp_basedir_polardb_pg_1100_bld/bin/pg_ctl start -D $HOME/replica1
```
检查只读节点能否正常运行:
```bash:no-line-numbers
$HOME/tmp_basedir_polardb_pg_1100_bld/bin/psql \
-p 5433 \
-d postgres \
-c 'SELECT version();'
version
--------------------------------
PostgreSQL 11.9 (POLARDB 11.9)
(1 row)
```
## 集群检查和测试
部署完成后,需要进行实例检查和测试,确保读写节点可正常写入数据、只读节点可以正常读取。
登录 **读写节点**,创建测试表并插入样例数据:
```bash:no-line-numbers
$HOME/tmp_basedir_polardb_pg_1100_bld/bin/psql -q \
-p 5432 \
-d postgres \
-c "CREATE TABLE t (t1 INT PRIMARY KEY, t2 INT); INSERT INTO t VALUES (1, 1),(2, 3),(3, 3);"
```
登录 **只读节点**,查询刚刚插入的样例数据:
```bash:no-line-numbers
$HOME/tmp_basedir_polardb_pg_1100_bld/bin/psql -q \
-p 5433 \
-d postgres \
-c "SELECT * FROM t;"
t1 | t2
----+----
1 | 1
2 | 3
3 | 3
(3 rows)
```
在读写节点上插入的数据对只读节点可见,这意味着基于共享存储的 PolarDB 计算节点集群搭建成功。
---
## 常见运维步骤
- [备份恢复](../operation/backup-and-restore.md)
- [共享存储在线扩容](../operation/grow-storage.md)
- [计算节点扩缩容](../operation/scale-out.md)
- [只读节点在线 Promote](../operation/ro-online-promote.md)