cui914

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

postgresql数据库安装部署

1.基本信息

postgresql版本: 13.7

下载地址:https://www.postgresql.org/ftp/source/v16.1/

安装方式:二进制tar包编译安装

主机名及主机ip

角色主机名主机ip
主节点 postgres01 10.0.0.51
备节点 postgres02 10.0.0.52

 

2.安装部署 --- 单节点安装

1.下载依赖##主从节点都执行

yum install -y perl-ExtUtils-Embed readline-devel zlib-devel pam-devel libxml2-devel libxslt-devel openldap-devel python-devel gcc-c++ openssl-devel cmake

yum install -y e2fsprogs-devel uuid-devel libuuid-devel

2.准备相关节点目录 --- 主从节点都执行

mkdir -pv /apps/softwares/
mkdir -pv /apps/pgsql/postgresql
#解压软件包
cd /apps/softwares/
tar xf postgresql-13.7.tar.gz  -C /apps/pgsql/

3.编译安装postgresql

#进入解压后的目录
cd /apps/pgsql/postgresql-13.7
./configure --prefix=/apps/pgsql/postgresql --without-readline  --with-uuid=ossp
make
make install
至此,已完成postgresql的安装。进入/apps/pgsql/postgresql/目录可以看到安装后的postgresql的文件。


##13.7版本的编译完成缺少dblink插件,需要再次进行编译
cd /apps/pgsql/postgresql-13.7/contrib/dblink
make && make install


##密码认证插件
cd /apps/pgsql/postgresql-13.7/contrib/passwordcheck/
make && make install

编辑配置文件postgresql.conf
shared_preload_libraries = 'passwordcheck'

4.准备程序用户

groupadd postgres
useradd -g postgres postgres
id postgres
#修改用户密码
passwd postgres
post@123

5.创建postgresql数据库的数据主目录并修改文件所有者

数据库主目录是随着实际情况而不同,这里我们的主要目录是在/pgsql/postgresql/data目录下;
cd /apps/pgsql/postgresql
mkdir data
chown postgres:postgres data
ls -la

6.配置环境变量

进入/home/postgres可以看到.bash_profile文件。
cd /home/postgres
ls -la

vim .bash_profile

添加以下内容
export PGHOME=/apps/pgsql/postgresql
export PGDATA=/apps/pgsql/postgresql/data
PATH=$PATH:$HOME/bin:$PGHOME/bin

保存,生效。
source .bash_profile

7.切换用户到postgres并使用initdb初始化数据库

su - postgres
初始化数据库:
initdb
可以看到/apps/pgsql/postgresql/data/已经有文件了
cd /apps/pgsql/postgresql/data
ls

8.配置服务--主节点执行

  修改/apps/pgsql/postgresql/data目录下的两个文件。
  postgresql.conf 配置PostgreSQL数据库服务器的相应的参数。
  pg_hba.conf 配置对数据库的访问权限。

  参数配置:
  https://pgtune.leopard.in.ua/

  postgresql.conf 配置:

   其中,参数"listen-addresses"表示监听的IP地址,默认是在localhost处监听,也就是127.0.0.1的ip地址上监听,只接受来自本机localhost的连接请求,这会让远程的主机无法登陆这台数据库,如果想从其他的机器上登陆这台数据库,需要把监听地址改为实际网络的地址,一种简单的方法是,将行开头的#去掉,把这个地址改为*,表示在本地的所有地址上监听。

  pg_hba.conf 配置:
       找到最下面这一行,这样局域网的人才能访问,红色为新添加内容。

 

9.启动连接测试

##启动
pg_ctl start -D /apps/pgsql/postgresql/data

##连接
psql

3.复制流构建主从

3.1 主库上创建复制用户

在主库上创建复制用的账号 ,需要有属性 replication 才能进行复制

create role replica login replication encrypted password '8sL588Ix9G24Bvn7PS';

3.2 主库上修改pg_hba.conf文件

允许从库IP可以通过replica用户连接主库

# IPv6 local connections:
host   all             all             ::1/128                 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     trust
host   replication     all             127.0.0.1/32           trust
host   replication     all             ::1/128                 trust
host   all all 10.0.0.52/32 trust
host   replication     replica 10.0.0.52/32           md5

或者
host   replication     replica 10.0.0.0/24           md5

修改完成后重新加载使配置生效

pg_ctl -D /apps/pgsql/postgresql/data -l /apps/pgsql/postgresql/data/server.log reload

3.3 主库上修改配置文件postgres.conf

vim postgres.conf
listen_addresses = '*' # 允许所有IP访问
wal_level = replica # 可选值 minimal ,replica ,logical。要支持复制和归档,必须设置为replica 或logical
archive_mode = on # 开启归档模式,配合archive_command参数将WAL发送到归档目录
archive_command = 'cp %p /home/storage/pgsql/archive/%f' # 将WAL日志拷贝到归档目录
max_wal_senders = 10  # 指定来自后备服务器或流式基础备份客户端的并发连接的最大数量

#####################################################################
==============================异步复制================================
listen_addresses = '*'
wal_level = replica
max_wal_senders = 2
max_replication_slots = 2
synchronous_commit = off
###########################################################################

##重启数据库使配置生效

# 停止
pg_ctl -D /apps/pgsql/postgresql/data -l /apps/pgsql/postgresql/data/server.log stop

# 启动
pg_ctl -D /apps/pgsql/postgresql/data -l /apps/pgsql/postgresql/data/server.log start

3.4 备份主库数据至从库

#1.关闭从库正在运行的数据库
pg_ctl -D /apps/pgsql/postgresql/data -l /apps/pgsql/postgresql/data/server.log stop


#2.移除原本的数据目录
rm -rf /apps/pgsql/postgresql/data/*


#3.从库从主库进行数据库备份
pg_basebackup -h 10.128.17.39 -p 5432 -U replica -D /apps/pgsql/postgres/data -P --wal-method=stream -R

#4.从库备份完成后会在postgresql.auto.conf 记录恢复信息

 

3.5 修改从库参数

vim postgres.conf

listen_addresses = '*' # 允许所有IP访问
hot_standby = on
primary_conninfo = 'host=10.0.0.51 port=5432 user=replica password=8sL588Ix9G24Bvn7PS'

###参数信息参照postgres_auto配置

3.6 启动数据库

  pg_ctl -D /apps/pgsql/postgresql/data -l /apps/pgsql/postgresql/data/server.log start

4.主从验证

4.1 主从库验证

查看进程ps -ef|grep postgres

4.2 通过主从库数据验证是否一致

往主库写入数据,查看从库是否同步

4.3 查看状态表

  #主库验证:  pg_stat_replication

    #从库验证:  pg_stat_wal_receiver

          select *  from  pg_is_in_recovery();

posted on 2024-09-03 17:12  似梦非醒  阅读(542)  评论(0)    收藏  举报