pgsql安裝及主從配置
本次環(huán)境:CentOS6.8、pgsql10
主機(jī)master:192.168.137.30
主機(jī)slave:192.168.137.31
1隆嗅、安裝pgsql
從官網(wǎng)現(xiàn)在pgsql10源碼包postgresql-10.4-1-linux-x64-binaries.tar.gz,該包解壓后無需安裝穷遂,初始化數(shù)據(jù)庫后即可直接使用
tar -xzvf postgresql-10.4-1-linux-x64-binaries.tar.gz -C /opt/ #將源碼包解壓到/opt下击你,出現(xiàn)pgsql目錄
useradd postgres #創(chuàng)建普通用戶,pgsql禁止root用戶啟動(dòng)
passwd postgres
chown -R postgres.postgres /opt/pgsql/ #更改pgsql目錄的所屬者
su - postgres #切換到postgres用戶
mkdir /opt/pgsql/data #創(chuàng)建data目錄静袖,使用該目錄來初始化數(shù)據(jù)庫
/opt/pgsql/bin/initdb -D /opt/pgsql/data #初始化數(shù)據(jù)庫
###這時(shí)會(huì)提醒成功,并且可直接運(yùn)行./pg_ctl -D /opt/pgsql/data -l logfile start來啟動(dòng)數(shù)據(jù)庫
ls /opt/pgsql/data #查看是否生成數(shù)據(jù)
###postgresql.conf pgsql配置文件俊扭,內(nèi)容較多队橙,可查閱相關(guān)文檔進(jìn)行修改
###pg_hba.conf pgsql用戶訪問權(quán)限配置文件
/opt/pgsql/bin/postgres -D /opt/pgsql/data #啟動(dòng)pgsql
2、pgsql主從搭建
master(192.168.137.30):
/opt/pgsql/bin/psql postgres #登錄本地?cái)?shù)據(jù)庫
create role replicator login replication password 'wang123';#創(chuàng)建備份用戶及密碼
vi /opt/pgsql/data/postgres.conf #修改配置文件,此處僅列出本次必要配置
????wal_level = hot_standby? #這個(gè)是設(shè)置主為wal的主機(jī)
????max_wal_senders = 32 #設(shè)置可以最多有幾個(gè)流復(fù)制連接捐康,有幾個(gè)從仇矾,就設(shè)置幾個(gè)
????wal_keep_segments = 256 #設(shè)置流復(fù)制保留的最多的xlog數(shù)目
????wal_sender_timeout = 60s #設(shè)置流復(fù)制主機(jī)發(fā)送數(shù)據(jù)的超時(shí)時(shí)間
????max_connections = 100 #這個(gè)設(shè)置要注意下,從庫的max_connections必須要大于主庫的
vi /opt/pgsql/data/pg_hba.conf #修改控制用戶登錄權(quán)限的文件
????host replication replicator 192.168.137.31/32 md5 #增加允許slave主機(jī)的ip地址以replicator用戶身份訪問
重啟pgsql服務(wù)
slave(192.168.137.31):
解壓pgsql源碼包文件至/opt下
mkdir data
/opt/pgsql/bin/pg_basebackup -F p --progress -D /opt/pgsql/data -h 192.168.137.30 -p 5432 -U replicator --password
#執(zhí)行該命令解总,slave會(huì)去master上拷貝data目錄至本地data目錄下
vi recovery.conf #編寫復(fù)制用配置文件
????standby_mode = on? #聲明這臺(tái)機(jī)器為從庫
????primary_conninfo = 'host=192.168.137.30 port=5432 user=replicator password=wang123' #指定master對(duì)應(yīng)主庫的信息
????recovery_target_timeline = 'latest' #指定流復(fù)制同步到最新的數(shù)據(jù)
vi postgres.conf
????max_connections = 1000 #一般查多于寫的應(yīng)用贮匕,從庫的最大連接數(shù)要設(shè)置大一些
????hot_standby = on? #說明這臺(tái)機(jī)器不僅僅是用于數(shù)據(jù)歸檔,也用于數(shù)據(jù)查詢
????max_standby_streaming_delay = 30s #數(shù)據(jù)流備份的最大延遲時(shí)間
????wal_receiver_status_interval = 10s #從每次數(shù)據(jù)復(fù)制都會(huì)向主報(bào)告狀態(tài)花枫,這里只是設(shè)置最長的間隔時(shí)間
????hot_standby_feedback = on #如果有錯(cuò)誤的數(shù)據(jù)復(fù)制刻盐,是否向主進(jìn)行反饋
/opt/pgsql/bin/postgres -D /opt/pgsql/data #啟動(dòng)pgsql
驗(yàn)證主從是否搭建成功
master:
ps -elf|grep postgres
postgres: wal sender process replica #主庫出現(xiàn)發(fā)送wal的進(jìn)程
登錄數(shù)據(jù)庫
select * from pg_stat_replication; #顯示sender進(jìn)程信息
create database ceshi; #創(chuàng)建一個(gè)庫,查看從庫是否同步
slave:
ps -elf|grep postgres
postgres: wal receiver process #從庫出現(xiàn)接受wal進(jìn)程
登錄數(shù)據(jù)庫
\l #查看是否生成ceshi庫