postgresql-14.6數(shù)據(jù)庫(kù)主從部署
安裝包準(zhǔn)備:
postgresql-14.6.tar.gz
zlib-1.2.11.tar.gz
1、安裝postgresql數(shù)據(jù)庫(kù)
1)創(chuàng)建用戶
groupadd postgres
useradd postgres -g postgres
#麒麟服務(wù)器無(wú)需執(zhí)行下面兩步,會(huì)自動(dòng)創(chuàng)建
mkdir /home/postgres
chown -R postgres:postgres /home/postgres
2)安裝zlib依賴(麒麟V10無(wú)需執(zhí)行,系統(tǒng)已默認(rèn)安裝)
#檢查是否安裝zlib、zlib-devel
rpm -qa |grep zlib
#沒(méi)有安裝的話執(zhí)行以下離線安裝步驟
tar xf zlib-1.2.11.tar.gz
cd zlib-1.2.11/
./configure
make && make install
3)安裝pg數(shù)據(jù)庫(kù)
1. 解壓
tar xf postgresql-14.6.tar.gz
cd postgresql-14.6/
2. 預(yù)配置
./configure --prefix=/data/pgsql --without-readline
3. 編譯并安裝
make && make install
4. 創(chuàng)建數(shù)據(jù)目錄及日志目錄
cd /data
mkdir -p pgsql/{data,logs}
chown -R postgres:postgres pgsql/
5. 初始化數(shù)據(jù)庫(kù)
su - postgres
#設(shè)置當(dāng)前服務(wù)器字符集為zh_CN.utf8
export LC_ALL=zh_CN.utf8
locale
#初始化數(shù)據(jù)庫(kù)
cd /data/pgsql/
./bin/initdb -E utf8 -D /data/pgsql/data/
6. 啟動(dòng)數(shù)據(jù)庫(kù)
./bin/pg_ctl -D /data/pgsql/data/ -l /data/pgsql/logs/pgsql.log start
7. 配置文件修改
cd /data/pgsql
vim data/postgresql.conf
listen_addresses = '*'
vim data/pg_hba.conf
host all all 0.0.0.0/0 trust
8. 重啟服務(wù)
./bin/pg_ctl -D /data/pgsql/data/ stop
./bin/pg_ctl -D /data/pgsql/data/ -l /data/pgsql/logs/pgsql.log start
9. 環(huán)境變量配置
vim ~/.bash_profile
export PGHOME=/data/pgsql
export PGDATA=/data/pgsql/data
export LC_ALL=zh_CN.utf8
PATH=$PATH:$PGHOME/bin
4)主從配置
從節(jié)點(diǎn)安裝重復(fù)上面安裝步驟(無(wú)需執(zhí)行初始化操作)
1. 主庫(kù)創(chuàng)建具有流復(fù)制的用戶
#登錄數(shù)據(jù)庫(kù)
psql -h 127.0.0.1 -U postgres -p 5432
#執(zhí)行sql
CREATE ROLE repl login replication encrypted password 'qaz#WSX123'
2. 修改配置文件,開(kāi)啟歸檔
vim data/postgresql.conf
# 啟用歸檔模式
archive_mode = on
# 歸檔命令
archive_command = 'test ! -f /data/pgsql/pgwal/%f && cp %p /data/pgsql/pgwal/%f'
# 啟用流復(fù)制
wal_level = replica
# 允許最多2個(gè)并發(fā)WAL發(fā)送進(jìn)程
max_wal_senders = 2
# 保留最少2GB的WAL文件
wal_keep_size = 2GB
wal_sender_timeout = 60s
3. 修改pg_hba.conf添加從庫(kù)IP
vim data/pg_hba.conf
host replication repl 73.134.32.102/24 md5
4. 重啟主庫(kù)
./bin/pg_ctl -D /data/pgsql/data/ stop
./bin/pg_ctl -D /data/pgsql/data/ -l /data/pgsql/logs/pgsql.log start
5. 從庫(kù)配置
拷貝主節(jié)點(diǎn)數(shù)據(jù)至從庫(kù)(#從節(jié)點(diǎn)執(zhí)行)
pg_basebackup -h 73.134.32.101 -U repl -D /data/pgsql/data/ --write-recovery-conf --progress --verbose
從節(jié)點(diǎn)配置文件修改
vim data/postgresql.conf
# 恢復(fù)最新的數(shù)據(jù)
recovery_target_timeline = 'latest'
# 主庫(kù)連接信息
primary_conninfo = 'host=73.134.32.101 port=5432 user=repl password=qaz#WSX123'
# 最大連接數(shù),大于主庫(kù)
max_connections = 500
# 開(kāi)啟數(shù)據(jù)歸并支持?jǐn)?shù)據(jù)查詢
hot_standby = on
# 流備份最大延遲時(shí)間
max_standby_streaming_delay = 30s
# 向主庫(kù)反饋本機(jī)狀態(tài)間隔時(shí)間
wal_receiver_status_interval = 10s
# 出現(xiàn)錯(cuò)誤向主機(jī)反饋
hot_standby_feedback = on
啟動(dòng)從節(jié)點(diǎn)數(shù)據(jù)庫(kù)
pg_ctl -D /data/pgsql/data/ -l /data/pgsql/logs/pgsql.log start
6. 主從同步驗(yàn)證
主庫(kù)執(zhí)行sql
select client_addr,sync_state from pg_stat_replication;

在主庫(kù)創(chuàng)建用戶或數(shù)據(jù)庫(kù),并于從節(jié)點(diǎn)上查看是否同步
主節(jié)點(diǎn)創(chuàng)建數(shù)據(jù)庫(kù)和用戶角色

從節(jié)點(diǎn)查詢結(jié)果

5)登錄數(shù)據(jù)庫(kù)創(chuàng)建賬號(hào)和數(shù)據(jù)庫(kù)
psql -h 127.0.0.1 -U postgres -p 5432
CREATE USER kong WITH PASSWORD 'Hzsun88994788';
CREATE DATABASE kong OWNER kong;
\q退出
#數(shù)據(jù)庫(kù)字符集查看
show server_encoding;

浙公網(wǎng)安備 33010602011771號(hào)