欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PostgreSQL 流復制異步轉(zhuǎn)同步的操作

 更新時間:2020年12月31日 08:40:55   作者:董董-醬  
這篇文章主要介紹了PostgreSQL 流復制異步轉(zhuǎn)同步的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

非常重要的synchronous_commit參數(shù)

流復制的同步方式,有主庫配置文件postgresql.conf,中的synchronous_commit控制著。所以理解該參數(shù)的配置十分重要。

單實例環(huán)境

參數(shù)值 說明 優(yōu)點 缺點
on 或 local 當事務提交時,WAL先寫入WAL buffer 再寫到 WAL文件(落盤)中。設置為on表示提交事務時需要等待本地WAL最終落盤后,才向客戶端返回成功。 非常安全 數(shù)據(jù)庫性能有損耗
off 當事務提交時,不需要等待WAL先寫入WAL buffer 再寫到 WAL文件(落盤)中。 提升數(shù)據(jù)庫性能 數(shù)據(jù)庫宕機是最新提交的少量事務可能丟失

流復制環(huán)境

參數(shù)值 說明 優(yōu)點 缺點
remote_write 當主庫提交事務后,需等待備庫接收主庫發(fā)送的WAL日志流并寫入WAL buffer, 就向客戶端返回成功 只有主庫的WAL是落盤的 事務響應時間快
on 當主庫提交事務后,需等待備庫接收主庫發(fā)送的WAL日志流并寫入WAL buffer 以及寫入WAL文件, 就向客戶端返回成功 主、備庫WAL均落盤,有兩份持有化文件保護 事務響應時間相對較慢
remote_apply 當主庫提交事務后,需等待備庫接收主庫發(fā)送的WAL日志流并寫入WAL buffer 以及寫入WAL文件, 同時備庫apply之后, 就向客戶端返回成功 數(shù)據(jù)保護最好 影響事務性能

查看同步情況

在主庫執(zhí)行以下SQL , sync_state字段為async表示異步同步方式

postgres=# select usename , application_name , client_addr,sync_state from pg_stat_replication;
 usename | application_name | client_addr | sync_state 
---------+------------------+----------------+------------
 repuser | walreceiver | 192.168.56.102 | async
(1 row)

配置同步復制

主庫配置postgresql.conf文件

[postgres@pg01 data]$ vi postgresql.conf 
synchronous_commit = on
synchronous_standby_names = 'walreceiver'

synchronous_commit : 開篇提到的那個重要參數(shù)!

synchronous_standby_names: 這里的name填寫,剛剛查詢到的application_name。

重啟主庫服務

[root@pg01 PG_12_201909212]# service postgresql-12 restart
Stopping postgresql-12 service:    [ OK ]
Starting postgresql-12 service:    [ OK ]

再次查看主庫字典

postgres=# select usename , application_name , client_addr,sync_state from pg_stat_replication;
 usename | application_name | client_addr | sync_state 
---------+------------------+----------------+------------
 repuser | walreceiver | 192.168.56.102 | sync

數(shù)據(jù)保護測試

關閉備庫。模擬備庫宕機無法正常接收WAL

[root@pg02 ~]# service postgresql-12 stop
Stopping postgresql-12 service:    [ OK ]

主庫嘗試進行DML操作

dong=# insert into t1 select * from t1;
Cancel request sent
WARNING: canceling wait for synchronous replication due to user request
DETAIL: The transaction has already committed locally, but might not have been replicated to the standby.
INSERT 0 8

由于備庫已關閉,無法接受從主庫傳來的WAL,根據(jù)同步規(guī)則,主庫需要一直等待主庫接收到WAL的消息。

手動進行了cancel, 數(shù)據(jù)庫報錯。說明在等待備庫reguest相應。

所以,sync同步模式雖然可以很好的保護數(shù)據(jù),但同時也帶來了性能的影響,需慎重

補充:PostgreSQL 流復制數(shù)據(jù)同步檢查

如何分辨主、備

看進程

主庫 – walwriter

[root@pg01 PG_12_201909212]# ps -ef| grep wal
postgres 21157 21151 0 15:57 ?  00:00:00 postgres: walwriter         
postgres 21168 21151 0 15:57 ?  00:00:00 postgres: walsender repuser 192.168.56.102(38473) streaming 0/2A0001C0

備庫 – walreceiver

[root@pg02 ~]# ps -ef | grep wal
postgres 13383 13369 0 14:08 ?  00:00:01 postgres: walreceiver streaming 0/2A0001C0   

