广告
返回顶部
首页 > 资讯 > 数据库 >POSTGRESQL10.8怎么用源码安装主从搭建
  • 532
分享到

POSTGRESQL10.8怎么用源码安装主从搭建

2024-04-02 19:04:59 532人浏览 薄情痞子
摘要

本篇内容介绍了“postgresql10.8怎么用源码安装主从搭建”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有

本篇内容介绍了“postgresql10.8怎么用源码安装主从搭建”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

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

虚拟机环境
node1  192.168.159.4
node2  192.168.159.5

操作系统为redhat7.6
数据库为postgresql10.8

两个节点均配置/etc/hosts
vi /etc/hosts
node1  192.168.159.4
node2  192.168.159.5
二、编译安装
(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

上传解压安装包
cd /opt/

tar -zxvf  postgresql-10.8.tar.gz

cd /opt/ postgresql-10.8

./configure --prefix=/opt/postgresql-10.8 --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-thread-safety --enable-nls=zh_CN

注意编译的时候一定不要加参数--enable-profiling  --enable-debug  这参数会导致不必要的日志产生,

而且增长极快,会导致磁盘空间迅速爆满,手动删除还可能有一些不好的影响,所以不要配这参数就好。

而且这参数说明也是用于测试开发用的,不适用于生产系统

configure 編译选项:
--prefix=PREFIX 指定安装目录,默认为 /usr/local/pgsql
--bindir= 可执行文件目录,默认 /PREFIX/bin
--sysconfdir= 配置文件目录,默认 /PREFIX/etc
--libdir= 库文件目录,默认 /PREFIX/lib
--includedir= 头文件目录,默认 /PREFIX/include
--datarootdir=DATAROOTDIR 设置只读共享文件目录,默认为 /PREFIX/share
--mandir= man手册目录,默认 /DATAROOTDIR/man
--with-extra-version=STRING 在版本号后面追加 STRING 字符串,用作自定义版本标识
--with-pgport=NUMBER 指定服务器端与客户端的默认端口号,缺省为 5432
--with-openssl 編译 ssl 支持,需要事先安装 OpenSSL 包
--with-pam 編译 PAM 支持
--with-ldap 編译 LDAP 支持,需要事先安装 OpenLDAP 包
--with-segsize= 设定 segment size ,以 gigabytes(GB) 为单位,默认为 1GB ,大型的表会按 segsize 被分割成多个文件
--with-blocksize= 指定块大小,是表内存储和 I/O 的基本单位,默认 8Kbytes ,通常无需变更,取值范围 1-32KB
--with-wal-segsize= 设置 WAL(Write-Ahead Logging) 的 segment size ,以 megabytes(MB) 为单位,默认 16MB ,取值范围 1-64MB
--with-wal-blocksize= 指定 WAL 的块大小,这是 WAL 預写式日志存储和 I/O 的基本单位,以 Kbytes 为单位,默认 8KB ,取值范围 1-64KB
--enable-debug (Compiles all programs and libraries with debugging symbols. This means that you can run the programs in a debugger to analyze problems),使用 GCC 編译器时可用于生产环境,其它編译器会影响性能;多用于开发
--enable-profiling GCC編译器下,所有程序和库将被編译成可进行性能分析,后端退出时生成的 gmon.out 用于性能分析;多用于开发
--enable-coverage 代码覆盖率测试,仅用于开发
--enable-cassert 开启服务器的 assertion(断言) 检查,仅用于开发
--enable-depend (Enables automatic dependency tracking. With this option, the makefiles are set up so that all affected object files will be rebuilt when any header file is changed),仅用于开发
--enable-dtrace 編译动态追踪工具 Dtrace 支持,当前尚不能用于 linux 平台,可用于 FreeBSD、Solaris
--with-systemd 开启 systemd 支持,需9.6及以上版本

最后几行出现以下黄色输出即配置正确,否则根据报错提示继续安装依赖包

checking thread safety of required library functions... yes

checking whether gcc supports -Wl,--as-needed... yes

configure: using compiler=gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36)

configure: using CFLAGS=-Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-fORMat-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -pg -DLINUX_PROFILE -O2

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

或者马上输入echo $?得到输出是0就可以了

(4)编译
make && make install

