環境: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