pgsql主從搭建

環境:Linux   sql

pqsql版本:9.0及以上數據庫


主庫:vim

安裝bash

一、下載包源碼安裝,./configure  --prefix=/usr/local/pgsql;make;make installtcp

二、啓動數據庫post

>1  建立用戶postgresspa

useradd  postgresrest

echo "postgres" |passwd --stdin "postgres"postgresql

2> 建立pgsql的數據目錄
orm

mkdir -p /data/pgsql/data

chown  postgres:postgres /data/pgsql/data

3> 添加環境變量,我這裏添加的是全局的,若是是想在本身的我的用戶裏面,修改對應家目錄的文件~./bashrc

vim /etc/profile

export  PATH=/usr/local/pgsql/bin:$PATH

export  PGDATD=/data/pgsql/data

而後source  /etc/profile 使其生效,若是能直接打出好比 post 能自動補全postgres,說明變量生效以及設置成功

4> 初始化數據庫,產生一下基礎文件

/usr/local/pgsql/bin/initdb –D /data/pgsql/data

>  啓動服務

/usr/local/pgsql/postgres –I  -D /data/pgsql/data start &

這裏加上-i 的意思是容許客戶端進行tcp/ip的鏈接

至此pgsql 安裝啓動完畢,能夠本地鏈接,看下服務是否正常,作主從前確保自己能正常啓動和建立


主從配置主:

一、vim /data/pgsql/data/pg_hda.conf  :針對某一個主機,增長一個認證帳號

host    replication     replica     10.68.4.161/32                 md5

首先鏈接pgsql,psql -d  dbname -U username

CREATE ROLE replica login replication encrypted password 'replica'

二、主庫得建立這個帳號,必須是超級用戶

createuser  -a -d -e -P replica 

若是以前已經建立,能夠刪除  dropuser -i -e  replica

至於查看這個用戶是不是超級用戶,能夠先隨便鏈接一個數據庫進入查看

psql -d postgres -U postgre 

\du

三、vim  postgresql.conf

wal_level = hot_standby  # 這個是設置主爲wal的主機

max_wal_senders = 32 # 這個設置了能夠最多有幾個流複製鏈接,差很少有幾個從,就設置幾個

wal_keep_segments = 256 # 設置流複製保留的最多的xlog數目

wal_sender_timeout = 60s # 設置流複製主機發送數據的超時時間

max_connections = 100 # 這個設置要注意下,從庫的max_connections必需要大於主庫的  


四、pg_ctl  restart  重啓pgsql 服務


主從配置從:

一、安裝與主同樣,惟一啓動的時候不要出事話,已備份機的方式啓動

pg_basebackup -F -p --progress -D /data2/pgsql/data2 -h 10.68.4.60 -U replica --password   回車以後,輸入用戶密碼便可

二、啓動成功以後,檢查數據目錄是否已經存在主庫那邊的全部目錄文件,而且運行次命令

cp /usr/local/pgsql/share/recovery.conf.sample  /data2/pgsql/data2/recovery.conf

vim  recovery.conf

standby_mode = on  # 這個說明這臺機器爲從庫

primary_conninfo = 'host=10.12.12.10 port=5432 user=replica password=replica'  # 這個說明這臺機器對應主庫的信息

recovery_target_timeline = 'latest' # 這個說明這個流複製同步到最新的數據

三、

vim postgresql.conf

max_connections = 1000 # 通常查多於寫的應用從庫的最大鏈接數要比較大,***這裏把同步過來的主的註釋掉

hot_standby = on  # 說明這臺機器不只僅是用於數據歸檔,也用於數據查詢

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

wal_receiver_status_interval = 1s  # 多久向主報告一次從的狀態,固然從每次數據複製都會向主報告狀態,這裏只是設置最長的間隔時間

hot_standby_feedback = on # 若是有錯誤的數據複製,是否向主進行反饋


四、啓動pgsql

su  postgres

pg_ctl start

若是報權限有問題,那是由於數據權限有問題,必須是0700,而咱們這個是同步過來,非初始化的,全部可能權限不太對

chmod 700 -R ./* 

再次啓動應該ok


五、校驗

ps aux |grep postgre (以哪一個用戶啓動就過濾它)

主庫上面是否存在sender process 進程

從庫上面是否存在receive process 進程

查看基本的配置信息:select * from pg_stat_replication;


六、建庫和 表作校驗,是否能正常實時同步

createdb  xueyuan

psql -d xueyuan -U postgres 

#create table classes(pid integer,pname varchar(32),constraint zhongwc_pid_pk primary key(pid)); 刪除表:drop table classes

插入數據

insert into classes (id,number,name) values

相關文章
相關標籤/搜索