POSTGRESQL10.3源码如何安装主从搭建

69次阅读
没有评论

共计 6114 个字符,预计需要花费 16 分钟才能阅读完成。

这篇文章将为大家详细讲解有关 POSTGRESQL10.3 源码如何安装主从搭建,丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

一、下载 POSTGRESQL 源码安装包及主机配置
https://www.postgresql.org/ftp/source/v10.3/
postgresql-10.3.tar.gz

虚拟机环境
node1  192.168.159.151
node2  192.168.159.152

操作系统为 redhat6.5
数据库为 postgresql10.3

两个节点均配置 /etc/hosts
vi /etc/hosts
node1  192.168.159.151
node2  192.168.159.152
二、编译安装
(1)创建 postgres 用户
useradd -m -r -s /bin/bash -u 5432 postgres
(2)安装相关依赖包
yum install gettext gcc make perl python perl-ExtUtils-Embed   readline-devel   zlib-devel    openssl-devel   libxml2-devel  cmake  gcc-c++ libxslt-devel  openldap-devel  pam-devel  python-devel  cyrus-sasl-devel  libgcrypt-devel  libgpg-error-devel  libstdc++-devel

(3)配置 POSTGRES
./configure –prefix=/opt/postgresql-10.3 –with-segsize=8 –with-wal-segsize=64 –with-wal-blocksize=16 –with-blocksize=16 –with-libedit-preferred –with-perl –with-python –with-openssl –with-libxml –with-libxslt –enable-profiling –enable-thread-safety –enable-nls=zh_CN

最后几行出现以下黄色输出即配置正确,否则根据报错提示继续安装依赖包
configure: using CPPFLAGS= -D_GNU_SOURCE -I/usr/include/libxml2 
configure: using LDFLAGS=  -Wl,–as-needed
configure: creating ./config.status
config.status: creating GNUmakefile
config.status: creating src/Makefile.global
config.status: creating src/include/pg_config.h
config.status: creating src/include/pg_config_ext.h
config.status: creating src/interfaces/ecpg/include/ecpg_config.h
config.status: linking src/backend/port/tas/dummy.s to src/backend/port/tas.s
config.status: linking src/backend/port/dynloader/linux.c to src/backend/port/dynloader.c
config.status: linking src/backend/port/posix_sema.c to src/backend/port/pg_sema.c
config.status: linking src/backend/port/sysv_shmem.c to src/backend/port/pg_shmem.c
config.status: linking src/backend/port/dynloader/linux.h to src/include/dynloader.h
config.status: linking src/include/port/linux.h to src/include/pg_config_os.h
config.status: linking src/makefiles/Makefile.linux to src/Makefile.port

(4)编译
make make install

