PG集群(PostgreSql环境)搭建
2024-09-03 01:14:47
centos PG集群搭建
一、安装PG
1、安装之前首先查看软件是否已经安装
rpm -qa | grep postgresql
#若存在,需要卸载使用 yum remove postgresql
2、安装postgresql和postgresql-server
能够访问外网
# 获取源
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# 安装
sudo yum install -y postgresql12-server
不能访问外网
# 如果不能访问外网,yum是用不了的,卸载原有的pg也只能通过rpm -e 包名 挨个进行删除
# 离线安装
rpm -Uvh --force --nodeps *
3、环境变量
创建目录,给与权限
cd /data/
mkdir pgdata
chown -R postgres:postgres ./pgdata
修改环境变量
vi /usr/lib/systemd/system/postgresql-12.service
# 修改 Environment
Environment=PGDATA=/data/pgdata/ #PGDATA一般是数据盘
# 重载
systemctl daemon-reload
4、启动数据库
# 初始化数据库
/usr/pgsql-12/bin/postgresql-12-setup initdb
# 启动
systemctl start postgresql-12
5、创建用户
su - postgres
psql
# 用于pgpool
create role pgpool with login password 'postgres';
# 用于主从
create role repl login replication encrypted password 'postgres';
# 修改postgres密码
alter user postgres with password 'postgres';
二、配置主从
主节点配置
1、pg_hba.conf
# 修改data(/data/pgdata)下面的配置
vi /data/pgdata/pg_hba.conf
# 追加
host all all 0.0.0.0/0 md5
host replication repl 本机ip/32 trust
host replication repl 节点1 ip/32 trust #从节点1
...
host replication repl 节点n ip/32 trust #从节点n
host all all 本机ip 最后一位替换为0/24 md5
2、postgresql.conf
# 修改data(/data/pgdata)下面的配置
vi /data/pgdata/postgresql.conf
# 修改内容
listen_addresses = '*' #开启后子节点才能访问
archive_mode = on
max_connections = 21000
archive_command = 'cp "%p" "/var/lib/pgsql/archivedir/%f"'
max_wal_senders = 10
max_replication_slots = 10
wal_level = replica
hot_standby = on
wal_log_hints = on
从节点配置
1、拉取主库配置
#删除从库data目录下文件
rm ‐rf data/*
# 拉取主库配置,主库记得开5432端口
pg_basebackup -h 主节点ip -U repl -D /data/pgdata -X stream -P
# 开通端口
iptables -I INPUT -p tcp --dport 5432 -j ACCEPT
2、修改配置文件
# postgresql.conf修改内容
primary_conninfo = 'host=主节点ip port=5432 user=repl(主节点对应账号) password=密码'
recovery_target_timeline = latest
hot_standby = on
max_standby_streaming_delay = 30s
wal_receiver_status_interval = 10s
hot_standby_feedback = on
# 12以上版本配置上有些变化
# 1.将recovery.conf文件里的配置合并到主配置文件postgresql.conf中
# 2.设置启用备库参数standby_mode,12之后废弃了这个参数,切换到备库建立空文件standby.signal进行触发。
# standby.signal修改内容
standby_mode = on
3、重启服务
#重启
systemctl restart postgresql-12
#也可以stop再start
systemctl stop postgresql-12
systemctl start postgresql-12
三、验证
# 进入主库
su - postgres
# 进入sql
psql
# 查询同步状态,完成的话显示n行
select client_addr,usename,backend_start,application_name,sync_state,sync_priority FROM pg_stat_replication;
# 添加数据库
CREATE DATABASE test;
# 进入从库查看,发现新的库test
# 执行新建操作,警告only-read
四、其他
# 备份数据库
pg_dump dbname > outfile
# 导入数据库
psql dbname < infile
# 可用于测试主从是否完成
# 添加数据库
CREATE DATABASE test;
# 删除数据库
DROP DATABASE test;
# 查看已安装的软件包
rpm -qa | grep postgresql
# 离线删除软件包
rpm -e 包名
最新文章
- Java中的关键字 transient
- SimpleXML操控XML
- 安卓开发之activity详解(sumzom)
- MySQL使用用户变量更新分组排序
- 设计模式之美:Decorator(装饰)
- DataGridView列排序混乱的处理方法
- CSS 样式显示为小手
- SolrEntityProcessor
- jQuery异步分页插件
- CoInitialize()、CoInitializeEx()和AfxOleInit()区别联系
- SqlServer循环读取配置
- Relocation - POJ 2923(状态压缩+01背包)
- testng跑失败用例重试
- 字符函数库 - cctype 和 climits 中的符号常量
- 转 玩转Bash变量
- 用一张表里的记录更新自己(或另一张表)里的记录(exists使用)
- shc &; unshc 安装
- json&;pickle&;shelve模块
- navicat连接虚拟机中mysql";Access denied for user&#39;root&#39;@&#39;IP地址&#39;";问题
- linux系统Qt实现简单的任务管理器
热门文章
- 【Spring 持久层】Spring 与 Mybatis 整合
- Mybatis(四)——
- 可选链运算符、空值合并运算符 --应用到vue项目
- 【Python】python 2.7.16 x64 百度网盘
- python循环以及控制语句
- 关于Container容器以及IoC注入机制的认识
- node 在centos 6.5 上 安装过程中出现/usr/lib64/libstdc++.so.6: version &#39;GLIBCXX_3.4.19&#39; not found问题的解决
- SonarScanner扫描Maven项目使用说明
- HTML 网页开发、CSS 基础语法——四. HTML基本语法
- P7581-「RdOI R2」路径权值【长链剖分,dp】