【PG流複製】Postgresql流複製部署過程及效能測試
--非同步流複製 ,事務提交時不需要等待備庫接收並寫入wal日誌便返回成功。 --postgresql.conf 新增以下引數 wal_level=replica archive_mode=on archive_command='/bin/date' max_wal_senders=10 ##max number of walsender processes wal_keep_segments=512 ##in logfile segments,16MB each; 0 disables hot_standby=on --pg_hab.conf #replication privilege host replication repuser 192.168.8.81/32 md5 host replication repuser 192.168.8.25/32 md5 --create user create user repuser replication login connection limit 5 encrypted password 're12a345'; --start backup select pg_start_backup('fancs_bk1'); tar czvf pg_root.tar.gz data --exclude=data/pg_wal scp pg_root.tar.gz postgres@192.168.8.25:/pgdata --node2 tar xvf pg_root.tar.gz mkdir pg_wal select pg_stop_backup(); --node2 cp /pgdata/pgsql/share/postgresql/recovery.conf.sample $PGDATA/recovery.conf recovery_target_timeline='latest' standby_mode=on primary_conninfo='host=192.168.8.81 port=5432 user=repuser' --編寫密碼檔案,免密碼登入 [postgres@mystandby ~]$ touch .pgpass [postgres@mystandby ~]$ chmod 0600 .pgpass [postgres@mystandby ~]$ cat .pgpass 192.168.8.81:5432:replication:repuser:re12a345 192.168.8.25:5432:replication:repuser:re12a345 --檢視程式 postgres 4902 4838 0 15:14 ? 00:00:00 postgres: wal sender process repuser 192.168.8.25(30137) streaming 0/B000140 postgres 5670 5668 0 15:14 ? 00:00:00 postgres: wal receiver process streaming 0/B000140 --測試 create table t7 (id int4,name text); insert into t7 values(1,'firsouler'); select * from t7; --檢視流複製同步方式 select usename,application_name,client_addr,sync_state from pg_stat_replication; --同步流複製,需要等待備庫接收wal日誌,增加了事務響應時間 --postgresql.conf 單例項環境 synchronous_commit #on 表示提交事務時需要等待本地wal寫入wal日誌後才向客戶端返回成功,安全,效能損耗 #off 可能資料丟失,提高效能 #local 與on類似 --流複製環境 #remote_write 等待備庫寫入系統快取中 # on 備庫寫入wal日誌 #remote_apply 備庫完成重做 --recovery.conf node2 備庫別名 primary_conninfo='host=192.168.8.25 port=5432 user=repuser application_name=node2' --node1 設定以下引數 synchronous_commit=on synchronous_standby_names='node2' --同步流複製,備庫當機,主庫一直等待, 不建議同步流複製 --效能測試,併發 跟cpu數量有關係,效能方面 --測試指令碼 create table test_per1(id int4,name text,create_time timestamp() without time zone default clock_timestamp()); insert into test_per1(id,name) select n,n||'_per1' from generate_series(1,10000000) n; alter table test_per1 add primary key(id); --select 指令碼 \set v_id random(1,1000000) select name from test_per1 where id=:v_id; --寫測試 \set v_id random(1,1000000) update test_per2 set flag='1' where id=:v_id; --讀測試,單例項最佳,非同步流複製次之,寫測試,單例項與非同步差異不明顯,同步流複製慢 pgbench -c 2 -T 120 -d postgres -U postgres -n N -M prepared -f update_per2.sql > update_2.out 2>&1 & --流複製監控 select * from pg_stat_replication; --主備延遲 write_lag 主庫wal落盤,等待備庫接收wal日誌,(作業系統快取中)並返回確認資訊;flush_lag(已寫入wal日誌,但沒應用);replay_lag(已應用) select pid,usename,client_addr,state,write_lag,flush_lag,replay_lag from pg_stat_replication; --replay_lag>flush_lag>write_lag --10之前的版本 select extract(second from now()-pg_last_xact_replay_timestamp()); --透過流複製wal日誌應用延遲衡量 返回位元組數 select pid,usename,client_addr,state, pg_wal_lsn_diff(pg_current_wal_lsn(),write_lsn) write_delay, pg_wal_lsn_diff(pg_current_wal_lsn(),flush_lsn) flush_delay, pg_wal_lsn_diff(pg_current_wal_lsn(),replay_lsn) replay_delay from pg_stat_replication; --接收程式相關試圖 select * from pg_stat_wal_receiver; --備庫,恢復程式是否處於恢復模式 select pg_is_in_recovery(); --備庫最近接收的wal位置 select pg_last_wal_receive_lsn(); --備庫最近應用的wal日誌 select pg_last_wal_replay_lsn(); --備庫最近事務的應用時間 select pg_last_xact_replay_timestamp(); --主庫wal當前寫入位置 select pg_current_wal_lsn(); --計算兩個wal日誌位置的偏移量 select pg_wal_lsn_diff('','');
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29487349/viewspace-2564573/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【PG流複製】Postgresql流複製主備切換SQL
- pg流複製備份
- PostgreSQL DBA(126) - PG 12(搭建流複製)SQL
- 2. PostgreSQL 流複製SQL
- Postgresql 9.6 搭建 非同步流複製 和 同步流複製 詳細教程SQL非同步
- PostGreSql 12.6 的流複製(CentOS)SQLCentOS
- postgresql 9.4 流複製簡單配置SQL
- oracle 流複製Oracle
- PostgreSQL基於PG內建流複製的,靠譜的PostgreSQL高可用方案SQL
- 如何配置 pglogical | PostgreSQL 的流複製SQL
- Postgresql實戰:使用pg_basebackup或pg_start_backup方式搭建Postgresql主從流複製SQL
- 再不瞭解PostgreSQL,你就晚了之PostgreSQL主從流複製部署SQL
- PG 流複製的隱患以及處理措施
- Postgres 流複製配置
- PostgreSQL 13 級聯流複製部署(#2.7)-202105SQL
- PostgreSQL DBA(31) - Backup&Recovery#4(搭建流複製)SQL
- Oracle流複製技術Oracle
- 美創科技運維日記|postgresql-pg簡易非同步流複製搭建運維SQL非同步
- PostgreSQL 13 同步流複製(#2.4)-202104SQL
- [zt] 高階複製、流複製(Streams)、備庫區別
- 檔案的複製通過字元流和緩衝流(Buffered)字元
- 【DB寶60】PG12高可用之1主2從流複製環境搭建及切換測試
- 使用 Bitnami PostgreSQL Docker 映象快速設定流複製叢集SQLDocker
- PostgreSQL 13 非同步流複製(#2.1)-202103SQL非同步
- postgresql基於流複製 (streaming replication)的warm-standbySQL
- Postgresql基於流複製 (streaming replication)的hot-standbySQL
- [java IO流]之檔案複製Java
- ORACLE流複製技術介紹Oracle
- 流複製管理手冊總結
- Java位元組流檔案複製及效率比較Java
- PostgreSQL 13 同步流複製+failover(#2.6)-202104SQLAI
- PostgreSQL構建流複製拉取日誌的起始位置在哪裡SQL
- MySQL主主複製(雙主複製)配置過程介紹MySql
- Redis複製過程詳解Redis
- Flume與Kafka整合--扇入、扇出功能整合,其中扇出包括:複製流、複用流Kafka
- Java IO 流之拷貝(複製)檔案Java
- Docker 搭建KingbaseES主備流複製Docker
- MySQL主從複製_複製過濾MySql