<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      postgresql13.6流復制主從同步

      安裝好PG之后,如果給線上業務使用,至少得弄個主從,否則主庫掛了,就可能導致業務長時間受影響。下面來看看怎么配置PG主從。

      環境描述:

      • PG版本:13.6
      • 主庫IP:172.16.103.225
      • 從庫IP:172.16.103.226
      • 數據目錄:/postgresql/pgdata

      搭建主從(流復制)步驟:

      1. 在主庫創建同步用戶,并授權, (最好提前做好主備切換的權限配置,提前規劃好pg_hba.conf, 以便后面主備切換)
      2. 在從庫(下面也稱standby)上安裝好PG軟件,安裝跟主庫一樣(保持目錄一致性),刪除掉pgdata(數據目錄)和archive(歸檔目錄)下的文件,注意這里是操作從庫的,不要干了主庫!!
      3. 在從庫上使用pg_basebackup命令去搭建同步
      4. 啟動從庫

      具體操作命令

      1. 主庫上創建用戶,授權
      postgres=# CREATE ROLE replica login replication encrypted password 'repl_6534';
      CREATE ROLE
      
      1. 配置pg_hba.conf, 允許從庫訪問
      $ vim pg_hba.conf 
      host    replication     all             172.16.103.225/32         md5
      host    replication     all             172.16.103.226/32         md5
      postgres=# select pg_reload_conf();    # 重載一下配置文件
      
      1. 從庫上執行pg_basebackup去搭建同步
      $ pg_basebackup -h 172.16.103.225 -U replica -p 5432 -F p   -X s -v -P -R -D /postgresql/pgdata
      Password: 
      pg_basebackup: initiating base backup, waiting for checkpoint to complete
      WARNING:  skipping special file "./.s.PGSQL.5432"
      pg_basebackup: checkpoint completed
      pg_basebackup: write-ahead log start point: 0/1B000028 on timeline 1
      pg_basebackup: starting background WAL receiver
      pg_basebackup: created temporary replication slot "pg_basebackup_28111"
      WARNING:  skipping special file "./.s.PGSQL.5432"pgdata/backup_label    )
      32338/32338 kB (100%), 1/1 tablespace                                         
      pg_basebackup: write-ahead log end point: 0/1B000100
      pg_basebackup: waiting for background process to finish streaming ...
      pg_basebackup: syncing data to disk ...
      pg_basebackup: renaming backup_manifest.tmp to backup_manifest
      pg_basebackup: base backup completed
      
      1. 啟動從庫
      $ pg_ctl start -l /postgresql/pg_log/pg.log 
      waiting for server to start.... done
      server started
      

      查看數據庫同步信息

      1. 操作系統上進程

      主庫上會多一個walsender的進程

      $ ps -ef | grep postgres | grep send
      pgsql     7854 18709  0 11:19 ?        00:00:00 postgres: walsender replica 172.16.103.226(12836) streaming 0/1C0003E0
      

      從庫上會有一個walreceiver的進程

      $ ps -ef | grep postgres
      pgsql    30471     1  0 11:19 ?        00:00:00 /postgresql/pg13/bin/postgres
      pgsql    30472 30471  0 11:19 ?        00:00:00 postgres: startup recovering 00000001000000000000001C
      pgsql    30473 30471  0 11:19 ?        00:00:00 postgres: checkpointer 
      pgsql    30474 30471  0 11:19 ?        00:00:00 postgres: background writer 
      pgsql    30475 30471  0 11:19 ?        00:00:00 postgres: stats collector 
      pgsql    30476 30471  0 11:19 ?        00:00:00 postgres: walreceiver 
      

      2. 數據庫表中的信息

      postgres=# SELECT pg_is_in_recovery();
      主庫上返回f, 從庫上返回t。
      

      在主庫上,查詢表pg_stat_replication 可以看到從庫同步的狀態

      postgres=# \x
      Expanded display is on.
      postgres=# select * from pg_stat_replication;
      pid              | 7854
      usesysid         | 16436
      usename          | replica
      application_name | walreceiver
      client_addr      | 172.16.103.226
      client_hostname  | 
      client_port      | 12836
      backend_start    | 2023-12-22 11:19:53.781303+08
      backend_xmin     | 
      state            | streaming
      sent_lsn         | 0/1C0003E0
      write_lsn        | 0/1C0003E0
      flush_lsn        | 0/1C0003E0
      replay_lsn       | 0/1C0003E0
      write_lag        | 
      flush_lag        | 
      replay_lag       | 
      sync_priority    | 0
      sync_state       | async
      reply_time       | 2023-12-22 11:24:24.29878+08
      

      從庫上可以查看 pg_stat_wal_receiver表查看同步狀態

      postgres=# select * from pg_stat_wal_receiver;
      pid                   | 30476
      status                | streaming
      receive_start_lsn     | 0/1C000000
      receive_start_tli     | 1
      written_lsn           | 0/1C0003E0
      flushed_lsn           | 0/1C000000
      received_tli          | 1
      last_msg_send_time    | 2023-12-22 11:32:25.206129+08
      last_msg_receipt_time | 2023-12-22 11:32:25.206617+08
      latest_end_lsn        | 0/1C0003E0
      latest_end_time       | 2023-12-22 11:19:53.783906+08
      slot_name             | 
      sender_host           | 172.16.103.225
      sender_port           | 5432
      conninfo              | user=replica password=******** channel_binding=disable dbname=replication host=172.16.103.225 port=5432 fallback_application_name=walreceiver sslmode=disable sslcompression=0 ssl_min_protocol_version=TLSv1.2 gssencmode=disable krbsrvname=postgres target_session_attrs=any
      

      需要注意的是,并不是說只有主庫的pg_stat_replication有信息,從庫一定沒有,假如是一個級聯的環境的話,那從庫(它是某個從庫的主庫)也是有輸出的。
      pg_stat_replication表的幾個字段的解釋如下:

      • sent_lsn: 發送到standby的最后一個wal位置(還未write)。
      • write_lsn: 寫到standby操作系統上的最后一個wal位置(還未flush)。
      • flush_lsn: 刷新到standby磁盤上的最后一個wal位置(到達disk)。
      • replay_lsn: standby上重放的最后的事務日志位置(此時用戶可見)。
      select pg_current_wal_lsn(); 
      

      是當前的wal_lsn, 也就是可以說主備延遲的字節數可以用pg_current_wal_lsn() - replay_lsn 得到。

      主備切換步驟

      1. 關閉主庫
      2. 從庫上執行 pg_ctl promote 提升為主庫
      3. 應用配置重連新主庫(原備庫)【也可以提前規劃好VIP, 把VIP切換到新主庫】
      4. 原主庫上創建standby.signal文件, 配置postgresql.auto.conf文件, 以同步新主庫
      5. 啟動原主庫,原主庫變成了新從庫
        注意:異步情況下,如果主庫宕機,切換從庫的話,可能會有數據丟失。

      主備切換具體操作命令

      1. 模擬主庫宕機,直接停掉, 主庫執行
      $ pg_ctl stop -m immediate
      waiting for server to shut down.... done
      server stopped
      

      此時,從庫上執行select * from pg_stat_wal_receiver; 的話,已經沒有輸出。 日志會有同步報錯信息。

      1. 從庫上執行
      $ pg_ctl promote  
      waiting for server to promote.... done
      server promoted
      

      查看數據庫日志的話,可以看到以下信息

      2023-12-22 11:45:44.835 CST [30472] LOG:  received promote request
      2023-12-22 11:45:44.835 CST [30472] LOG:  redo done at 0/1C0003A8
      2023-12-22 11:45:44.837 CST [30472] LOG:  selected new timeline ID: 2
      2023-12-22 11:45:44.883 CST [30472] LOG:  archive recovery complete
      2023-12-22 11:45:44.889 CST [30471] LOG:  database system is ready to accept connections
      

      原從庫上的standby.signal文件也已經沒了。
      3. 原主庫上創建standby.signal文件,把它變成新主庫的從庫

      $ cd /postgresql/pgdata            # 這個是我DB的數據目錄,上面所說的postgresql.conf/postgresql.auto.conf/pg_hba.conf 均在該目錄下
      $ touch standby.signal
      
      1. 參考原來的從庫的postgresql.auto.conf文件,配置老主庫從新從庫
      $ vim postgresql.auto.conf 
      # Do not edit this file manually!
      # It will be overwritten by the ALTER SYSTEM command.
      primary_conninfo = 'user=replica password=repl_6534 channel_binding=disable host=172.16.103.226 port=5432 sslmode=disable sslcompression=0 ssl_min_protocol_version=TLSv1.2 gssencmode=disable krbsrvname=postgres target_session_attrs=any'
      
      1. 啟動原主庫(新從庫)
      $ pg_ctl start
      $ psql
      psql (13.6)
      Type "help" for help.
      
      postgres=# \x
      Expanded display is on.
      postgres=# select * from pg_stat_wal_receiver;
      pid                   | 5776
      status                | streaming
      receive_start_lsn     | 0/1C000000
      receive_start_tli     | 2
      written_lsn           | 0/1C0026C8
      flushed_lsn           | 0/1C000000
      received_tli          | 2
      last_msg_send_time    | 2023-12-22 14:21:05.444004+08
      last_msg_receipt_time | 2023-12-22 14:21:05.444451+08
      latest_end_lsn        | 0/1C0026C8
      latest_end_time       | 2023-12-22 14:20:35.378922+08
      slot_name             | 
      sender_host           | 172.16.103.226
      sender_port           | 5432
      conninfo              | user=replica password=******** channel_binding=disable dbname=replication host=172.16.103.226 port=5432 fallback_application_name=walreceiver sslmode=disable sslcompression=0 ssl_min_protocol_version=TLSv1.2 gssencmode=disable krbsrvname=postgres target_session_attrs=any
      
      postgres=# 
      
      posted @ 2023-12-22 14:30  xuege  閱讀(1109)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 欧美激欧美啪啪片| 亚洲最大av一区二区| 国产精品视频免费一区二区三区| AV区无码字幕中文色| 麻豆精品在线| 成av免费大片黄在线观看| 国精品91人妻无码一区二区三区| 精品国产高清中文字幕| 久久婷婷成人综合色综合| 日韩有码av中文字幕| 日韩无专区精品中文字幕| 噜噜噜噜私人影院| 免费看成人欧美片爱潮app| 国产乱码精品一区二区三| 四虎国产精品久久免费地址| 亚洲一区二区日韩综合久久| 亚洲国产精品综合久久20| 亚洲精品成人一二三专区| 樱桃熟了a级毛片| 深夜福利资源在线观看| 天堂网在线.www天堂在线资源| 国产91久久精品一区二区| 欧美老熟妇乱子伦牲交视频 | 久久精品国产精品亚洲艾| 成人午夜激情在线观看| 免费观看日本污污ww网站69| аⅴ天堂中文在线网| 男女猛烈激情xx00免费视频| 国产18禁黄网站禁片免费视频 | 亚洲综合国产一区二区三区| 国产香蕉尹人综合在线观看| 无码国内精品人妻少妇| 人妻日韩精品中文字幕| 九九热免费精品在线视频| 人妻无码中文专区久久app| 国产初高中生在线视频| 久久久久99精品成人片牛牛影视| 亚洲色最新高清AV网站| 国产免费午夜福利蜜芽无码| www插插插无码免费视频网站| 亚洲人成小说网站色在线|