Postgresql數據庫主從備份教程


數據庫主從熱備

數據庫安裝

1.安裝yum源

????打開https://yum.postgresql.org/repopackages.php ,找到自己需要的版本,右鍵復制鏈接地址。


????不放心是否復制成功的話可以粘貼出來看看。

????以root模式進入CentOS7,輸入:yum install + 剛剛復制的鏈接

????回車。


????輸入:y,回車。


2.安裝PostgreSQL

????輸入:yum install -y postgresql94-server postgresql94-contrib

????回車。(如果使用其他版本的PostgreSQL則需要把其中的兩個94換成對應的數字)

????輸入y,回車。


????輸入:/usr/pgsql-9.4/bin/postgresql94-setup initdb

????回車,初始化數據庫。(如果使用其他版本的PostgreSQL則需要把其中的9.4和94換成對應的數字)


????(如果未安裝firewalld防火墻可跳過下面兩步)

????輸入:firewall-cmd --add-service=postgresql --permanent

????回車,開放防火墻。

????輸入:firewall-cmd –reload

????回車,重啟防火墻。

3. 修改默認PostgreSQL用戶密碼

????PostgreSQL安裝后會創建一個用戶,名為postgres。

????輸入:su – postgres

????回車,切換至用戶。

????輸入:psql -U postgres

????回車,登錄數據庫。

????輸入:ALTER USER postgres with encrypted password ‘abc123’;

????(不要漏了“;”)回車,設置默認用戶postgre的密碼,此處密碼為abc123,可自行修改。

????輸入:\q

????回車, 退出數據庫。

????輸入:exit

????回車,退出用戶。


4. 配置遠程訪問

????輸入:vi /var/lib/pgsql/9.4/data/postgresql.conf

????回車,進入文檔內容。(如果使用其他版本的PostgreSQL則需要把其中的9.4換成對應的版本)

????光標下翻,找到listen_addresses。


????按 i 鍵進入“插入編輯模式”,去掉“listen_address”前面的 #,使該配置參數起效

????如果想對所有IP開放,則將 localhost 改為 * 即可

????如果想僅對部分IP開放,多個IP之間用 , (逗號+空格)隔開。


????編輯完成后,按Esc鍵,輸入::wq

????回車,“保存退出”文檔。

????輸入:vi /var/lib/pgsql/9.4/data/pg_hba.conf

????回車,進入文檔內容。(如果使用其他版本的PostgreSQL則需要把其中的9.4換成對應的版本)

????將光標移至底部。


????按 i 鍵進入“插入編輯模式”,在IPv4 local connections下方添加允許連接的IP。

????如果想允許所有IPv4地址,則加入一行:host all all 0.0.0.0/0 md5

????IPv6方法類似。


????編輯完成后,按Esc鍵,輸入::wq

????回車,“保存退出”文檔。

????輸入:systemctl restart postgresql-9.4.service

????回車,重啟postgressql服務。(如果使用其他版本的PostgreSQL則需要把其中的9.4換成對應的? ?版????本)

????此時postgreSQL數據庫安裝成功,用可視化工具連接一下吧。


PostgreSQL主從流復制部署

172.16.125.201 部署主服務器

?172.16.125.200 部署從服務器

主服務器配置

????1.首先需要創建一個數據庫用戶進行主從同步。創建用戶replica,并賦予登錄和復制的權限。

????輸入:su – postgres

????回車,切換至用戶。

????輸入:psql -U postgres

????回車,登錄數據庫。

????輸入:CREATE ROLE replica login replication encrypted password ‘replica’;

????2.修改pg_hba.conf,允許replica用戶來同步。

????輸入:vi /var/lib/pgsql/9.4/data/pg_hba.conf

????回車,進入文檔內容。

????按 i 鍵進入“插入編輯模式”,在IPv4 local connections下方增加兩行配置。

????允許200連接到主服務器:

????host all all 172.16.125.200/32 trust

????允許200使用replica用戶來復制:

????host replication replica 172.16.125.200/32 md5

????如果不明白,技術文檔支持


編輯完成后,按Esc鍵,輸入::wq

回車,“保存退出”文檔。

3.修改postgresql.conf

????輸入:vi /var/lib/pgsql/9.4/data/postgresql.conf

????回車,進入文檔內容。

????按 i 鍵進入“插入編輯模式”,修改以下配置。

????監聽所有IP:

????listen_addresses = ‘*’

????允許歸檔:

????archive_mode = on

????用該命令來歸檔logfile segment:

????archive_command = ‘cp %p /opt/pgsql/pg_archive/%f’

????wal_level = hot_standby

????這個設置了可以最多有幾個流復制連接,差不多有幾個從,就設置幾個:

????max_wal_senders = 2

????設置流復制保留的最多的xlog數目:

????wal_keep_segments = 256

????設置流復制主機發送數據的超時時間:

????wal_sender_timeout = 60s

????這個設置要注意下,從庫的max_connections必須要大于主庫的:

????max_connections = 100


????編輯完成后,按Esc鍵,輸入::wq

????回車,“保存退出”文檔。

????輸入:systemctl restart postgresql-9.4.service

????回車,重啟postgressql服務。

????4.測試201能否連接200數據庫。在201上運行如下命令:

????輸入:psql -h 172.16.125.200 -U postgres

????回車,然后輸入200數據庫的密碼

????回車,連接上200數據庫


從服務器配置

1.從主節點拷貝數據到從節點

????輸入:su - postgres

????回車,切換至用戶

????輸入:rm -rf /var/lib/pgsql/9.4/data/*

????回車,將data目錄下的數據都清空

????輸入:pg_basebackup -h 172.16.125.201 -U replica –D /var/lib/pgsql/9.4/data -X stream -P

????回車,從201拷貝數據到201(基礎備份)


????輸入:mkdir /opt/pgsql

????回車,創建pgsql文件夾

????輸入:mkdir /opt/pgsql/pg_archive

????回車,創建pg_archive文件夾


? ? 2.配置recovery.conf

????輸入:

????cp /usr/pgsql-9.4/share/recovery.conf.sample /var/lib/pgsql/9.4/data/recovery.conf

????回車,復制recovery.conf


????輸入:vi /var/lib/pgsql/9.4/data/recovery.conf

????回車,進入文檔內容。

????按 i 鍵進入“插入編輯模式”,修改以下配置。

????表明該節點是從服務器:

????standby_mode = on

? ? 主服務器的信息以及連接的用戶:

????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

????回車,進入文檔內容。

????按 i 鍵進入“插入編輯模式”,修改以下配置。

????wal_level = hot_standby

????一般查多于寫的應用從庫的最大連接數要比較大:

????max_connections = 1000

????說明這臺機器不僅僅是用于數據歸檔,也用于數據查詢:

????hot_standby = on

????數據流備份的最大延遲時間:

????max_standby_streaming_delay = 30s

????多久向主報告一次從的狀態,設置最長的間隔時間:

????wal_receiver_status_interval = 10s

????如果有錯誤的數據復制,是否向主進行反饋:

????hot_standby_feedback = on


????編輯完成后,按Esc鍵,輸入::wq

????回車,“保存退出”文檔。

????輸入:systemctl restart postgresql-9.4.service

????回車,重啟postgressql服務。

????至此,PostgreSQL主從流復制安裝部署完成,用可視化工具測試一下吧。

????在主服務器(201)上插入數據或刪除數據,

????在從服務器(200)上能看到相應的變化。

????從服務器(200)上只能查詢,不能插入或刪除。


?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容