PostgreSQL+patroni+etcd+haproxy+keepalived高可用

news/2024/7/9 20:22:51 标签: postgresql, etcd, 数据库

PostgreSQL+patroni+etcd+haproxy+keepalived 高可用架构

部署环境

部署postgresql-15 一主二从

role主机组件
主库

node203

192.168.56.203

pg15.5

Patroni、Etcd,haproxy、keepalived

从库

node204

192.168.56.204

pg15.5

Patroni、Etcd,haproxy、keepalived

从库

node206

192.168.56.206

pg15.5

Patroni、Etcd,haproxy、keepalived

PostgreSQL version and Configuration:

ItemValueDetail
PostgreSQL Version15.5-
port5432-
$PGDATA/data/pgsqldata-
Archive modeon/data/archive
Replication SlotsEnable-

etcd version and Configuration:

ItemValueDetail
Pgpool-II Version4.4.4-
port9999Pgpool-II accepts connections,可以通过vip + 9999端口 连接到后端的pg数据库
9898PCP process accepts connections
9000watchdog accepts connections
9694UDP port for receiving Watchdog's heartbeat signal
Config file/etc/pgpool-II/pgpool.confPgpool-II config file
Pgpool-II start userpostgres (Pgpool-II 4.1 or later)Pgpool-II 4.0 or before, the default startup user is root
Running modestreaming replication mode-
WatchdogonLife check method: heartbeat

1.配置PostgreSQL-15的一主三从复制

参见:https://blog.csdn.net/longway111/article/details/134564919

1.1 安装PostgreSQL15

参见:https://blog.csdn.net/longway111/article/details/134437917

# Install the repository RPM:
yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# Install PostgreSQL:
yum install -y postgresql15-server

# psql -V
psql (PostgreSQL) 15.5

从库仅需安装软件即可无需配置,后面通过pg_basebackup同步主库数据库目录下的所有文件。

1.2 主库初始化及配置

参见:https://blog.csdn.net/longway111/article/details/134437917

修改数据目录

    #初始化前修改数据库路径
    vi /usr/lib/systemd/system/postgresql-15.service
    # Location of database directory
    # Environment=PGDATA=/var/lib/pgsql/15/data/
    Environment=PGDATA=/data/pgsqldata/
    #修改数据库路径的所属用户和用户组
    mkdir -p /data/pgsqldata
    chown -R postgres:postgres /data
    chmod -R 700 /data/pgsqldata
    #修改后执行reload
    systemctl daemon-reload

初始化PostgreSQL

    #初始化PostgreSQL
    # /usr/pgsql-15/bin/postgresql-15-setup initdb

创建归档目录

# su - postgres

$ mkdir -p /data/archive

chown -R postgres:postgres /data

chmod -R 700 /data/archive

配置归档相关参数

# su - postgres

$ cp /data/pgsqldata/postgresql.conf /data/pgsqldata/postgresql.conf.ori

#最简参数
cat > /data/pgsqldata/postgresql.conf << EOF
listen_addresses = '*'
port=5432
archive_mode = on
archive_command = 'cp "%p" "/data/archive/%f"'
max_wal_senders = 10
max_replication_slots = 10
wal_level = replica
hot_standby = on
wal_log_hints = on  
EOF

 Enable wal_log_hints to use pg_rewind. Since the Primary may become a Standby later, we set hot_standby = on.

 启动数据库

systemctl start postgresql-15

su - postgres

$ /usr/pgsql-15/bin/pg_ctl start -D /data/pgsqldata

创建主从同步repl用户

创建数据库用户repl

su - postgres

psql

create role repl with login replication;

设置密码:

postgres=# SET password_encryption = 'scram-sha-256';
postgres=# \password repl
Enter new password for user "repl":
Enter it again:
postgres=# \password postgres
Enter new password for user "postgres":
Enter it again:
postgres=#

允许远程连接到主库

允许从库访问当前主库

# su - postgres

vi /data/pgsqldata/pg_hba.conf #添加修改
#添加