函數(shù)方法

一句話判斷哪個是主庫、哪個是備庫,返回的值:

f 為主庫

t 為備庫

postgres=# select pg_is_in_recovery();
 pg_is_in_recovery 
-------------------
 f
(1 row)

那我這個就是主庫嘍~

檢查流復制同步情況

先確定主庫傳到哪兒了

在確定備庫接收到哪兒了

最后確定備庫應用到哪兒了

檢查主庫傳輸

確定主庫傳到什么位置了

postgres=# select pg_current_wal_lsn();
 pg_current_wal_lsn 
--------------------
 0/2A0001C0
(1 row)

檢查備庫恢復

確定備庫接收到哪兒了

postgres=# select pg_last_wal_receive_lsn();
 pg_last_wal_receive_lsn 
-------------------------
 0/2A0001C0
(1 row)

確定備庫應用到哪兒了

postgres=# select pg_last_wal_replay_lsn();
 pg_last_wal_replay_lsn 
------------------------
 0/2A0001C0
(1 row)

最近事務應用的時間

postgres=# select pg_last_xact_replay_timestamp();
 pg_last_xact_replay_timestamp 
-------------------------------
 2020-03-05 15:20:22.125688+08
(1 row)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

相關文章

  • PostgreSQL自定義函數(shù)并且調(diào)用方式

    PostgreSQL自定義函數(shù)并且調(diào)用方式

    這篇文章主要介紹了PostgreSQL如何自定義函數(shù)并且調(diào)用,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • Postgresql和mysql的區(qū)別及說明

    Postgresql和mysql的區(qū)別及說明

    這篇文章主要介紹了Postgresql和mysql的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • CentOS中運行PostgreSQL需要修改的內(nèi)核參數(shù)及配置腳本分享

    CentOS中運行PostgreSQL需要修改的內(nèi)核參數(shù)及配置腳本分享

    這篇文章主要介紹了CentOS中運行PostgreSQL需要修改的內(nèi)核參數(shù)及配置腳本分享,本文從系統(tǒng)資源限制類和內(nèi)存參數(shù)優(yōu)化類來進行說明,需要的朋友可以參考下
    2014-07-07
  • PostgreSQL教程(七):函數(shù)和操作符詳解(3)

    PostgreSQL教程(七):函數(shù)和操作符詳解(3)

    這篇文章主要介紹了PostgreSQL教程(七):函數(shù)和操作符詳解(3),本文講解了序列操作函數(shù)、條件表達式、數(shù)組函數(shù)和操作符、系統(tǒng)信息函數(shù)、系統(tǒng)管理函數(shù)等內(nèi)容,需要的朋友可以參考下
    2015-05-05
  • PostgreSQL常用字符串分割函數(shù)整理匯總

    PostgreSQL常用字符串分割函數(shù)整理匯總

    作為當前最強大的開源數(shù)據(jù)庫,Postgresql(以下簡稱pg)對字符的處理也是最為強大的,下面這篇文章主要給大家介紹了關于PostgreSQL常用字符串分割函數(shù)的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • PostgreSQL截取字符串到指定字符位置詳細示例

    PostgreSQL截取字符串到指定字符位置詳細示例

    這篇文章主要給大家介紹了關于PostgreSQL截取字符串到指定字符位置的相關資料,PostgreSQL數(shù)據(jù)庫拼接字符串函數(shù)是一種非常重要的函數(shù),使用它可以方便地將不同的字符串進行拼接操作,從而得到我們需要的結果,需要的朋友可以參考下
    2023-07-07
  • PostgreSQL查看版本信息的操作

    PostgreSQL查看版本信息的操作

    這篇文章主要介紹了PostgreSQL查看版本信息的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • postgresql關于like%xxx%的優(yōu)化操作

    postgresql關于like%xxx%的優(yōu)化操作

    這篇文章主要介紹了postgresql關于like%xxx%的優(yōu)化操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • 修改一行代碼提升 Postgres 性能 100 倍

    修改一行代碼提升 Postgres 性能 100 倍

    在一個(差)的PostgreSQL 查詢中只要一個小小到改動(ANY(ARRAY[...])to ANY(VALUES(...)))就能把查詢時間從20s縮減到0.2s
    2013-09-09
  • 基于PostgreSql 別名區(qū)分大小寫的問題

    基于PostgreSql 別名區(qū)分大小寫的問題

    這篇文章主要介紹了基于PostgreSql 別名區(qū)分大小寫的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01

最新評論