時間:2024-03-08 08:50作者:下載吧人氣:17
前言
數(shù)據(jù)庫的備份工作在日常生產(chǎn)中極為重要,如果你咨詢一個DBA如何才能設計出高可用的數(shù)據(jù)備份與恢復方案,相信很多人都會從架構上給出很多容災的意見。但歸根到底,如果業(yè)務環(huán)節(jié)中數(shù)據(jù)庫還牽涉到分布式環(huán)境,我認為一個好的方案需要達到三大要求:
日常架構設計中,我們不僅要保證數(shù)據(jù)額的成功備份,還要保證備份的數(shù)據(jù)可以快速恢復。在眾多備份恢復可靠性方案中 主從復制 技術,可以說是最常見的實現(xiàn),本文主要是介紹postgresql主備數(shù)據(jù)庫的異步流復制的環(huán)境搭建與主備切換的操作實踐,除了能把一些基礎的原理運用在日常的數(shù)據(jù)庫運維中,也可以加深對Postgresql數(shù)據(jù)庫的底層知識了解。
postgres在9.0之后引入了主從的流復制機制,所謂流復制,就是從服務器通過tcp流從主服務器中同步相應的數(shù)據(jù)。這樣當主服務器數(shù)據(jù)丟失時從服務器中仍有備份。
與基于文件日志傳送相比,流復制允許保持從服務器更新。 從服務器連接主服務器,其產(chǎn)生的流WAL記錄到從服務器, 而不需要等待主服務器寫完WAL文件。
PostgreSQL流復制默認是異步的。在主服務器上提交事務和從服務器上變化可見之間有一個小的延遲,這個延遲遠小于基于文件日志傳送,通常1秒能完成。如果主服務器突然崩潰,可能會有少量數(shù)據(jù)丟失。
同步復制必須等主服務器和從服務器都寫完WAL后才能提交事務。這樣在一定程度上會增加事務的響應時間。
下面的學習與實踐主要針對PostgreSQL的異步流復制(本文沒有涉及到同步復制、邏輯復制等,如果大家想了解其它的備份方案,可以閱讀相關官方文檔或其他資料介紹)。
異步流復制的中心思想是:主庫上提交事務時不需要等待備庫接收WAL日志流并寫入到備庫WAL日志文件時便返回成功,因此異步流復制的TPS會相對同步流復制要高,延遲更低。
環(huán)境準備
操作系統(tǒng) | 服務器IP | 節(jié)點名稱 | 角色 |
---|---|---|---|
centos 7.2 | 172.17.0.2 | pghost1 | 主庫 |
centos 7.2 | 172.17.0.5 | pghost2 | 備庫 |
主要目錄規(guī)范:
要注意的是:編譯安裝Pg我們使用的是root賬戶,但是一般情況下,我們對數(shù)據(jù)庫的部署操作等應該使用非root的pg超級管理員賬戶,所以需要我們預先創(chuàng)建相關用戶和目錄,并設置相關權限:
$ groupadd postgres $ useradd postgres -g postgres $ passwd postgres $ mkdir -p /data/pg10/pg_root $ mkdir -p /data/pg10/tbs $ chown -R postgres:postgres /data/pg10
網(wǎng)友評論