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;