數(shù)據(jù)庫(kù)主從熱備
數(shù)據(jù)庫(kù)安裝
1.安裝yum源
????打開(kāi)https://yum.postgresql.org/repopackages.php ,找到自己需要的版本茵汰,右鍵復(fù)制鏈接地址骂澄。
????不放心是否復(fù)制成功的話可以粘貼出來(lái)看看个唧。
????以root模式進(jìn)入CentOS7婉称,輸入:yum install + 剛剛復(fù)制的鏈接
????回車攘乒。
????輸入:y贤牛,回車。
2.安裝PostgreSQL
????輸入:yum install -y postgresql94-server postgresql94-contrib
????回車则酝。(如果使用其他版本的PostgreSQL則需要把其中的兩個(gè)94換成對(duì)應(yīng)的數(shù)字)
????輸入y殉簸,回車。
????輸入:/usr/pgsql-9.4/bin/postgresql94-setup initdb
????回車沽讹,初始化數(shù)據(jù)庫(kù)般卑。(如果使用其他版本的PostgreSQL則需要把其中的9.4和94換成對(duì)應(yīng)的數(shù)字)
????(如果未安裝firewalld防火墻可跳過(guò)下面兩步)
????輸入:firewall-cmd --add-service=postgresql --permanent
????回車,開(kāi)放防火墻妥泉。
????輸入:firewall-cmd –reload
????回車椭微,重啟防火墻。
3. 修改默認(rèn)PostgreSQL用戶密碼
????PostgreSQL安裝后會(huì)創(chuàng)建一個(gè)用戶盲链,名為postgres蝇率。
????輸入:su – postgres
????回車迟杂,切換至用戶。
????輸入:psql -U postgres
????回車本慕,登錄數(shù)據(jù)庫(kù)排拷。
????輸入:ALTER USER postgres with encrypted password ‘a(chǎn)bc123’;
????(不要漏了“;”)回車,設(shè)置默認(rèn)用戶postgre的密碼锅尘,此處密碼為abc123监氢,可自行修改。
????輸入:\q
????回車藤违, 退出數(shù)據(jù)庫(kù)浪腐。
????輸入:exit
????回車,退出用戶顿乒。
4. 配置遠(yuǎn)程訪問(wèn)
????輸入:vi /var/lib/pgsql/9.4/data/postgresql.conf
????回車议街,進(jìn)入文檔內(nèi)容。(如果使用其他版本的PostgreSQL則需要把其中的9.4換成對(duì)應(yīng)的版本)
????光標(biāo)下翻璧榄,找到listen_addresses特漩。
????按 i 鍵進(jìn)入“插入編輯模式”,去掉“l(fā)isten_address”前面的 #骨杂,使該配置參數(shù)起效
????如果想對(duì)所有IP開(kāi)放涂身,則將 localhost 改為 * 即可
????如果想僅對(duì)部分IP開(kāi)放,多個(gè)IP之間用 , (逗號(hào)+空格)隔開(kāi)搓蚪。
????編輯完成后蛤售,按Esc鍵,輸入::wq
????回車妒潭,“保存退出”文檔悍抑。
????輸入:vi /var/lib/pgsql/9.4/data/pg_hba.conf
????回車,進(jìn)入文檔內(nèi)容杜耙。(如果使用其他版本的PostgreSQL則需要把其中的9.4換成對(duì)應(yīng)的版本)
????將光標(biāo)移至底部。
????按 i 鍵進(jìn)入“插入編輯模式”拂盯,在IPv4 local connections下方添加允許連接的IP佑女。
????如果想允許所有IPv4地址,則加入一行:host all all 0.0.0.0/0 md5
????IPv6方法類似谈竿。
????編輯完成后团驱,按Esc鍵,輸入::wq
????回車空凸,“保存退出”文檔嚎花。
????輸入:systemctl restart postgresql-9.4.service
????回車,重啟postgressql服務(wù)呀洲。(如果使用其他版本的PostgreSQL則需要把其中的9.4換成對(duì)應(yīng)的? ?版????本)
????此時(shí)postgreSQL數(shù)據(jù)庫(kù)安裝成功紊选,用可視化工具連接一下吧啼止。
PostgreSQL主從流復(fù)制部署
172.16.125.201 部署主服務(wù)器
?172.16.125.200 部署從服務(wù)器
主服務(wù)器配置
????1.首先需要?jiǎng)?chuàng)建一個(gè)數(shù)據(jù)庫(kù)用戶進(jìn)行主從同步。創(chuàng)建用戶replica兵罢,并賦予登錄和復(fù)制的權(quán)限献烦。
????輸入:su – postgres
????回車,切換至用戶卖词。
????輸入:psql -U postgres
????回車巩那,登錄數(shù)據(jù)庫(kù)。
????輸入:CREATE ROLE replica login replication encrypted password ‘replica’;
????2.修改pg_hba.conf此蜈,允許replica用戶來(lái)同步即横。
????輸入:vi /var/lib/pgsql/9.4/data/pg_hba.conf
????回車,進(jìn)入文檔內(nèi)容裆赵。
????按 i 鍵進(jìn)入“插入編輯模式”东囚,在IPv4 local connections下方增加兩行配置。
????允許200連接到主服務(wù)器:
????host all all 172.16.125.200/32 trust
????允許200使用replica用戶來(lái)復(fù)制:
????host replication replica 172.16.125.200/32 md5
????如果不明白顾瞪,技術(shù)文檔支持
編輯完成后舔庶,按Esc鍵,輸入::wq
回車陈醒,“保存退出”文檔惕橙。
3.修改postgresql.conf
????輸入:vi /var/lib/pgsql/9.4/data/postgresql.conf
????回車,進(jìn)入文檔內(nèi)容钉跷。
????按 i 鍵進(jìn)入“插入編輯模式”弥鹦,修改以下配置。
????監(jiān)聽(tīng)所有IP:
????listen_addresses = ‘*’
????允許歸檔:
????archive_mode = on
????用該命令來(lái)歸檔logfile segment:
????archive_command = ‘cp %p /opt/pgsql/pg_archive/%f’
????wal_level = hot_standby
????這個(gè)設(shè)置了可以最多有幾個(gè)流復(fù)制連接爷辙,差不多有幾個(gè)從彬坏,就設(shè)置幾個(gè):
????max_wal_senders = 2
????設(shè)置流復(fù)制保留的最多的xlog數(shù)目:
????wal_keep_segments = 256
????設(shè)置流復(fù)制主機(jī)發(fā)送數(shù)據(jù)的超時(shí)時(shí)間:
????wal_sender_timeout = 60s
????這個(gè)設(shè)置要注意下,從庫(kù)的max_connections必須要大于主庫(kù)的:
????max_connections = 100
????編輯完成后膝晾,按Esc鍵栓始,輸入::wq
????回車,“保存退出”文檔血当。
????輸入:systemctl restart postgresql-9.4.service
????回車幻赚,重啟postgressql服務(wù)。
????4.測(cè)試201能否連接200數(shù)據(jù)庫(kù)臊旭。在201上運(yùn)行如下命令:
????輸入:psql -h 172.16.125.200 -U postgres
????回車落恼,然后輸入200數(shù)據(jù)庫(kù)的密碼
????回車,連接上200數(shù)據(jù)庫(kù)
從服務(wù)器配置
1.從主節(jié)點(diǎn)拷貝數(shù)據(jù)到從節(jié)點(diǎn)
????輸入:su - postgres
????回車离熏,切換至用戶
????輸入:rm -rf /var/lib/pgsql/9.4/data/*
????回車佳谦,將data目錄下的數(shù)據(jù)都清空
????輸入:pg_basebackup -h 172.16.125.201 -U replica –D /var/lib/pgsql/9.4/data -X stream -P
????回車,從201拷貝數(shù)據(jù)到201(基礎(chǔ)備份)
????輸入:mkdir /opt/pgsql
????回車滋戳,創(chuàng)建pgsql文件夾
????輸入:mkdir /opt/pgsql/pg_archive
????回車钻蔑,創(chuàng)建pg_archive文件夾
? ? 2.配置recovery.conf
????輸入:
????cp /usr/pgsql-9.4/share/recovery.conf.sample /var/lib/pgsql/9.4/data/recovery.conf
????回車啥刻,復(fù)制recovery.conf
????輸入:vi /var/lib/pgsql/9.4/data/recovery.conf
????回車,進(jìn)入文檔內(nèi)容矢棚。
????按 i 鍵進(jìn)入“插入編輯模式”郑什,修改以下配置。
????表明該節(jié)點(diǎn)是從服務(wù)器:
????standby_mode = on
? ? 主服務(wù)器的信息以及連接的用戶:
????primary_conninfo = ‘host=172.16.125.201 port=5432 user=replica password=replica’
????recovery_target_timeline = ‘latest’
????編輯完成后蒲肋,按Esc鍵蘑拯,輸入::wq
????回車,“保存退出”文檔兜粘。
????3.配置postgresql.conf
????輸入:vi /var/lib/pgsql/9.4/data/postgresql.conf
????回車申窘,進(jìn)入文檔內(nèi)容。
????按 i 鍵進(jìn)入“插入編輯模式”孔轴,修改以下配置剃法。
????wal_level = hot_standby
????一般查多于寫(xiě)的應(yīng)用從庫(kù)的最大連接數(shù)要比較大:
????max_connections = 1000
????說(shuō)明這臺(tái)機(jī)器不僅僅是用于數(shù)據(jù)歸檔,也用于數(shù)據(jù)查詢:
????hot_standby = on
????數(shù)據(jù)流備份的最大延遲時(shí)間:
????max_standby_streaming_delay = 30s
????多久向主報(bào)告一次從的狀態(tài)路鹰,設(shè)置最長(zhǎng)的間隔時(shí)間:
????wal_receiver_status_interval = 10s
????如果有錯(cuò)誤的數(shù)據(jù)復(fù)制贷洲,是否向主進(jìn)行反饋:
????hot_standby_feedback = on
????編輯完成后,按Esc鍵晋柱,輸入::wq
????回車优构,“保存退出”文檔。
????輸入:systemctl restart postgresql-9.4.service
????回車雁竞,重啟postgressql服務(wù)钦椭。
????至此,PostgreSQL主從流復(fù)制安裝部署完成碑诉,用可視化工具測(cè)試一下吧彪腔。
????在主服務(wù)器(201)上插入數(shù)據(jù)或刪除數(shù)據(jù),
????在從服務(wù)器(200)上能看到相應(yīng)的變化进栽。
????從服務(wù)器(200)上只能查詢德挣,不能插入或刪除。