内容纲要
一. 下载离线资源包
- 下载地址:www.postgresql.org/download/
- 拉到最下边点击direct download
- 选择自己适用的版本(根据自己的系统)
- 点击进入
- 下载下边四个文件
- 安装时还需要依赖2个库文件:
libcu
和libxslt
libicu-50.2-4.el7_7.x86_64.rpm
libtirpc-0.2.4-0.16.el7.x86_64.rpm
二. 安装
- 将下载的6个文件上传服务器,然后按顺序进行安装
#安装依赖 rpm -ivh libicu-50.2-4.el7_7.x86_64.rpm rpm -ivh libxslt-1.1.28-6.el7.x86_64.rpm #如果安装时提示缺少libgcrypt安装 rpm -ivh libgcrypt-1.5.3-14.el7.x86_64.rpm #安装postgress #安装顺序 libs>12.13>server>contrib rpm -ivh postgresql12-libs-12.13-1PGDG.rhel7.x86_64.rpm rpm -ivh postgresql12-12.13-1PGDG.rhel7.x86_64.rpm rpm -ivh postgresql12-server-12.13-1PGDG.rhel7.x86_64.rpm rpm -ivh postgresql12-contrib-12.13-1PGDG.rhel7.x86_64.rpm
- 创建pg的用户组和用户
groupadd postgres useradd -g postgres postgres
- 创建数据存放目录
mkdir -p /data/appData/postgreSql mkdir -p /data/logs/postgreSql/ mkdir -p /data/app/postgreSql/pg_archive/xlog_files #授予权限 chmod -R 700 /data/appData/postgreSql chmod -R 700 /data/logs/postgreSql/ #主从同步目录,不需要可跳过 chmod -R 700 /data/app/postgreSql/pg_archive/xlog_files #更改目录拥有用户 chown -R postgres:postgres /data chown -R postgres:postgres /data/appData/postgreSql chown -R postgres:postgres /data/logs/postgreSql/ #主从同步目录,不需要可跳过 chown -R postgres:postgres /data/app/postgreSql/pg_archive/xlog_files
- 修改数据存放目录
#修改文件 /usr/lib/systemd/system/postgresql-12.service vim /usr/lib/systemd/system/postgresql-12.service #修改数据存放路径 #Environment=PGDATA=/var/lib/pgsql/12/data/ Environment=PGDATA=/data/appData/postgreSql
- 初始化数据库
#切换数据库用户 su - postgres #初始化数据库,-D参数貌似可以不用 /usr/pgsql-12/bin/initdb -D /data/appData/postgreSql
- 修改配置数据库参数
- 修改配置文件postgresql.conf
#1. 取消 listen_addresses注释,并修改为 listen_addresses = '*' #2.取消port = 5432 注释 port = 5432 #3.修改max_connection = 900 max_connection = 900
- 修改配置文件pg_hba.conf
#允许远程访问 #参数:trust 免密; md5 密码登录 #追加一行 host all all 0.0.0.0/0 md5
- 修改配置文件postgresql.conf
- 启动服务
#方式1 usr/pgsql-12/bin/pg_ctl -D /data/appData/postgreSql -l /data/logs/postgreSql/server.log start #方式2 systemctl start postgresql-12 #查看服务状态 systemctl status postgresql-12
三. 主从数据库配置
- 主库增加一个用户复制的用户replica
create role replica login replication encrypted password '123456';
- 修改配置数据库参数
修改配置文件postgresql.conf# 监听所有ip max_connection = 900 listen_addresses = '*' # 热备模式 wal_level = replica #允许归档 archive_mode = on # 归档目录 archive_command = 'cp %p /data/app/postgreSql/pg_archive/xlog_files/%f' #同步最大的进程数量 max_wal_senders = 32 #流复制主机发送数据的超时时间 wal_sender_timeout = 60 #最大连接数,从库的max_connections必须要大于主库的 max_connections = 900
修改配置文件pg_hba.conf
#允许远程访问 #参数:trust 免密; md5 密码登录 #追加一下配置,授权备库访问 host all all 0.0.0.0/0 md5 host all all 156.1.2.14/32 trust host replication replica 156.1.2.14/32 md5
- 备库安装后,不初始化设置,执行命令从主库拷贝数据
/usr/pgsql-14/bin/pg_basebackup -D /data/appData/postgreSql -h 156.1.2.13 -p 5432 -U replica -X stream -P
- 修改从库的postgresql.conf文件
# 移除或注释 wal_level,从库不需要这个配置 # wal_level = hot_standby ## 修改或添加以下 #可选,流复制最大延迟 max_standby_streaming_delay=30s #可选,向主库报告状态的最大间隔时间 wal_receiver_status_interval=10s #可选,查询冲突时向主库反馈 hot_standby_feedback=on #最大连接数一般大于主库就行 max_connections=1000 # 表示主库连接信息 primary_conninfo = 'host=156.1.2.13 port=5432 user=replica password=123456' # 表示恢复最新的数据 recovery_target_timeline = 'latest' #允许归档 hot_standby = on
- 创建 standby.signal文件就在数据文件夹内,标识从节点,当从节点提升为主节点后会自动删除)
echo "standby_mode = on" >> /data/appData/postgreSql/standby.signal
6.启动从库
/usr/pgsql-12/bin/pg_ctl -D /data/appData/postgreSql -l /data/logs/postgreSql/server.log start