PostGreSql 12.6 的流複製(CentOS)
PostGreSql 12.6 的流複製
流複製允許一臺後備伺服器比使用基於檔案的日誌傳送更能保持為最新的狀態。後備伺服器連線到主伺服器,主伺服器則在 WAL 記錄產生時即將它們以流式傳送給後備伺服器而不必等到 WAL 檔案被填充。
預設情況下流複製是非同步的。
主庫操作:
安裝之後,初始化資料庫:
[root@pg01 ~]# /usr/pgsql-12/bin/postgresql-12-setup initdb
Initializing database ... OK
[postgres@pg01 ~]$ createdb mydb
[postgres@pg01 ~]$ psql
psql (12.6)
輸入 "help" 來獲取幫助資訊.
postgres=# \l
資料庫列表
名稱 | 擁有者 | 字元編碼 | 校對規則 | Ctype | 存取許可權
-----------+----------+----------+-------------+-------------+-----------------------
mydb | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
postgres | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
template0 | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(4 行記錄)
##登入系統,新建測試DB, mydb
postgres=# CREATE USER replicator WITH REPLICATION ENCRYPTED PASSWORD 'secret';
CREATE ROLE
修改引數
[postgres@pg01 data]$ cat pg_hba.conf
host all all 0.0.0.0/0 ident
host replication replicator 192.168.56.11/32 md5
## Salve 伺服器IP地址是 11.
[postgres@pg01 data]$ pg_ctl restart -D $PGDATA
##reboot DB
[postgres@pg01 data]$ psql -c "select pg_is_in_recovery()"
pg_is_in_recovery
-------------------
f
(1 行記錄)
#false, 是Master 伺服器
[postgres@pg01 data]$ psql -x -c "select * from pg_stat_replication"
-[ RECORD 1 ]----+------------------------------
pid | 4064
usesysid | 16385
usename | replicator
application_name | walreceiver
client_addr | 192.168.56.11
client_hostname |
client_port | 47944
backend_start | 2021-04-16 00:04:30.215703+08
backend_xmin |
state | streaming
sent_lsn | 0/3000060
write_lsn | 0/3000060
flush_lsn | 0/3000060
replay_lsn | 0/3000060
write_lag |
flush_lag |
replay_lag |
sync_priority | 0
sync_state | async
reply_time | 2021-04-16 00:04:50.920327+08
Salve 伺服器操作
[postgres@pg02 12]$ pg_basebackup -h 192.168.56.10 -U replicator -p 5432 -D $PGDATA -Fp -Xs -P -R
口令:
33514/33514 kB (100%), 1/1 表空間
###會自動產生standby.signal,一個標識為slave的空檔案,可以用touch 自建
[postgres@pg02 12]$ ls -al
總用量 8
drwx------. 5 postgres postgres 62 4月 16 00:02 .
drwx------. 3 postgres postgres 35 4月 14 15:50 ..
drwxrwxr-x. 2 postgres postgres 6 4月 13 10:54 archive
drwx------. 2 postgres postgres 6 2月 11 09:16 backups
drwx------. 20 postgres postgres 4096 4月 16 00:02 data
-rw-------. 1 postgres postgres 997 4月 14 15:50 initdb.log
[postgres@pg02 data]$ cat postgresql.auto.conf
# Do not edit this file manually!
# It will be overwritten by the ALTER SYSTEM command.
listen_addresses = '*'
primary_conninfo = 'user=replicator password=secret host=192.168.56.10 port=5432 sslmode=prefer sslcompression=0 gssencmode=prefer krbsrvname=postgres target_session_attrs=any'
[postgres@pg02 data]$ psql -c "select pg_is_in_recovery()"
pg_is_in_recovery
-------------------
t
(1 行記錄)
##Ture, 是Salve 伺服器
測試結果(Master操作)
postgres=# \c mydb
您現在已經連線到資料庫 "mydb",使用者 "postgres".
mydb=# create table t01(name char(50));
CREATE TABLE
mydb=# insert into t01 values('qqqqq');
INSERT 0 1
mydb=# insert into t01 values('mmmmm');
INSERT 0 1
mydb=# \q
Salve 檢視
[postgres@pg02 data]$ psql -x -c "select * from pg_stat_replication"
(0 行記錄)
[postgres@pg02 data]$ psql
psql (12.6)
輸入 "help" 來獲取幫助資訊.
postgres=# \l
資料庫列表
名稱 | 擁有者 | 字元編碼 | 校對規則 | Ctype | 存取許可權
-----------+----------+----------+-------------+-------------+------------------
-----
mydb | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
postgres | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
template0 | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres
+
| | | | | postgres=CTc/post
gres
template1 | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres
+
| | | | | postgres=CTc/post
gres
(4 行記錄)
postgres=# \c mydb
您現在已經連線到資料庫 "mydb",使用者 "postgres".
mydb=# \d
關聯列表
架構模式 | 名稱 | 型別 | 擁有者
----------+------+--------+----------
public | t01 | 資料表 | postgres
(1 行記錄)
mydb=# select * from t01;
name
----------------------------------------------------
qqqqq
mmmmm
(2 行記錄)
##複製過來了,功能可以了。 比Oracle 的DG 簡單多了,和DB2的HADR 差不多有一拼。感覺不錯!!!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/6126/viewspace-2768360/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【PG流複製】Postgresql流複製主備切換SQL
- 2. PostgreSQL 流複製SQL
- 如何配置 pglogical | PostgreSQL 的流複製SQL
- 【PG流複製】Postgresql流複製部署過程及效能測試SQL
- postgresql 9.4 流複製簡單配置SQL
- Postgresql 9.6 搭建 非同步流複製 和 同步流複製 詳細教程SQL非同步
- PostgreSQL基於PG內建流複製的,靠譜的PostgreSQL高可用方案SQL
- PostgreSQL DBA(126) - PG 12(搭建流複製)SQL
- PostgreSQL DBA(31) - Backup&Recovery#4(搭建流複製)SQL
- postgresql基於流複製 (streaming replication)的warm-standbySQL
- Postgresql基於流複製 (streaming replication)的hot-standbySQL
- 再不瞭解PostgreSQL,你就晚了之PostgreSQL主從流複製部署SQL
- PostgreSQL 13 同步流複製(#2.4)-202104SQL
- 使用 Bitnami PostgreSQL Docker 映象快速設定流複製叢集SQLDocker
- PostgreSQL 13 非同步流複製(#2.1)-202103SQL非同步
- PostgreSQL構建流複製拉取日誌的起始位置在哪裡SQL
- oracle 流複製Oracle
- PostgreSQL中的複製延遲SQL
- PostgreSQL 13 同步流複製+failover(#2.6)-202104SQLAI
- PostgreSQL 13 級聯流複製部署(#2.7)-202105SQL
- PostGreSql12.6的備份恢復SQL
- Postgres 流複製配置
- PostgreSQL邏輯複製解密SQL解密
- PostgreSQL 邏輯複製解密SQL解密
- PostgreSQL雙向複製教程SQL
- PostgreSQL 主從複製方案SQL
- Postgresql實戰:使用pg_basebackup或pg_start_backup方式搭建Postgresql主從流複製SQL
- PostgreSQL 13 同步流複製+延遲備庫(#2.5)-202104SQL
- Oracle流複製技術Oracle
- pg流複製備份
- PostgreSQL 13 非同步流複製+延遲備庫(#2.2)-202103SQL非同步
- PostgreSQL 13 非同步流複製+failover切換(#2.3)-202104SQL非同步AI
- [zt] 高階複製、流複製(Streams)、備庫區別
- 美創科技運維日記|postgresql-pg簡易非同步流複製搭建運維SQL非同步
- 檔案的複製通過字元流和緩衝流(Buffered)字元
- [java IO流]之檔案複製Java
- ORACLE流複製技術介紹Oracle
- 流複製管理手冊總結