【Linux】PostgreSQL 主从模式部署(源码编译方式)

2024-09-02 11:56:42 浏览数 (1)

以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!

如果对您有帮助,烦请点赞、关注、转发!如果您有其他想要了解的,欢迎私信联系我~

背景介绍

近期,笔者承接了在 Linux 操作系统下部署 PostgreSQL 主从模式的需求,且客户要求必须是非容器化部署。

本文基于 PostgreSQL 11.6 版本,第一阶段选择源码编译方式,在 CentOS 7 操作系统下完成了 PostgreSQL 主从模式(1主1从)的部署验证工作,以下为完整过程。

过程回顾

1、创建安装目录、数据目录

代码语言:javascript复制
mkdir -p /data/pg11 /data/pg11-data

2、下载源码

代码语言:javascript复制
wget https://ftp.postgresql.org/pub/source/v11.6/postgresql-11.6.tar.gz
tar -xzf postgresql-11.6.tar.gz -C /data

附源码地址:https://www.postgresql.org/ftp/source/v11.6

3、安装依赖

代码语言:javascript复制
rpm -qa | grep ncurses-devel || yum install -y ncurses-devel
rpm -qa | grep readline-devel || yum install -y readline-devel
rpm -qa | grep zlib-devel || yum install -y zlib-devel

4、编译安装

代码语言:javascript复制
cd /data/postgresql-11.6
./configure --prefix=/data/pg11
make && make install
############################################################################
cd /data/postgresql-11.6/contrib
make && make install

5、创建用户、用户组

代码语言:javascript复制
groupadd postgres
useradd -g postgres postgres

# 为了安全考虑 PostgreSQL 不允许使用 root 用户操作数据库
# 因此需要创建 postgres 作为数据库的超级用户

6、修改目录属主、属组

代码语言:javascript复制
chown -R postgres:postgres /data/pg11-data
chown -R postgres:postgres /data/postgresql-11.6
ll /data

7、切换用户

代码语言:javascript复制
su - postgres

8、修改环境变量

代码语言:javascript复制
cat >> /home/postgres/.bash_profile <<EOF

export PATH=/data/pg11/bin:$PATH
export MANPATH=/data/pg11-data/share/man:$MANPATH
export LANG=en_US.utf8
export DATE="$(date  "%Y-%m-%d %H:%M:%S")"
export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH
EOF
############################################################################
tail /home/postgres/.bash_profile && source /home/postgres/.bash_profile

9、初始化数据库

代码语言:javascript复制
initdb -D /data/pg11-data

10、启动服务、查看状态

代码语言:javascript复制
pg_ctl -D /data/pg11-data -l /home/postgres/logfile_$(date  "%Y%m%d_%H%M") start
netstat -nltp | grep 5432

11、设置开机启动

代码语言:javascript复制
cp /data/postgresql-11.6/contrib/start-scripts/linux /etc/init.d/postgres
sed -i 's#prefix=/usr/local/pgsql#prefix=/data/pg11#g' /etc/init.d/postgres
sed -i 's#PGDATA="/usr/local/pgsql/data"#PGDATA="/data/pg11-data"#g' /etc/init.d/postgres
chmod  x /etc/init.d/postgres

grep -E "^prefix|^PGDATA" /etc/init.d/postgres
chkconfig --list 2>/dev/null | grep postgres

# 完成上述操作后,部分操作系统下服务启动、停止、查看状态也可以使用:
# systemctl start postgres
# systemctl stop postgres
# systemctl status postgres

12、设置PostgreSQL默认用户postgres的密码

代码语言:javascript复制
psql -c "ALTER USER postgres WITH PASSWORD 'new_password'"

0 人点赞