Postgresql12主備流復制操作過程以及原理【pg_basebackup】


原理介紹:流復制(Streaming Replication)。流復制提供了將 WAL 記錄連續發送並應用到從服務器以使其保持最新狀態的功能。通過流復制,從服務器不斷從主服務器同步相應的數據,

                     同時,從服務器作為主服務器的一個備份。

pg_basebackup:提供一個全量備份。常用來搭建流復制環境。屬於物理備份。邏輯備份工具時pg_dump;

-D:–pgdata=DIRECTORRY,接收備份的目錄
-F:–format=p | t,指定輸出格式,支持p(原樣輸出)或者t(tar格式輸出)
-r:–max-rate=RATE,最大傳輸率(kB/s,或用前綴 k,M)
-R,–write-recovery-conf,備份后寫recovery.conf文件
-s,–slot=SLOTNAME,使用的復制槽
-T:–tablespace-mapping=OLDDIR=NEWDIR,使用NEWDIR替代OLDDIR
-x:–xlog,備份開始后,啟動另一個流復制連接從主庫接收WAL
-X:–xlog-method=fetch| stream
–xlogdir=XLOGDIR
-z:–gzip
-Z:–compress=0-9
–target-gp-dbid:根據給定的dbid創建表空間子目錄
-C,–checkpoint=fast| spread
-l,–label=LABLE:設置backup label
-E,–exclude
–exclude-from=FILE

 

 

一、兩台服務器上分別安裝pg:默認為12版本,路徑:/var/lib/postgresql/12

       1、安裝命令:

                         sudo apt-get install postgresql 

                  或者

                        sudo apt-get install postgresql-12

 

       2、創建系統賬號:

            命令:  sudo su - postgres -c "createuser -s odoo"

                         sudo -u postgres psql

                        alter role odoo with password 'odoo';

            退出方式:最好用\q,這樣會將進程結束掉

            Control +Z 退出 或 \q

 

        3、安裝完成后各目錄說明

             (1) 配置文件config所在目錄 /etc/postgresql/12/main

             (2) 數據文件data所在目錄   /var/lib/postgresql/12/main

              (3) 端口號               5432

              (4) 安裝目錄             /usr/lib/postgresql/12/

 

二、主數據庫【10.14.22.143】配置

          1、使用postgres用戶登陸數據庫,創建復制用戶

               #需要一個賬號進行主從同步

              1.1、登錄: sudo -u postgres psql

             1.2、創建:  postgres=#create role replica login replication encrypted password 'replica';

         

          2、修改認證文件:pg_hba.conf

                添加如下配置:

                         host  all  all  10.14.22..0/16 trust  # 允許連接

                         host replication  replica  10.14.22.0/16 trust # 允許replica用戶復制本機數據

                        

         3、配置 postgrsql.conf

                 配置參數:

                        listen_addresses = '*'   #監聽所有ip

                        archive_mode = on   #開啟歸檔模式

                        archive_command = 'cp %p /var/lib/postgresql/12/main/%f'   #歸檔命令

                         wal_level = replica    # 決定多少信息寫入WAL,此處為replica模式

                         max_wal_senders = 10   #最大流復制連接,一般和從服務相等

                         wal_sender_timeout = 60s    #流復制超時時間

                         max_connections = 100   #最大連接數,必須不大於從庫的配置

                        

         

             4、重啟數據庫:

                       命令:

                              sudo service postgresql restart

                       Or

                               systemctl start postgresql

                     查看狀態:

                             systemctl status postgresql

                      登錄數據庫: sudo -u postgres psql

                     其他命令:

                    查看當前目錄大小:

                                                    du -sh

                                                     ls -aslsh

 

 

 

二、從數據庫【10.14.22.144】配置:

    注意點:Pg13 做主從庫與pg10基本一致,在從庫的配置文件上有所不同Pg12后,棄用了resovery.conf文件,不用配置;

    另外postgresql.auto.conf文件的優先級高於postgresql.conf文件

 

       1、 進入目錄:cd /var/lib/postgresql

               執行basebackup命令

                

                -R 表示自動生成recovery.conf文件,若不加,可以自定義該文件:

                standby_mode = on  #表示該節點是從庫

                primary_conninfo = 'host=172.17.0.2  post=5432  user=replicator  password=12345678'

                ###recovery_target_timelint = 'latest' #說明恢復到最新狀態—— 這一行我刪除了

                

 

               

 

      2、 將復制的data2 替換掉原來的data目錄

              修改配置文件 postgresql.conf

                     cd 進入到: /etc/postgresql/12/main/postgresql.conf

             修改參數:

                     wal_level = hot_standby    #熱備模式

                     max_connections = 200   #最大連接

                     hot_standby = on #說明這台機器不僅用於數據歸檔,還可以用於數據查詢

                     max_standby_streaming_delay = 30s #流備份的最大延遲時間

                     wal_receiver_status_interval = 10s  #向主機匯報本機狀態的間隔時間

                      hot_standby_feedback = on #r出現錯誤復制,向主機反饋

                      

 

三、驗證配置是否成功

            1、在主庫上執行:能看到從庫IP  sudo -u postgres psql

                 

 

 

 

            2、可以在兩台服務器上執行 ps aux | grep postgres 來驗證部署成功

                  

 

              3、通過創建數據庫來驗證:

                    原理是在自主庫上創建數據,然后看從庫是否存在

                   主庫上操作:

                       

 

                   在從庫上查詢

                      

                  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM