postgresql 主從集群安裝


PGsql安裝

下載源碼包

wget https://ftp.postgresql.org/pub/source/v12.2/postgresql-12.2.tar.gz
sudo su
mkdir /usr/local/pgsql
mkdir /usr/local/pgsql/postgresql-12.2
chown -R appadmin:appadmin /usr/local/pgsql

編譯安裝

# 安裝必要依賴
yum install -y bison flex readline-devel zlib-devel
yum install docbook-dtds docbook-style-xsl fop libxslt -y
yum install -y gcc
# 解壓
su appadmin
tar -zxvf postgresql-12.2.tar.gz
cd ~/postgresql-12.2
# 配置編譯
./configure --prefix=/usr/local/pgsql/postgresql-12.2
# 編譯
make
make install

初始化數據庫

# 創建數據庫文件夾
mkdir -p /usr/local/pgsql/postgresql-12.2/data
# 初始化數據庫
/usr/local/pgsql/postgresql-12.2/bin/initdb -D /usr/local/pgsql/postgresql-12.2/data/

啟動數據庫

啟動數據庫
/usr/local/pgsql/postgresql-12.2/bin/pg_ctl -D /usr/local/pgsql/postgresql-12.2/data/ -l logfile start 
停止數據庫
/usr/local/pgsql/postgresql-12.2/bin/pg_ctl -D /usr/local/pgsql/postgresql-12.2/data/ stop               
重啟數據庫
/usr/local/pgsql/postgresql-12.2/bin/pg_ctl restart -D /usr/local/pgsql/postgresql-12.2/data/ -m fast   

修改配置

cd /usr/local/pgsql/postgresql-12.2/data/
cp postgresql.conf postgresql.conf_bak
vi postgresql.conf

修改 listen_addresses = '本地ip' 前面的#號需要去掉。
連接數 增大一些,博主team十幾個人,默認100連接數不夠用,如果做主從配置,從庫需要比主庫大,博主將從庫設置為1100

max_connections = 1000
vi /usr/local/pgsql/postgresql-12.2/data/pg_hba.conf

在文件底部,增加如下配置

host      all       all        0.0.0.0/0      password

修改環境變量

vi ~/.bash_profile

增加配置

export PGHOME=/usr/local/pgsql/postgresql-12.2
export PGDATA=/usr/local/pgsql/postgresql-12.2/data
PATH=$PATH:$HOME/bin:$PGHOME/bin

刷新

source ~/.bash_profile

設置開機自啟動

cd ~/postgresql-12.2/contrib/start-scripts 
sudo su
chmod a+x linux
cp linux /etc/init.d/postgresql
vi /etc/init.d/postgresql

修改配置文件
修改三個地方PGUSER、prefix、PGDATA,如下

# PGUSER是一個非root用戶(博主的PGUSER是appadmin)
PGUSER=appadmin
prefix=/usr/local/pgsql/postgresql-12.2
PGDATA="/usr/local/pgsql/postgresql-12.2/data"

開機自啟

chkconfig --add postgresql
chkconfig

啟動服務

service postgresql start
ps -ef | grep postgres

修改初始密碼

source ~/.bash_profile
psql -U postgres
ALTER USER postgres with encrypted password '你的密碼'; 
\q

問題修復

問題:role "postgres" does not exist
cd /usr/local/pgsql/postgresql-12.2/bin
./createuser -s postgres

集群配置

創建主從賬戶

在主庫上創建主從賬戶

psql -U postgres
CREATE ROLE rep login replication encrypted password 'rep';
# 退出
\q

修改主庫pg_hba.conf配置文件

vi /usr/local/pgsql/postgresql-12.2/data/pg_hba.conf

增加如下配置

#運行guoxm用戶在70上復制本機數據
host    replication  rep    1.1.1.2/32   password

修改主庫postgresql.conf配置文件

vi /usr/local/pgsql/postgresql-12.2/data/postgresql.conf

配置文件如下

listen_addresses = '1.1.1.2'   #監聽所有ip
archive_mode = on   #開啟歸檔模式
archive_command = 'cp %p /usr/local/pgsql/postgresql-12.2/data/%f'   #歸檔命令
wal_level = hot_standby    #熱備模式

重啟主庫

service postgresql restart

從庫檢查連通性

psql -h 1.1.1.1  -U  postgres

從庫重新生成

刪除從庫

rm -rf /usr/local/pgsql/postgresql-12.2/data/*

從主庫同步數據到從庫

/usr/local/pgsql/postgresql-12.2/bin/pg_basebackup -h 1.1.1.1 -p 5432 -U rep -Fp -Xs -Pv -R -D /usr/local/pgsql/postgresql-12.2/data/

修改從庫standby.signal配置文件

pgsql 12版本,不再支持recovery.conf

  • standby_mode 配置在 standby.signal 中配置
  • primary_conninfo 配置在 postgresql.conf 中配置
vi /usr/local/pgsql/postgresql-12.2/data/standby.signal

修改如下配置

#表示該節點是從庫
standby_mode = on

修改從庫postgresql.conf配置文件

vi /usr/local/pgsql/postgresql-12.2/data/postgresql.conf

配置內容如下

primary_conninfo = 'host=1.1.1.1 port=5432 user=rep password=rep'
wal_level = replica    #熱備模式
hot_standby = on #說明這台機器不僅用於數據歸檔,還可以用於數據查詢
hot_standby_feedback = on #r出現錯誤復制,向主機反饋

重啟從庫

service postgresql restart

檢查集群

主庫檢查集群

在主庫上查詢從庫客戶端

su appadmin
psql -U postgres
select client_addr,sync_state from pg_stat_replication;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM