PostgreSQL13 一主一从集群安装

一、安装PG13

1. 安装

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

2. 指定数据目录

默认postgreql 安装在/usr/pgsql-13,数据存储目录:/var/lib/pgsql/13/data,在实际生产中/var可能存在硬盘空间不足的问题,我们一般将数据存储目录放在挂载的硬盘如/data下

chown postgres:postgres /data/pgdata
chmod 750 /data/pgdata

3. 修改启动参数

$vi /usr/lib/systemd/system/postgresql-13.service
# 修改PGDATA参数,该参数会在 postgresql-13-setup initdb 中使用
Environment=PGDATA=/data/pgdata
# 重新加载服务配置文件
systemctl daemon-reload

4. 初始化数据库

# 切换用户
su - postgres
# 初始化数据库
sudo /usr/pgsql-13/bin/postgresql-13-setup initdb
# 设置开机自动启动
sudo systemctl enable postgresql-13

执行时报用户不在sudoers中,在使用Linux系统过程中,通常情况下,我们都会使用普通用户进行日常操作,而root用户只有在权限分配及系统设置时才会使用,而root用户的密码也不可能公开。普通用户执行到系统程序时,需要临时提升权限,sudo就是我们常用的命令,仅需要输入当前用户密码,便可以完成权限的临时提升。在使用sudo命令的过程中,我们经常会遇到当前用户不在sudoers文件中的提示信息,如果解决该问题呢?通过下面几个步骤,可以很简单的解决此问题。

# 查看/etc/sudoers文件权限,如果只读权限,修改为可写权限
[root@Compile user]# ls -l /etc/sudoers
-r--r-----. 1 root root 4030 925 00:57 /etc/sudoers
[root@Compile user]# chmod 777 /etc/sudoers
[root@Compile user]# ls -l /etc/sudoers
-rwxrwxrwx. 1 root root 4030 925 00:57 /etc/sudoers
[root@Compile user]#
# 执行vi命令,编辑/etc/sudoers文件,添加要提升权限的用户;在文件中找到root  ALL=(ALL) ALL,在该行下添加提升权限的用户信息,如:
root    ALL=(ALL)       ALL
user    ALL=(ALL)       ALL
# 说明:格式为(用户名    网络中的主机=(执行命令的目标用户)    执行的命令范围)
# 保存退出,并恢复/etc/sudoers的访问权限为440
[root@Compile user]# chmod 440 /etc/sudoers
[root@Compile user]# ls -l /etc/sudoers
-r--r-----. 1 root root 4030 925 00:57 /etc/sudoers
[root@Compile user]#
# 切换到普通用户,测试用户权限提升功能

5. 修改配置文件

  1. postgresql.conf
vi /data/pgdata/postgresql.conf
# listen_address="*"
  1. pg_hba.conf
vi /data/pgdata/pg_hba.conf
# 增加一行
host all all 0.0.0.0/0 password
  1. 防火墙打开5432端口
firewall-cmd --zone=public --add-port=5432/tcp --permanent
firewall-cmd --reload

6. 启动数据库

# 停止数据库
sudo systemctl stop postgresql-13
# 设置开机自启动
sudo systemctl enable postgresql-13
# 启动数据库
sudo systemctl start postgresql-13
# 检查数据库状态
sudo systemctl status postgresql-13

7. 修改数据库用户postgres密码

# 切换用户
su - postgres
# 连接PG
psql -U postgres
# 执行修改密码
ALTER USER postgres with encrypted password 'PASSWORD'

二、主库配置

1. postgresql.conf

listen_addresses= '*'
wal_level = replica
archive_mode = on
archive_command = 'cp %p /data/postgresql/archive/%f'
max_wal_senders= 10
wal_keep_size = 1000		# in megabytes; 0 disables
max_slot_wal_keep_size = 10	# in megabytes; -1 disables
wal_sender_timeout = 120s	# in milliseconds; 0 disables
hot_standby = on

2.将主从IP添加到hba配置文件,pg_hba.conf

host    replication     rpl         192.168.10.13/32 scram-sha-256

3. 新建用户用于主从复制

su - postgres
psql
create user repl  REPLICATION  LOGIN ENCRYPTED  PASSWORD 'XXXXXX';

4. 重启主库服务

sudo systemctl start postgresql-13

三、从库设置

1. 从库安装

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

# 修改数据存储位置
$vi /usr/lib/systemd/system/postgresql-13.service
# 修改PGDATA参数,该参数会在 postgresql-13-setup initdb 中使用
Environment=PGDATA=/data/pgdata
# 重新加载服务配置文件
systemctl daemon-reload

2. 使用pg_basebackup命令将主节点的data同步过来

sudo postgres
sudo /usr/pgsql-13/bin/pg_basebackup -h 10.170.155.18 -U rpl -p 5432 -F p -X s -v -P -R -D /data/pgdata

3. 修改从库数据文件权限

chown -R postgres:postgres /data/pgdata
chmod 777 -R /data/pgdata/
chmod 750 /data/pgdata

4. 启动从库

su - postgres
sudo systemctl start postgresql-13

四、在主库查看集群状态

sudo -u postgres
psql
select * from pg_stat_replication
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值