主備需要資料庫版本一致
環境:centos7
192.168.0.21:5432 (主庫,寫庫)
192.168.0.20:15432 ( 備份庫,讀庫)
1.1 centos 安裝方式
yum install -y
yum install postgresql12 -y
yum install postgresql12-server -y
1.2 ubuntu18.04 安裝方式
vim /etc/apt/sources.list.d/pgdg.list
deb main
儲存退出vim
wget --quiet -o - | sudo apt-key add -
sudo apt-get update
apt-get install postgresql-12
以下為 centos7 配置方式,ubuntu 大致相同
1.3 設定資料存放位置
mkdir -p /home/data/master/
sudo chown -r postgres:postgres /home/data/master/
sudo chmod 700 -r /home/data/master/
vim /usr/lib/systemd/system/postgresql-12.service
修改 environment=pgdata= 為
environment=pgdata=//home/data/master/
儲存退出 vim
初始化資料
/usr/pgsql-12/bin/postgresql-12-setup initdb
設定開機自啟動
systemctl enable postgresql-12
啟動資料庫
systemctl start postgresql-12
vim /home/data/master/postgresql.conf
# 監聽所有 ip
listen_addresses = '*'
# 埠
port = 5432
# 連線數
max_connections = 200
# 開啟密碼認證,預設賬號密碼為 postgres/postgres
password_encryption = md5
# 將事務提交方式改為本地提交,預設為 on,在 on 模式下事務需要等備份資料庫一起提交,這裡改為 local 讓備份資料庫不影響主庫,如若是先配置讀寫分離,請設定為預設 on
synchronous_commit = local
# 最大傳送程序,預設 10,讀寫分離一寫多服務讀,請設定為讀資料庫的數量
max_wal_senders = 10
vim /home/data/master/pg_hba.conf
# 允許所有人登入,生產環境需修改為合適的配置
host all all 0.0.0.0/0 md5
# 設定備份資料庫連線,建議內網設定為 trust,這樣備份資料庫則不需要設定密碼,避免明文密碼
host replication postgres 192.168.0.20/32 trust
重啟資料庫
systemctl restart postgresql-12
備份資料庫安裝和上面一致(1),不進行初始化和啟動操作,如果有初始化或者啟動,則需要刪除data 資料目錄的所有資料,我這裡的資料目錄為/home/data/back/
初始化從庫,從主庫初始化同步
/usr/pgsql-12/bin/pg_basebackup -h 192.168.0.21 -p 5432 -u postgres -f p -p -r -d /home/data/back/
輸入密碼,並修改資料目錄許可權
sudo chown -r postgres:postgres /home/data/back/
sudo chmod 700 -r /home/data/back/
vim /home/data/back/postgresql.conf
port = 15432
# 設定主庫資訊,這裡的密碼為明文,如若不希望輸入明文,在主伺服器可以設定認證方式為 trust,生產注意備份伺服器必須是值得信任的,不要設定 ip 為 all
# 標識這是乙個備份庫
hot_standby = on
# 同步到最新資料
recovery_target_timeline = 'latest'
自行設定pg_hba.conf
重啟資料庫
systemctl restart postgresql-12
4.1 主伺服器
ps -ef|grep postgres
擁有 walsender 程序表示主伺服器在傳送wal流到192.168.0.20
postgres 178967 5506 0 15:38 ? 00:00:00 postgres: walsender postgres 192.168.0.20(46948) streaming 65/f0a1c820
4.2 備份伺服器
ps -ef|grep postgres
擁有 walreceiver 程序表示從伺服器已經在接收 wal 流
postgres 131497 131491 0 15:38 ? 00:00:00 postgres: walreceiver streaming 65/f09b9340
su postgres -c "/usr/pgsql-12/bin/pg_ctl -d 資料目錄 start"
還可以stop ,reload
單機多開 postgresql ,只需要建立好不同的目錄,給目錄分配好許可權,修改埠避免衝突,然後分別執行上面的命令啟動即可。
檢視備份資料庫狀態:
su postgres -c 'psql -p 45434'
postgres=#select * from pg_stat_wal_receiver;
檢視主資料庫狀態:
su postgres -c 'psql'
postgres=#select * from pg_stat_replication;
修改 postgres 密碼
postgres=#alter user postgres with password '***';
Postgresql12 安裝及設定遠端訪問
1.安裝 centos 7 拉取rp包,並install yum install install pg服務 yum install postgresql12 server 初始化db usr pgsql 12 bin postgresql 12 setup initdb 啟動服務 systemctl...
Postgresql12主從配置及切換
一 主從安裝 1 依據 centos7安裝最新版postgresql 操作,注意個別細節選擇主從配置 2 注意 從伺服器只能查詢,不能寫入 3 主庫ip 103,備庫ip 104 二 主伺服器 1 新增pg用於同步的使用者名稱 su postgres psql 建立具有複製流操作的使用者 repli...
PostgreSQL實戰(12)高階特性
1 with 查詢 先通過乙個簡單的 cte 示例了解 with 查詢,如下所示 with t as select generate series l,3 select from t generate series 12 3 3 rows 遞迴查詢使用 cte with 查詢的 乙個重要屬 性是 r...