国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PostgreSQL10 一主多從 安裝實踐

IT那活兒 / 1268人閱讀
PostgreSQL10 一主多從 安裝實踐
[
1、環境
]

主機

操作系統

IP

數據庫

角色

同步方式

pg01

CentOS7.7

192.168.137.200

PostgreSQL10.10

-

pg02

CentOS7.7

192.168.137.201

PostgreSQL10.10

同步

pg03

CentOS7.7

192.168.137.202

PostgreSQL10.10

異步

所有主機已安裝好PostgreSQL數據庫軟件。


[
2、主從配置
]


2.1、主節點配置

初始化數據庫

initdb -D $PGDATA -E UTF8 --locale=C -U postgres –W


日志:

The files belonging to this database system will be owned by user "postgres".

This user must also own the server process.


The database cluster will be initialized with locale "C".

The default text search configuration will be set to "english".


Data page checksums are disabled.


Enter new superuser password:

Enter it again:


creating directory /pgsql/pgsql/data ... ok

creating subdirectories ... ok

selecting default max_connections ... 100

selecting default shared_buffers ... 128MB

selecting default timezone ... Asia/Shanghai

selecting dynamic shared memory implementation ... posix

creating configuration files ... ok

running bootstrap script ... ok

performing post-bootstrap initialization ... ok

syncing data to disk ... ok


WARNING: enabling "trust" authentication for local connections

You can change this by editing pg_hba.conf or using the option -A, or

--auth-local and --auth-host, the next time you run initdb.


Success. You can now start the database server using:


pg_ctl -D /pgsql/pgsql/data -l logfile start


2.2、修改配置文件

vi $PGDATA/postgresql.conf


listen_addresses   = *       # 監聽所有ip

port              = 5432      # 監聽端口

wal_level          = replica   # 該級別支持wal歸檔和復制

max_wal_senders    = 10        # 并發的從庫數量, 發送 wal 進程數

wal_keep_segments  = 256       # 默認是0,代表主庫wal日志文件保存的個數,

# 可以防止主庫生成日志太快而被覆蓋的情況發生

wal_sender_timeout = 60s       # 流復制超時時間, 發送 wal 日志超時時間

max_connections    = 100       # 最大連接數

hot_standby        = on        # 設置為備庫時是否支持可讀

archive_mode       = on        # 開啟歸檔模式

archive_command    = cp %p $PGDATA/pg_archive/%f  # 歸檔動作

synchronous_standby_names = pg02   # 指定備庫 pg02 為同步流復制


vi $PGDATA/pg_hba.conf

host    replication     repl           192.168.137.0/24        md5


創建歸檔目錄

mkdir$PGDATA/pg_archive


2.3、啟動數據庫

pg_ctl -D $PGDATA -l $PGDATA/logfile start

waiting for server to start.... done

server started


查看日志

cat$PGDATA/logfile


查看進程

ps-ef | grep postgres


2.4、創建復制賬戶

psql

CREATE ROLE repl LOGIN REPLICATION PASSWORD Yike_repl;


發現命令hang住

Ctrl+C

取消后發現報錯如下

因為配置文件里指定了pg02為同步流復制,但是pg02還不可用,所以報錯。


雖然取消了,但是用戶已經創建成功。


2.5、配置密碼文件


vi ~/.pgpass

192.168.137.200:5432:replication:repl:Yike_repl

192.168.137.201:5432:replication:repl:Yike_repl

192.168.137.202:5432:replication:repl:Yike_repl


chmod 600 ~/.pgpass



[
3、從庫配置
]


3.1、配置pg02從庫(同步)

復制主庫

pg_basebackup -h 192.168.137.200 -p 5432 -U repl -F p -P -X s -R -D $PGDATA

Password:


配置recovery.conf

vi $PGDATA/recovery.conf


standby_mode = on

primary_conninfo = host=192.168.137.200 port=5432 user=repl application_name=pg02

recovery_target_timeline = latest


配置postgresql.conf

vi $PGDATA/postgresql.conf


#synchronous_standby_names = pg02


配置密碼文件

vi ~/.pgpass

192.168.137.200:5432:replication:repl:Yike_repl

192.168.137.201:5432:replication:repl:Yike_repl

192.168.137.202:5432:replication:repl:Yike_repl


chmod 600 ~/.pgpass


啟動pg02備庫

pg_ctl -D $PGDATA -l $PGDATA/logfile start


主庫查詢:

select pid, usename, client_addr, client_port, sync_state from pg_stat_replication;


從庫已經成功連接到主庫,同步方式為sync


主庫創建測試表,發現不會再hang住了


從庫查看t1表


3.2、配置pg03從庫(異步)

步驟同3.1相同

