PostgreSQL主从搭建

准备工作

我部署的服务器是一主一从

1、准备两台服务器系统都是是Debain
主机地址系统环境数据库主从
192.168.137.129Deabin 11.4PostgreSQL 14.5主库
192.168.137.137Deabin 11.4PostgreSQL 14.5从库

主服务器

1、安装postgresql
2、修改postgres密码
3、创建流复制账户
4、配置postgres.conf与pg_hba.conf
5、重启PG数据库

一、安装postgresql

官网链接:https://www.postgresql.org/download/linux/debian/

1、 创建文件存储库配置:
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

2、 导入存储库签名密钥:
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

3、 更新包列表:
sudo apt-get update

4 安装最新版本的 PostgreSQL。
sudo apt-get -y install postgresql

二、修改postgres密码

root@localhost:~# su - postgres (进入postgres用户)
postgres@localhost: psql(进入数据库)|这里只是一种方式,还有其他方式进入数据库|
postgres=# /password(开始输入密码)

如图所示:

tulie

三、创建流复制账户

root@localhost:~# su - postgres 
postgres@localhost: psql
postgres=# create user replica login replication encryoted password 'replica';(创建replica用户,encryoted:加密的方式登陆)
CREATE ROLE
postgres=# \du (查看用户,)

如图所示:

tulie

如果显示与图片相等,就证明创建成功了

四、配置postgres.conf与pg_hba.conf

postgres.conf的配置

我的配置文件安装是默认的在:
/etc/postgresql/14/main

root@localhost: vim /etc/postgresql/14/main/postgres.conf

进入以下页面: 

tulie

# listen_address ='localhost' 
修改成 listen_address='*' 
# wal_level= replica
修改成
wal_level = replica
# max_wal_senders = 10 
修改成
max_wal_senders = 10 # 这里默认可以不用修改
# synchronous_commit = on 
修改成
synchronous_commit = on 

pg_hba.conf的配置

我的配置文件安装是默认的在:
/etc/postgresql/14/main

root@localhost: vim /etc/postgresql/14/main/pg_hba.conf

进入以下页面:

tulie

 修改配置如上图一样

五、重启PG数据库

systemctl restart postgresql

从服务器

1、安装postgresql
2、复制数据库目录
3、删除目录
4、基础备份
从服务器中的数据库配置不需要进行改动,要不然可能出现搭建的主从失败

一、安装

官网链接:https://www.postgresql.org/download/linux/debian/

1、 创建文件存储库配置:
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

2、 导入存储库签名密钥:
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

3、 更新包列表:
sudo apt-get update

4 安装最新版本的 PostgreSQL。
sudo apt-get -y install postgresql

二、复制数据库目录

root@localhost:~# systemctl stop postgresql (停库)
root@localhost:~# su - postgres 
postgres@localhost:~$ cd 14
postgres@root:~/14$ cp -R main /var/lib/postgresql/main.bak (为了防止出现失误可以先备份)

三、删除数据库目录

进入数据库目录的main文件夹使用rm -rf * 删除main文件夹里的所有文件
postgres@root:~/14/main$ rm -rf * (这里只是其中的一种用法)

四、基础备份

一定要进入到postgres用户里面如:
postgres@localhost:~$ pg_backbaseup -h 192.168.137.129 -D /var/lib/postgresql/14/main -U replica -P -v -R -X stream -C -S pgstandby (开始基础备份)
输入密码:replica
-h –指定作为主服务器的主机。
-D –指定数据目录。
-U –指定连接用户。
-P –启用进度报告。
-v –启用详细模式。
-R–启用恢复配置的创建:创建一个standby.signal文件,并将连接设置附加到数据目录下的postgresql.auto.conf。
-X–用于在备份中包括所需的预写日志文件(WAL文件)。流的值表示在创建备份时流式传输WAL。
-C –在开始备份之前,允许创建由-S选项命名的复制插槽。
-S –指定复制插槽名称。
进入数据库目录里查看有没有生成standby.signal。

启动从服务器

systemctl start postgres

搭建成功

查看复制槽

tule

查看主服务器节点信息

tu

查看从节点信息

tu

查看主服务器传输

tu

注意看有IP地址的哪一行,如果有就证明成功了
### PostgreSQL 主从复制集群搭建指南 #### 修改 `postgresql.conf` 配置文件 为了使主节点能够接受来自其他服务器的连接请求,需调整配置参数。设置监听地址为所有可用网络接口,并启用流复制功能: ```plaintext listen_addresses = '*' wal_level = replica max_wal_senders = 10 wal_keep_segments = 10 synchronous_standby_names = 'slave1' max_replication_slots = 10 ``` 这些更改确保了日志写入提前(WAL)级别适合于热备目的,允许最多十个并发复制客户端连接到主数据库实例[^4]。 #### 创建并启动 Docker 容器 通过Docker可以快速创建PostgreSQL服务容器,在命令行执行以下指令来运行一个新的PostgresSQL镜像实例作为主节点: ```bash docker run -d \ -p 54321:5432 \ --name postgres-master \ --restart=always \ -v /local/path/to/pgdata:/var/lib/postgresql/data/ \ postgres:latest ``` 此命令指定了端口映射、容器名称以及数据卷挂载路径等选项[^3]。 #### 初始化从节点并与主节点同步 对于每一个希望加入集群成为只读副本的新成员来说,首先要初始化其存储目录结构,接着利用pg_basebackup工具完成一次全量备份操作从而实现初始状态的一致性加载。具体步骤如下所示: 1. 启动新的Docker容器用于充当备用角色; 2. 使用pg_basebackup命令获取最新的在线快照; 3. 编辑recovery.conf文件指定上游源的位置信息以便后续自动追加增量更新记录; 注意:实际环境中建议采用更安全的方式传输敏感认证凭证而非明文形式硬编码在脚本里。 #### 测试与验证 当所有的准备工作完成后就可以尝试向主库提交一些简单的事务变更看看能否正常传播至各个子节点上去了。可以通过对比不同机器间相同表内特定字段值的变化情况来进行直观判断[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值