postgresql 12 安裝,熱備份,讀寫分離

2021-10-03 14:04:52 字數 3746 閱讀 4650

主備需要資料庫版本一致

環境: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...