目录
一、YUM 安装
1、安装yum 源
使用YUM 安装比较简单,首先更新yum源
yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
2、安装服务
地址:RepoView: PostgreSQL PGDG 13 Updates RPMs
yum install postgresql13-server.x86_64
通过rpm -qa| grep postgres 查看安装的软件
postgresql13-server-13.4-1PGDG.rhel7.x86_64
postgresql13-libs-13.4-1PGDG.rhel7.x86_64
postgresql13-13.4-1PGDG.rhel7.x86_64
默认安装目录 /usr/pgsql-13 , 该目录包含服务启动的命令
默认数据目录 /var/lib/pgsql/13, 该目录包含服务数据目录、配置文件,以及归档目录等。
3、初始化数据库
/usr/pgsql-13/bin/postgresql-13-setup initdb
初始化完成后会自动创建超级管理员账户postgres , 无密码
4、启动服务
将服务添加到开机重启中
systemctl enable postgresql-13
启动服务
systemctl start postgresql-13
默认配置文件包含以下内容, 具体含义可参考后续的配置文件详解。
listen_addresses = '*' # what IP address(es) to listen on;
max_connections = 100 # (change requires restart)
password_encryption = scram-sha-256 # md5 or scram-sha-256
shared_buffers = 128MB # min 128kB
dynamic_shared_memory_type = posix # the default is the first option
max_wal_size = 1GB
min_wal_size = 80MB
log_destination = 'stderr' # Valid values are combinations of
logging_collector = on # Enable capturing of stderr and csvlog
log_directory = 'log' # directory where log files are written,
log_filename = 'postgresql-%a.log' # log file name pattern,
log_truncate_on_rotation = on # If on, an existing log file with the
log_rotation_age = 1d # Automatic rotation of logfiles will
log_rotation_size = 0 # Automatic rotation of logfiles will
log_line_prefix = '%m [%p] ' # special values:
log_timezone = 'Asia/Shanghai'
datestyle = 'iso, mdy'
timezone = 'Asia/Shanghai'
lc_messages = 'en_US.UTF-8' # locale for system error message
lc_monetary = 'en_US.UTF-8' # locale for monetary formatting
lc_numeric = 'en_US.UTF-8' # locale for number formatting
lc_time = 'en_US.UTF-8' # locale for time formatting
default_text_search_config = 'pg_catalog.english'
5、连接测试
root@node2:/var/lib/pgsql/13/data# sudo -iu postgres //切换到系统普通账户
postgres@node2:~$ psql // 执行psql 命令,默认没有密码
psql (13.4)
Type "help" for help.
postgres=#
# 可通过
\? 查看帮助;
\l 列举数据库 详细命令可参考后续的基础命令章节
二、源码安装
1、下载源码
wget https://ftp.postgresql.org/pub/source/v13.4/postgresql-13.4.tar.gz
2、安装依赖
yum install -y perl-ExtUtils-Embed readline-devel zlib-devel pam-devel libxml2-devel libxslt-devel python-devel gcc-c++ openssl-devel cmake
3、编译安装
./configure --prefix=/usr/local/postgresql-13.4 --with-wal-blocksize=16 --with-pgport=15432 --with-segsize=1 --with-blocksize=8 --with-libedit-preferred --with-perl --with-openssl --with-libxml --with-libxslt --enable-thread-safety --enable-nls=en_US.UTF-8
make && make install
配置解释
--with-wal-blocksize=16 // 设置预处理日志大小,单位千字节
--with-pgport=15432 // 指定端口
--with-segsize=1 //设置段大小,单位千兆字节
--with-blocksize=8 // 表中的存储和 I/O 默认值为 8 KB
--with-libedit-preferred // 支持libedit 库
--with-perl // 支持perl
--with-openssl // 支持ssl
--with-libxml // 支持libxml 库
--with-libxslt // 支持libxslt 库
--enable-thread-safety // 线程安全
--enable-nls=en_US.UTF-8 // 本地语言
4、创建账户、数据目录
useradd postgres
mkdir /pgsql/data -p
chown postgres.postgres /pgsql/data
chown -R postgres.postgres /usr/local/postgresql-13.4
5、初始化
su - postgres
/usr/local/postgresql-13.4/bin/initdb -D /pgsql/data
6、启动、停止服务
/usr/local/postgresql-13.4/bin/pg_ctl -D /pgsql/data -l logfile start
kill -INT `head -1 /pgsql/data/postmaster.pid`
7、连接测试
/usr/local/postgresql-13.4/bin/psql
8、补充
配置环境变量
为了后续使用方便可以设置环境变量, 编辑/etc/profile.d/postgres.sh
export PGDATA=/pgsql/data export PGHOME=/usr/local/postgresql-13.4/ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PGHOME/lib export PATH=$PATH:$PGHOME/bin/
添加自启动
将安装目录中 postgresql-13.4/contrib/start-scripts/linux 文件拷贝到/etc/init.d/postgres
修改对应的配置目录
prefix=/usr/local/postgresql-13.4
PGDATA="/pgsql/data"
PGUSER=postgres
PGLOG="$PGDATA/serverlog"
为启动脚本添加可执行权限
chmod +x /etc/init.d/postgres
添加自启动
chkconfig --add postgres
启停命令
/etc/init.d/posgtres start 、stop 、status
三、二进制安装
二进制是免安装,比较灵活。不过由于 11.13 版本开始就没有用于linux 系统的 二进制包下载,这里只演示操作步骤。
1、下载文件
Download PostgreSQL Database for Windows, Linux and MacOS & 32-bit or 64-bit Versions | EDB
2、创建账户、数据目录
useradd postgres
mkdir /pgsql/data -p
chown postgres.postgres /pgsql/data
chown -R postgres.postgres /usr/local/pgsql
3、初始化
su - postgres
/usr/local/pgsql/bin/initdb -E utf8 -D /pgsql/data
修改配置文件,修改监听地址和端口/pgsql/data/postgresql.conf
4、启动、停止服务
/usr/local/pgsql/bin/pg_ctl -D /pgsql/data -l logfile start
/usr/local/pgsql/bin/pg_ctl -D /pgsql/data -l logfile stop
5、测试连接
/usr/local/pgsql/bin/psql
6、补充
配置环境变量
为了后续使用方便可以设置环境变量, 编辑/etc/profile.d/postgres.sh
export PGDATA=/pgsql/data export PGHOME=/usr/local/pgsql/ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PGHOME/lib export PATH=$PATH:$PGHOME/bin/
四、集群部署配置
以上都是基于单点的安装,实际的生产环境中就需要集群(主从)部署。
1、架构及机器规划
IP | 服务 | 角色 | 说明 |
192.168.3.35 | PG-13.4 | master | centos7 x64 |
192.168.3.41 | PG-13.4 | master | centos7 x64 |
2、基础安装
基础安装和上述一致,这里不再描述。
创建用户同步的数据库角色、账户
create role pgpool with login password '123456';
create role repl login replication encrypted password '123456';
alter user postgres with password '123456';
3、集群配置
3.1 master 配置
cat postgresql.conf 增加以下配置
listen_addresses = '*'
archive_mode = on // 打开归档
max_connections = 1000 // 允许的最大连接
archive_command = 'cp "%p" "/var/lib/pgsql/archivedir/%f"' // 归档目录,如果没有手动创建并修改属组
max_wal_senders = 10 // 最多10个流式复制连接
max_replication_slots = 10 // 最大10个复制槽
wal_level = replica
hot_standby = on // 热备
wal_log_hints = on
认证配置
cat pg_hba.conf 增加允许访问的IP 和账户
host all all 192.168.3.0/24 trust
host replication repl 192.168.3.35/32 trust
host replication repl 192.168.3.41/32 trust
重启服务
systemctl restart postgresql-13
3.2 slave 配置
停止服务,并删除数据目录,然后从主节点拉取配置
systemctl stop postgresql-13
rm -fr data/*
/usr/pgsql-13/bin/pg_basebackup -h 192.168.3.35 -U repl -p 5432 -Fp -Xs -Pv -R -D /var/lib/pgsql/13/data
修改配置文件
cat postgresql.conf
listen_addresses = '*' # 监听地址
port = 5433 # 监听端口,随意
max_connections = 300 # 允许的最大连接
primary_conninfo = 'host=192.168.3.35 user=repl password=123456 port=5432'
max_standby_streaming_delay = 30s #
wal_receiver_status_interval = 10s #
hot_standby_feedback = on # 错误回传
cat standby.signal
standby_mode = 'no' #标志从节点,升级为主节点时,该文件自动删除
重启服务
systemctl restart postgresql-13
4、集群测试
master 查看同步状态
select client_addr,sync_state from pg_stat_replication;
master 查看进程