最后几行出现以下黄色输出即配置正确
make[1]: Leaving directory `/opt/postgresql-10.3/src
make -C config install
make[1]: Entering directory `/opt/postgresql-10.3/config
/bin/mkdir -p /opt/postgresql-10.3/lib/pgxs/config
/usr/bin/install -c -m 755 ./install-sh /opt/postgresql-10.3/lib/pgxs/config/install-sh
/usr/bin/install -c -m 755 ./missing /opt/postgresql-10.3/lib/pgxs/config/missing
make[1]: Leaving directory `/opt/postgresql-10.3/config
PostgreSQL installation complete.

(5)安装
make world make install -world

最后几行出现以下黄色输出即配置正确
make[1]: Leaving directory `/opt/postgresql-10.3/src
make -C config install
make[1]: Entering directory `/opt/postgresql-10.3/config
/bin/mkdir -p /opt/postgresql-10.3/lib/pgxs/config
/usr/bin/install -c -m 755 ./install-sh /opt/postgresql-10.3/lib/pgxs/config/install-sh
/usr/bin/install -c -m 755 ./missing /opt/postgresql-10.3/lib/pgxs/config/missing
make[1]: Leaving directory `/opt/postgresql-10.3/config
PostgreSQL installation complete.
make: Leaving directory `/opt/postgresql-10.3

(6)创建相关目录及配置环境变量
mkdir -p /data/pgdata/serverlog
mkdir /data/pg
su – postgres
vi .bash_profile  (删除原来的所有,以下黄色部分直接复制粘贴)
# .bash_profile
# Get the aliases and functions
if [-f ~/.bashrc]; then
. ~/.bashrc
fi

# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH

# postgres
#PostgreSQL 端口
PGPORT=5432

#PostgreSQL 数据目录
PGDATA=/data/pgdata
export PGPORT PGDATA 

# 所使用的语言
export LANG=zh_CN.utf8

#PostgreSQL 安装目录
export PGHOME=/data/pg

#PostgreSQL 连接库文件
export LD_LIBRARY_PATH=$PGHOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib:$LD_LIBRARY_PATH
export DATE=`date + %Y%m%d%H%M `

# 将 PostgreSQL 的命令行添加到 PATH 环境变量
export PATH=$PGHOME/bin:$PATH

#PostgreSQL 的 man 手册
export MANPATH=$PGHOME/share/man:$MANPATH

#PostgreSQL 的默认用户
export PGUSER=postgres

#PostgreSQL 默认主机地址
export PGHOST=127.0.0.1

# 默认的数据库名
export PGDATABASE=postgres

# 定义日志存放目录
PGLOG= $PGDATA/serverlog source .bash_profile

(7)初始化数据库
# 执行数据库初始化脚本
root 用户登录
chown -R postgres.postgres /data/
su – postgres
$/opt/postgresql-10.3/bin/initdb –encoding=utf8 -D /data/pg/data
警告: 为本地连接启动了 trust 认证.
你可以通过编辑 pg_hba.conf 更改或你下次
行 initdb 时使用 - A 或者 –auth-local 和 –auth-host 选项.
Success. You can now start the database server using:
启动数据库
su – postgres
/opt/postgresql-10.3/bin/pg_ctl -D /data/pg/data -l logfile start
(8)相关命令拷贝
root 用户
mkdir /data/pg/bin
cp /opt/postgresql-10.3/bin/*  /data/pg/bin
chown -R postgres.postgres /data/pg/bin

三、postgresql 主从搭建

1、主库配置

(1)创建一个用户复制的用户 replica
su – postgres

psql

CREATE ROLE replica login replication encrypted password replica

(2)修改 pg_hba.conf 文件,指定 replica 登录网络(最后一添加)

vi /data/pg/data/pg_hba.conf

host    replication     replica           192.168.159.0/24         md5
host    all          replica           192.168.159.0/24         trust

 
(3)主库配置文件修改以下几项,其他不变
vi
/data/pg/data/postgresql.conf
listen_addresses = *
wal_level = hot_standby # 热备模式
max_wal_senders= 6 # 可以设置最多几个流复制链接,差不多有几个从,就设置多少
wal_keep_segments = 20  #重要配置(这里的设置会影响到 pg_wal 目录下文件的数量,建议不要设置太大,20 就够了)
wal_send_timeout = 60s
max_connections = 512 # 从库的  max_connections 要大于主库
archive_mode = on # 允许归档
#archive_command =  cp %p /url/path%f    # 根据实际情况设置

2、从库环境

(1)把备库的数据文件夹目录清空

rm -rf /var/lib/pgsql/10/data/*

(2)在备库上运行

pg_basebackup -F p –progress -D /data/pg/data/ -h 192.168.159.151 -p 5432 -U replica –password

输入密码 replica 

!!!注意,复制完成后,在备库一定要将数据目录下的所有文件重新授权

chown -R postgres.postgres
/data/pg/data/

(3)创建 recovery.conf 文件

cp  /opt/postgresql-10.3/share/recovery.conf.sample
/data/pg/data/recovery.conf

/data/pg/data/recovery.conf

standby_mode = on

primary_conninfo = host=192.168.159.151 port=5432 user=replica password=replica

recovery_target_timeline = latest

trigger_file = /data/pg/data/trigger.kenyon

(4)配置 postgresql.conf 文件
vi
/data/pg/data/postgresql.conf
listen_addresses = *

wal_level = hot_standby

max_connections =1000 # 一般从的最大链接要大于主的

hot_standby =on  # 说明这台机器不仅仅用于数据归档,也用于查询

max_standby_streaming_delay =30s

wal_receiver_status_interval = 10s  # 多久向主报告一次从的状态

hot_standby_feedback = on  # 如果有错误的数据复制,是否向主进行范例

(5)启动备库

su – postgres
/opt/postgresql-10.3/bin/pg_ctl -D /data/pg/data/ -l logfile start

如果无法启动,到主库复制文件 postmaster.opts 到备库如下操作:

scp
/data/pg/data/postmaster.opts 192.168.159.152:/data/pg/data/

chown -R postgres.postgres
/data/pg/data/
cd /data/pg/

chmod 700 data/

3、验证主从功能

主库查询

su – postgres

psql

postgres=# select client_addr,sync_state from pg_stat_replication;

  client_addr  | sync_state

—————–+————

 192.168.159.152 | async

(1 row)

发现登陆 postgres 时出现以下问题
-bash-4.1$ 
root 用户执行
cp /etc/skel/.bash* /var/lib/pgsql/
再次登陆即可变成
[postgres@node1 ~]$

关于“POSTGRESQL10.3 源码如何安装主从搭建”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-24发表,共计6114字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)