真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

POSTGRESQL10.8怎么用源碼安裝主從搭建

本篇內(nèi)容介紹了“POSTGRESQL10.8怎么用源碼安裝主從搭建”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

創(chuàng)新互聯(lián)長期為上1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為梅州企業(yè)提供專業(yè)的做網(wǎng)站、成都網(wǎng)站制作,梅州網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

一、下載POSTGRESQL源碼安裝包及主機(jī)配置
https://www.postgresql.org/ftp/source/v10.8/
postgresql-10.8.tar.gz

虛擬機(jī)環(huán)境
node1  192.168.159.4
node2  192.168.159.5

操作系統(tǒng)為redhat7.6
數(shù)據(jù)庫為postgresql10.8

兩個(gè)節(jié)點(diǎn)均配置/etc/hosts
vi /etc/hosts
node1  192.168.159.4
node2  192.168.159.5
二、編譯安裝
(1)創(chuàng)建postgres用戶
useradd -m -r -s /bin/bash -u 5432 postgres
(2)安裝相關(guān)依賴包
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

注意編譯的時(shí)候一定不要加參數(shù)--enable-profiling  --enable-debug  這參數(shù)會導(dǎo)致不必要的日志產(chǎn)生,

而且增長極快,會導(dǎo)致磁盤空間迅速爆滿,手動刪除還可能有一些不好的影響,所以不要配這參數(shù)就好。

而且這參數(shù)說明也是用于測試開發(fā)用的,不適用于生產(chǎn)系統(tǒng)

configure 編譯選項(xiàng):
--prefix=PREFIX 指定安裝目錄,默認(rèn)為 /usr/local/pgsql
--bindir= 可執(zhí)行文件目錄,默認(rèn) /PREFIX/bin
--sysconfdir= 配置文件目錄,默認(rèn) /PREFIX/etc
--libdir= 庫文件目錄,默認(rèn) /PREFIX/lib
--includedir= 頭文件目錄,默認(rèn) /PREFIX/include
--datarootdir=DATAROOTDIR 設(shè)置只讀共享文件目錄,默認(rèn)為 /PREFIX/share
--mandir= man手冊目錄,默認(rèn) /DATAROOTDIR/man
--with-extra-version=STRING 在版本號后面追加 STRING 字符串,用作自定義版本標(biāo)識
--with-pgport=NUMBER 指定服務(wù)器端與客戶端的默認(rèn)端口號,缺省為 5432
--with-openssl 編譯 ssl 支持,需要事先安裝 OpenSSL 包
--with-pam 編譯 PAM 支持
--with-ldap 編譯 LDAP 支持,需要事先安裝 OpenLDAP 包
--with-segsize= 設(shè)定 segment size ,以 gigabytes(GB) 為單位,默認(rèn)為 1GB ,大型的表會按 segsize 被分割成多個(gè)文件
--with-blocksize= 指定塊大小,是表內(nèi)存儲和 I/O 的基本單位,默認(rèn) 8Kbytes ,通常無需變更,取值范圍 1-32KB
--with-wal-segsize= 設(shè)置 WAL(Write-Ahead Logging) 的 segment size ,以 megabytes(MB) 為單位,默認(rèn) 16MB ,取值范圍 1-64MB
--with-wal-blocksize= 指定 WAL 的塊大小,這是 WAL 預(yù)寫式日志存儲和 I/O 的基本單位,以 Kbytes 為單位,默認(rèn) 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 編譯器時(shí)可用于生產(chǎn)環(huán)境,其它編譯器會影響性能;多用于開發(fā)
--enable-profiling GCC編譯器下,所有程序和庫將被編譯成可進(jìn)行性能分析,后端退出時(shí)生成的 gmon.out 用于性能分析;多用于開發(fā)
--enable-coverage 代碼覆蓋率測試,僅用于開發(fā)
--enable-cassert 開啟服務(wù)器的 assertion(斷言) 檢查,僅用于開發(fā)
--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),僅用于開發(fā)
--enable-dtrace 編譯動態(tài)追蹤工具 Dtrace 支持,當(dāng)前尚不能用于 Linux 平臺,可用于 FreeBSD、Solaris
--with-systemd 開啟 systemd 支持,需9.6及以上版本

