实验一:部署PG数据库 一机多实例

  • 修改主机名:
主:
[root@myx01 ~]$ hostnamectl set-hostname db
从:
[root@myx03 ~]$ hostnamectl set-hostname db1
[root@myx04 ~]$ hostnamectl set-hostname db2
  • 创建postres用户,免交互式设置密码 image.png

  • 下载PG 源码包 [root@db ~]#wget -c https://ftp.postgresql.org/pub/source/v12.3/postgresql-12.3.tar.gz --no-check-certificate image.png

  • 用SCP工具将软件包上传到从库中去 image.png

  • 解压 postgresql-12.3.tar.gz 包到 /home/postgres/ 目录下 image.png

  • 递归授权 image.png

  • 下载依赖包 image.png

  • 查看隐藏文件 image.png

  • 创建目录 image.png

[root@db /home/postgres]#mkdir -p /data/pg12 /data/pgdata5432 /data/pgdata5433 /data/pgdata5434 && chown postgres.postgres /data/pg12 /data/pgdata5432 /data/pgdata5433 /data/pgdata5434
  • 切换用户,查看当前路径 image.png

  • 切换到 postgresql-12.3/ > 初始化 image.png

[postgres@db ~]$cd postgresql-12.3/
[postgres@db ~/postgresql-12.3]$./configure --prefix=/data/pg12 --without-readline --without-zlib

image.png

[postgres@db ~/postgresql-12.3]$make -j 4 && make -j 4 install 
  • 查看初始化 image.png
  • 添加环境变量 image.png
PGHOME=/data/pg12
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$PGHOME/bin
  • 刷新配置文件,使配置生效 image.png
  • 查看当前目录使用情况 image.png
  • 初始化 /data/pgdata5432/ 目录 image.png
  • 查看当前目录使用情况,初始化是否完成 image.png
  • 继续初始化另外2个实例,5433、5434

image.png image.png

  • 设置服务端口
[postgres@db ~]$vim /data/pgdata5432/postgresql.conf
port = 5432
listen_addresses = '*'

[postgres@db ~]$vim /data/pgdata5433/postgresql.conf
port = 5433
listen_addresses = '*'

[postgres@db ~]$vim /data/pgdata5434/postgresql.conf
port = 5434
listen_addresses = '*'
  • PG 数据库常用命令
启动
pg_ctl -D /data/pgdata5432 -l logfile start

停止
pg_ctl -D /data/pgdata5432 -l logfile stop

重启
pg_ctl -D /data/pgdata5432 -l logfile restart

  • 查看状态 image.png

  • 启动另外两个数据库 image.png

  • 查看数据库服务启动成功 image.png

实验二:配置PG数据库流复制

  • 登录数据库 > 设置登录密码 > 创建流复制账户 ,赋予复制权限 , 并设置用户密码 屏幕截图 20230804 225553.png

  • 设置登录时需要密码

[postgres@db ~]$vim /data/pgdata5432/pg_hba.conf
#新增一行内容最后
host    replication     replica         10.0.0.0/24     md5

 #Shift + G #切换到文件末尾

image.png

  • 重启5432数据库 > 停止5433,5434数据库 > 查看端口

image.png

  • 备份 5433 数据库
压缩
[postgres@db ~]$tar cvf pgdata5433.tar.gz /data/pgdata5433
  • 查看 > 删除 /data/pgdata5433/ 目录下所有内容 > 查看 image.png
  • 备份 5434 数据库
压缩
[postgres@db ~]$tar cvf pgdata5434.tar.gz /data/pgdata5434
  • 查看 > 删除 /data/pgdata5433/ 目录下所有内容 > 查看 image.png

  • 将数据库 5432 同步到 5433 数据库中去

[postgres@db ~]$pg_basebackup -h 10.0.0.8 -p 5432 -D /data/pgdata5433 -U replica -P -v -R -X stream -C -S pgstandby1

image.png

  • 查看同步文件 image.png
  • 查看端口 image.png
  • 将数据库 5432 同步到 5434 数据库中去 image.png
[postgres@db ~]$pg_basebackup -h 10.0.0.8 -p 5432 -D /data/pgdata5434 -U replica -P -v -R -X stream -C -S pgstandby2
  • 查看同步文件 image.png

查看端口 image.png

[postgres@db ~]$cat /data/pgdata5434/postgresql.conf | grep ^port
  • 修改5433 、 5434启动端口
[postgres@db ~]$vim +64 /data/pgdata5433/postgresql.conf

[postgres@db ~]$vim +64 /data/pgdata5434/postgresql.conf
  • 启动数据库 image.png
[postgres@db ~]$pg_ctl -D /data/pgdata5433/ -l logfile start

[postgres@db ~]$pg_ctl -D /data/pgdata5434/ -l logfile start
  • 查看启动情况 image.png
  • 登录数据库 验证 image.png
postgres=# select usename , application_name , client_addr,sync_state from pg_stat_replication;
  • 将 异步复制 改为 同步复制
[postgres@db ~]$vim +198 /data/pgdata5432/postgresql.conf
synchronous_commit = on

[postgres@db ~]$vim +300 /data/pgdata5432/postgresql.conf
synchronous_standby_names = 'walreceiver'

  • 重启数据库 image.png
select usename , application_name , client_addr,sync_state from pg_stat_replication;