pg_basebackup -h 192.168.137.200 -p 5432 -U repl -F p -P -X s -R -D $PGDATA

Password:

122783/122783 kB (100%), 1/1 tablespace


vi $PGDATA/recovery.conf


standby_mode = on

primary_conninfo = host=192.168.137.200 port=5432 user=repl application_name=pg03

recovery_target_timeline = latest


vi $PGDATA/postgresql.conf


#synchronous_standby_names = pg02


vi ~/.pgpass

192.168.137.200:5432:replication:repl:Yike_repl

192.168.137.201:5432:replication:repl:Yike_repl

192.168.137.202:5432:replication:repl:Yike_repl


chmod 600 ~/.pgpass


pg_ctl -D $PGDATA -l $PGDATA/logfile start


psql

dt t1


主庫查詢發現兩個從庫都已連接到主庫


[
4、主從切換
]


PostgreSQL是通過PGDATA目錄下的recovery.conf文件確定主從角色的,啟動時如果存在該文件,則會以從庫角色啟動,不存在則以主庫角色啟動。主從切換后,新從庫的recovery.conf文件會自動重命名為recovery.done。


4.1、角色確認

pg_controldata $PGDATA | grep state


pg01:


pg02:


pg03:


當前pg01 為主庫,pg02、pg03為從庫


4.2、模擬主庫故障

pg01執行

pg_ctl -D $PGDATA stop

waiting for server to shut down..... done

server stopped


此時從庫日志報錯



4.3、提升pg02為主庫

pg02執行

pg_ctl -D $PGDATA promote


pg_controldata $PGDATA | grep state


角色已切換從主庫

recovery文件已自動重命名


4.4、pg03指向新主庫

修改recovery文件

vi $PGDATA/recovery.conf

standby_mode = on

primary_conninfo = host=192.168.137.201 port=5432 user=repl application_name=pg03

recovery_target_timeline = latest


重啟數據庫

pg_ctl -D $PGDATA -l $PGDATA/logfile restart


日志不再報錯


pg02執行:

select pid, usename, client_addr, client_port, sync_state from pg_stat_replication;


pg03已經連接到新主庫


4.5、原主庫重建為從庫(同步)

修改原主庫參數

vi $PGDATA/postgresql.conf

#synchronous_standby_names = pg02


編輯recover文件

vi $PGDATA/recovery.conf


standby_mode = on

primary_conninfo = host=192.168.137.201 port=5432 user=repl application_name=pg01

recovery_target_timeline = latest


修改新庫參數

vi $PGDATA/postgresql.conf

synchronous_standby_names = pg01


pg_ctl –D $PGDATA reload


select pid, usename, client_addr, client_port, sync_state from pg_stat_replication;

主庫查詢發現兩個從庫都已連接到主庫

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/130106.html

相關文章

  • 面試官:咱們來聊一聊mysql主從延遲

    摘要:編輯器編輯器背景編輯器前段時間遇到一個線上問題,后來排查好久發現是因為主從同步延遲導致的,所以今天寫一篇文章總結一下這個問題希望對你有用。編輯器幾句嘮叨編輯器大家好,我是小飯,一枚后端工程師。背景前段時間遇到一個線上問題,后來排查好久發現是因為主從同步延遲導致的,所以今天寫一篇文章總結一下這個問題希望對你有用。如果覺得還不錯,記得加個關注點個贊哦思維導圖思維導圖常見的主從架構隨著日益增長的訪...

    EasonTyler 評論0 收藏0
  • HotFrameLearning Redis_01_簡介

    摘要:收到后則會調用指令一個子進程來持久化存儲的數據,在的持久化的這個短短期間內,的指令則存儲到內存中。經過官網的測試性能結果達到的。 HotFrameLearning Redis_01_簡介 - 一、大致介紹 1、介紹Redis之前,我有一堆的疑問,Redis是什么?有什么用?它能干什么?有什么特性?能解決我們日常的哪些問題? 為什么要用Redis?Redis好在哪里?除了Redis...

    focusj 評論0 收藏0
  • Yii2 數據庫復制和讀寫分離

    摘要:前言許多數據庫支持數據庫復制來獲得更好的數據庫可用性,以及更快的服務器響應時間,減少數據庫的壓力。通過數據庫復制功能,數據從所謂的主服務器被復制到從服務器。 前言 許多數據庫支持數據庫復制來獲得更好的數據庫可用性,以及更快的服務器響應時間,減少數據庫的壓力。通過數據庫復制功能,數據從所謂的主服務器被復制到從服務器。主服務器做增刪改,而從服務器做查詢。 讀寫分離前提條件:linux數據庫...

    William_Sang 評論0 收藏0

發表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<