最后幾行出現(xiàn)以下黃色輸出即配置正確,否則根據(jù)報(bào)錯(cuò)提示繼續(xù)安裝依賴包

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

最后幾行出現(xiàn)以下黃色輸出即配置正確

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]: 進(jìn)入目錄“/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

最后幾行出現(xiàn)以下黃色輸出即配置正確

/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]: 進(jìn)入目錄“/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)創(chuàng)建相關(guān)目錄及配置環(huán)境變量

mkdir -p /home/postgresql10.8/serverlog

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


su - postgres
vi .bash_profile  (刪除原來的所有,以下黃色部分直接復(fù)制粘貼)
# .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數(shù)據(jù)目錄
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 環(huán)境變量
export PATH=$PGHOME/bin:$PATH

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

#PostgreSQL的默認(rèn)用戶
export PGUSER=postgres

#PostgreSQL默認(rèn)主機(jī)地址
export PGHOST=127.0.0.1

#默認(rèn)的數(shù)據(jù)庫名
export PGDATABASE=postgres

#定義日志存放目錄
PGLOG="$PGDATA/serverlog"

source .bash_profile

(7)初始化數(shù)據(jù)庫
#執(zhí)行數(shù)據(jù)庫初始化腳本
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" 認(rèn)證.
你可以通過編輯 pg_hba.conf 更改或你下次
行 initdb 時(shí)使用 -A或者--auth-local和--auth-host選項(xiàng).Success. You can now start the database server using:啟動數(shù)據(jù)庫
su - postgres
/opt/postgresql-10.8/bin/pg_ctl -D '/home/postgresql10.8/pg/pgdata/' -l logfile start
(8)相關(guān)命令拷貝
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)創(chuàng)建一個(gè)用戶復(fù)制的用戶replica
su - postgres

psql

CREATE ROLE replica login replication encrypted password 'replica';

(2)修改pg_hba.conf文件,指定replica登錄網(wǎng)絡(luò)(最后一行添加)

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)主庫配置文件修改以下幾項(xiàng),其他不變
vi /home/postgresql10.8/pg/pgdata/postgresql.conf
listen_addresses = '*'
wal_level = hot_standby  #熱備模式
max_wal_senders= 10 #可以設(shè)置最多幾個(gè)流復(fù)制鏈接,差不多有幾個(gè)從,就設(shè)置多少
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'   #根據(jù)實(shí)際情況設(shè)置

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

mkdir /home/postgresql10.8/pg/archivedir

2、從庫環(huán)境

(1)把備庫的數(shù)據(jù)文件夾目錄清空

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

(2)在備庫上運(yùn)行

/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 

?。。∽⒁?,復(fù)制完成后,在備庫一定要將數(shù)據(jù)目錄下的所有文件重新授權(quán)

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

(3)創(chuàng)建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  #說明這臺機(jī)器不僅僅用于數(shù)據(jù)歸檔,也用于查詢

max_standby_streaming_delay =30s

wal_receiver_status_interval = 10s  #多久向主報(bào)告一次從的狀態(tài)

hot_standby_feedback = on   #如果有錯(cuò)誤的數(shù)據(jù)復(fù)制,是否向主進(jìn)行范例



(5)啟動備庫

su - postgres
/opt/postgresql-10.8/bin/pg_ctl -D '/home/postgresql10.8/pg/pgdata/' -l logfile start

如果無法啟動,到主庫復(fù)制文件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、驗(yàn)證主從功能

主庫查詢

su - postgres

psql

postgres=# select client_addr,sync_state from pg_stat_replication;

   client_addr   | sync_state

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

 192.168.159.5 | async

(1 row)

注意一個(gè)問題,生產(chǎn)庫要注意時(shí)區(qū)問題

找到配置文件postgresql.conf

其中參數(shù)

timezone = 'PRC'

PRC代表是上海時(shí)區(qū)

“POSTGRESQL10.8怎么用源碼安裝主從搭建”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!


名稱欄目:POSTGRESQL10.8怎么用源碼安裝主從搭建
分享路徑:http://weahome.cn/article/pscgoh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部