最后几行出现以下黄色输出即配置正确

make[2]: 离开目录“/opt/postgresql-10.8/src/test/perl”

/usr/bin/mkdir -p '/opt/postgresql-10.8/lib/pgxs/src'

/usr/bin/install -c -m 644 Makefile.global '/opt/postgresql-10.8/lib/pgxs/src/Makefile.global'

/usr/bin/install -c -m 644 Makefile.port '/opt/postgresql-10.8/lib/pgxs/src/Makefile.port'

/usr/bin/install -c -m 644 ./Makefile.shlib '/opt/postgresql-10.8/lib/pgxs/src/Makefile.shlib'

/usr/bin/install -c -m 644 ./nls-global.mk '/opt/postgresql-10.8/lib/pgxs/src/nls-global.mk'

make[1]: 离开目录“/opt/postgresql-10.8/src”

make -C config install

make[1]: 进入目录“/opt/postgresql-10.8/config”

/usr/bin/mkdir -p '/opt/postgresql-10.8/lib/pgxs/config'

/usr/bin/install -c -m 755 ./install-sh '/opt/postgresql-10.8/lib/pgxs/config/install-sh'

/usr/bin/install -c -m 755 ./missing '/opt/postgresql-10.8/lib/pgxs/config/missing'

make[1]: 离开目录“/opt/postgresql-10.8/config”

PostgreSQL installation complete.

或者马上输入echo $?得到输出是0就可以了

(5)安装
make world && make install -world

最后几行出现以下黄色输出即配置正确

/usr/bin/mkdir -p '/opt/postgresql-10.8/lib/pgxs/src'

/usr/bin/install -c -m 644 Makefile.global '/opt/postgresql-10.8/lib/pgxs/src/Makefile.global'

/usr/bin/install -c -m 644 Makefile.port '/opt/postgresql-10.8/lib/pgxs/src/Makefile.port'

/usr/bin/install -c -m 644 ./Makefile.shlib '/opt/postgresql-10.8/lib/pgxs/src/Makefile.shlib'

/usr/bin/install -c -m 644 ./nls-global.mk '/opt/postgresql-10.8/lib/pgxs/src/nls-global.mk'

make[1]: 离开目录“/opt/postgresql-10.8/src”

make -C config install

make[1]: 进入目录“/opt/postgresql-10.8/config”

/usr/bin/mkdir -p '/opt/postgresql-10.8/lib/pgxs/config'

/usr/bin/install -c -m 755 ./install-sh '/opt/postgresql-10.8/lib/pgxs/config/install-sh'

/usr/bin/install -c -m 755 ./missing '/opt/postgresql-10.8/lib/pgxs/config/missing'

make[1]: 离开目录“/opt/postgresql-10.8/config”

PostgreSQL installation complete.

make: 离开目录“/opt/postgresql-10.8”

或者马上输入echo $?得到输出是0就可以了

(6)创建相关目录及配置环境变量

mkdir -p /home/postgresql10.8/serverlog

mkdir -p /home/postgresql10.8/pg/pgdata


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=/home/postgresql10.8/pg/pgdata
export PGPORT PGDATA 

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

#PostgreSQL 安装目录
export PGHOME=/home/postgresql10.8/pg/pgdata


#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 /home/postgresql10.8

su - postgres

/opt/postgresql-10.8/bin/initdb --encoding=utf8 -D /home/postgresql10.8/pg/pgdata/

警告:为本地连接启动了 "trust" 认证.
你可以通过编辑 pg_hba.conf 更改或你下次
行 initdb 时使用 -A或者--auth-local和--auth-host选项.Success. You can now start the database server using:启动数据库
su - postgres
/opt/postgresql-10.8/bin/pg_ctl -D '/home/postgresql10.8/pg/pgdata/' -l logfile start
(8)相关命令拷贝
root用户

mkdir /home/postgresql10.8/pg/pgdata/bin

cp /opt/postgresql-10.8/bin/*  /home/postgresql10.8/pg/pgdata/bin

chown -R postgres.postgres /home/postgresql10.8/pg/pgdata/bin

三、postgresql主从搭建

1、主库配置

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

psql

CREATE ROLE replica login replication encrypted passWord 'replica';

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

vi /home/postgresql10.8/pg/pgdata/pg_hba.conf

host    replication     replica         192.168.159.0/24        md5

host    all             replica         192.168.159.0/24        md5

host    all             all             192.168.159.0/24        md5

host    all             all             0.0.0.0/0               md5

 
(3)主库配置文件修改以下几项,其他不变
vi /home/postgresql10.8/pg/pgdata/postgresql.conf
listen_addresses = '*'
wal_level = hot_standby  #热备模式
max_wal_senders= 10 #可以设置最多几个流复制链接,差不多有几个从,就设置多少
wal_keep_segments = 100  #重要配置
wal_send_timeout = 60s
max_connections = 3000 #从库的 max_connections要大于主库
arcHive_mode = on #允许归档
archive_command = 'cp %p /home/postgresql10.8/pg/archivedir/%f'   #根据实际情况设置

checkpoint_timeout = 30min
max_wal_size = 2GB
min_wal_size = 1GB

mkdir /home/postgresql10.8/pg/archivedir

2、从库环境

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

rm -rf /home/postgresql10.8/pg/*

(2)在备库上运行

/opt/postgresql-10.8/bin/pg_basebackup -F p --progress -D /home/postgresql10.8/pg/pgdata -h 192.168.159.4 -p 5432 -U replica --password

输入密码replica 

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

chown -R postgres.postgres /home/postgresql10.8/pg/pgdata

(3)创建recovery.conf 文件

cp  /opt/postgresql-10.8/share/recovery.conf.sample /home/postgresql10.8/pg/pgdata/recovery.conf

vi /home/postgresql10.8/pg/pgdata/recovery.conf

standby_mode = on

primary_conninfo = 'host=192.168.159.4 port=5432 user=replica password=replica'

recovery_target_timeline = 'latest'

trigger_file = '/home/postgresql10.8/pg/pgdata/trigger.kenyon'

(4)配置postgresql.conf文件
vi /home/postgresql10.8/pg/pgdata/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.8/bin/pg_ctl -D '/home/postgresql10.8/pg/pgdata/' -l logfile start

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

scp /home/postgresql10.8/pg/pgdata/postmaster.opts 192.168.159.5:/home/postgresql10.8/pg/pgdata/

chown -R postgres.postgres /home/postgresql10.8/pg/pgdata/

cd /home/postgresql10.8/pg/

chmod 700 pgdata/

3、验证主从功能

主库查询

su - postgres

psql

postgres=# select client_addr,sync_state from pg_stat_replication;

   client_addr   | sync_state

-----------------+------------

 192.168.159.5 | async

(1 row)

注意一个问题,生产库要注意时区问题

找到配置文件postgresql.conf

其中参数

timezone = 'PRC'

PRC代表是上海时区

“POSTGRESQL10.8怎么用源码安装主从搭建”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

您可能感兴趣的文档:

--结束END--

本文标题: POSTGRESQL10.8怎么用源码安装主从搭建

本文链接: https://www.lsjlt.com/news/60047.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • POSTGRESQL10.8怎么用源码安装主从搭建
    本篇内容介绍了“POSTGRESQL10.8怎么用源码安装主从搭建”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有...
    99+
    2022-10-18
  • MYSQL5.6.40源码安装 主从搭建 主主搭建
    前言: 前面那篇5.6.38主从搭建的文章属于测试系统里面弄着玩的,以下这篇文章写的是在公司生产库上搭建的MYSQL主从。 在上系统前,纠结了很久,到底使用哪种数据库(PG?HBASE?MONGODB...
    99+
    2022-10-18
  • MYSQL5.7.22 源码安装 主从搭建
    操作系统版本 CENTOS7.6 MYSQL5.7.22 啥?为啥我的操作系统木有iso的安装镜像,哎算了,不能弄本地yum源,那就弄个网络的吧。只不过默认的用不了,那就自己动手丰衣足食 cd /...
    99+
    2022-10-18
  • POSTGRESQL10.3源码如何安装主从搭建
    这篇文章将为大家详细讲解有关POSTGRESQL10.3源码如何安装主从搭建,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、下载POSTGRESQL源码安装包及主机配置...
    99+
    2022-10-18
  • MySQL5.7怎么用mysqldump搭建gtid主从
    这篇文章主要介绍“MySQL5.7怎么用mysqldump搭建gtid主从”,在日常操作中,相信很多人在MySQL5.7怎么用mysqldump搭建gtid主从问题上存在疑惑,小编查阅了各式资料,整理出简单...
    99+
    2022-10-18
  • ActiveMQ中的主从怎么利用zookeeper搭建
    今天就跟大家聊聊有关ActiveMQ中的主从怎么利用zookeeper搭建,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、环境准备IP192.168.3.10  ...
    99+
    2023-05-31
    activemq zookeeper
  • 怎么用源码安装mysql5.6.37
    这篇文章主要介绍“怎么用源码安装mysql5.6.37”,在日常操作中,相信很多人在怎么用源码安装mysql5.6.37问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用源...
    99+
    2022-10-18
  • 怎么用源码安装PostgreSQL
    本篇内容介绍了“怎么用源码安装PostgreSQL”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!数据库版本...
    99+
    2022-10-18
  • 怎么用源码安装mysql5.6.35
    这篇文章主要介绍“怎么用源码安装mysql5.6.35”,在日常操作中,相信很多人在怎么用源码安装mysql5.6.35问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用源...
    99+
    2022-10-18
  • 怎么用源码安装MYSQL
    这篇文章主要介绍“怎么用源码安装MYSQL”,在日常操作中,相信很多人在怎么用源码安装MYSQL问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用源码安装MYSQL”的疑惑...
    99+
    2022-10-18
  • 怎样进行LAMP源码安装以及如何搭建zabbix监控
    怎样进行LAMP源码安装以及如何搭建zabbix监控,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、系统环境检查,版本说明1)版本说明#ht...
    99+
    2022-10-18
  • Linux怎么用源码安装MySQL 5.7
    这篇文章主要讲解了“Linux怎么用源码安装MySQL 5.7”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux怎么用源码安装MySQL 5.7”吧!...
    99+
    2022-10-18
  • Linux系统上怎么用源码安装OpenSSL
    这篇文章主要讲解了“Linux系统上怎么用源码安装OpenSSL”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux系统上怎么用源码安装OpenSSL”吧!先下载openssl 1.0....
    99+
    2023-06-12
  • 安徽虚拟主机租用怎么搭建网站
    要搭建一个网站,您需要按照以下步骤进行:1.注册域名:您需要在域名注册商处购买一个域名,例如,www.example.com。2.购...
    99+
    2023-06-08
    安徽虚拟主机 虚拟主机
  • 西安虚拟主机租用怎么搭建网站
    如果您想在西安的虚拟主机上搭建网站,可以按照以下步骤进行:1.选择虚拟主机:根据自己的需求和预算,选择一款适合自己的虚拟主机,可以选...
    99+
    2023-05-31
    西安虚拟主机 虚拟主机
  • Mysql for Linux怎么用源码安装和配置
    本篇内容介绍了“Mysql for Linux怎么用源码安装和配置”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有...
    99+
    2022-10-18
  • CentOS7.4环境下怎么用源码安装Mysql 5.7.26
    本篇内容主要讲解“CentOS7.4环境下怎么用源码安装Mysql 5.7.26”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CentOS7.4环境下怎么用源码...
    99+
    2022-10-18
  • Linux中怎么用yum安装并搭建PHP环境
    在Linux系统中,PHP是搭建Web应用程序的重要组件之一。为了在Linux系统上搭建PHP环境,需要进行一些配置和安装。本文将介绍如何使用yum来安装PHP环境并搭建PHP应用程序。1、首先,确保系统已安装yum包管理器。如果您的系统未...
    99+
    2023-05-14
    php linux
  • 怎么用源代码编译安装PHP-PDO-MYSQL扩展
    本篇内容主要讲解“怎么用源代码编译安装PHP-PDO-MYSQL扩展”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用源代码编译安装PHP-PDO-MYSQL扩展”吧!步骤1:下载源代码首先,...
    99+
    2023-07-05
  • Linux中怎么使用CheckInstall从源码中创建一个RPM或DEB包
    这篇文章给大家介绍Linux中怎么使用CheckInstall从源码中创建一个RPM或DEB包,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。如果你已经从它的源码运行“make install”安装了linux程序。想完...
    99+
    2023-06-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作