# TYPE  DATABASE        USER            ADDRESS                 METHOD

host    all             all              samenet                 scram-sha-256

host    replication     all             samenet                 scram-sha-256

重新加载pg配置
$ /usr/pgsql-15/bin/pg_ctl reload -D /data/pgsqldata
server signaled

远程登录验证

[root@node206 ~]# psql -h node203 -U postgres
Password for user postgres:
psql (15.5)
Type "help" for help.

postgres=# select inet_server_addr();
 inet_server_addr
------------------
 192.168.56.203
(1 row)

postgres=# \! hostname

node206
postgres=#

创建一个数据库和表

create database db1;

\c db1;

create table t1 (id int,name varchar(20));

insert into t1 values (1,'yaya'),(2,'mini');


http://www.niftyadmin.cn/n/5215887.html

相关文章

中海油“海安杯”一站到底知识竞赛真的很有特色

中海油“海安杯”一站到底知识竞赛规格高&#xff0c;赛制复杂&#xff0c;天纵知识竞赛系统为此次知识竞赛提供了软件支持。本次竞赛设置选手区和擂台区两个区域。比赛共分为五个轮次&#xff0c;五个轮次选手区所有参赛选手均需答题。 第一轮&#xff1a;“脱颖而出” 所有参…

Could not resolve all files for configuration ‘:app:androidJdkImage‘.

在使用./gradlew build编译项目时候遇到了该问题&#xff0c;整体错误如下: * What went wrong: Configuration cache state could not be cached: field generatedModuleFile of com.android.build.gradle.tasks.JdkImageInput bean found in field compilerArgumentProvider…

【深入剖析K8s】容器技术基础(一):从进程开始说起

容器其实是一种特殊的进程而已。 可执行镜像 为了能够让这些代码正常运行’我们往往还要给它提供数据’比如我们这个加法程序所需要的输人文件这些数据加上代码本身的二进制文件放在磁盘上’就是我们平常所说的一个程序,也叫代码的可执行镜像&#xff08;executablejmage&…

人力资源管理后台 === 登陆+主页灵鉴权

目录 1. 分析登录流程 2. Vuex中用户模块的实现 3.Vue-cli代理解决跨域 4.axios封装 5.环境区分 6. 登录联调 7.主页权限验证-鉴权 1. 分析登录流程 传统思路都是登录校验通过之后&#xff0c;直接调用接口&#xff0c;获取token之后&#xff0c;跳转到主页。 vue-elemen…

使用Pytorch从零开始构建Normalizing Flow

归一化流 (Normalizing Flow) &#xff08;Rezende & Mohamed&#xff0c;2015&#xff09;学习可逆映射 f : X → Z f: X \rightarrow Z f:X→Z, 在这里X是我们的数据分布Z选定的潜在分布。 归一化流是生成模型家族的一部分&#xff0c;其中包括变分自动编码器 (VAE) (K…

Linux服务器SSH客户端断开后保持程序继续运行的方法

目录 1. nohup 命令&#xff1a; 2. tmux 或 screen&#xff1a; 3 final shell 断开后服务器如何继续执行令&#xff1f; 方法一&#xff1a;使用 nohup 命令 方法二&#xff1a;将命令放在后台执行 4 你可以使用 jobs 命令查看当前终端中正在后台运行的任务 &#xff…

深入浅出 Linux 中的 ARM IOMMU SMMU II

SMMU 驱动中的系统 I/O 设备探测 要使系统 I/O 设备的 DMA 内存访问能通过 IOMMU&#xff0c;需要将系统 I/O 设备和 IOMMU 设备绑定起来&#xff0c;也就是执行 SMMU 驱动中的系统 I/O 设备探测。总线发现系统 I/O 设备并和对应的驱动程序绑定&#xff0c;与 IOMMU 设备驱动程…

手机无法投屏到电脑(跨屏互联)无法使用

可能是因为windows防火墙的原因&#xff0c;将防火墙关闭即可