添加RPM
yum install https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-7-x86_64/pgdg-centos95-9.5-3.noarch.rpm
安裝PostgreSQL 9.5
yum install postgresql95-server postgresql95-contrib
初始化數據庫
/usr/pgsql-9.5/bin/postgresql95-setup initdb
開機啟動
systemctl enable postgresql-9.5.service
啟動數據庫服務
systemctl start postgresql-9.5.service
查詢版本
psql --version
修改用戶密碼
su - postgres psql -U postgres ALTER USER postgres WITH PASSWORD '123456' \q
postgresql9.5主從復制
系統版本 |
主機名 |
IP地址 |
postgresql版本 |
角色 |
centos7.6 |
postgresql-master |
192.168.216.130 |
9.5.18 |
主庫 |
centos7.6 |
postgresql-slave |
192.168.216.129 |
9.5.18 |
從庫 |
說明:兩台服務器都已經提前用yum方式安裝好了postgresql 9.5,注意這里從庫不需要進行初始化及啟動服務,本文檔配置的是主從復制,主庫可以讀寫,從庫只能讀取不能寫入數據。
主庫配置:
cat >>/var/lib/pgsql/9.5/data/postgresql.conf <<EOF wal_level = hot_standby #(默認是minimal) max_wal_senders=2 #(默認是0) wal_keep_segments=64 #(默認是0) EOF
說明
wal_level表示啟動搭建Hot Standby,max_wal_senders則需要設置為一個大於0的數,它表示主庫最多可以有多少個並發的standby數據庫,而最后一個wal_keep_segments也應當設置為一個盡量大的值,以防止主庫生成WAL日志太快,日志還沒有來得及傳送到standby就被覆蓋,但是需要考慮磁盤空間允許,一個WAL日志文件的大小是16M
如上圖,一個WAL日志文件是16M,如果wal_keep_segments設置為64,也就是說將為standby庫保留64個WAL日志文件,那么就會占用16*64=1GB的磁盤空間,所以需要綜合考慮,在磁盤空間允許的情況下設置大一些,就會減少standby重新搭建的風險。接下來還需要在主庫創建一個超級用戶來專門負責讓standby連接去拖WAL日志
創建同步用戶
postgres=# create user rep1 superuser password '123456';
修改配置文件,允許從庫服務器連接主庫去拖WAL日志數據
vim /var/lib/pgsql/9.5/data/pg_hba.conf host replication rep1 192.168.216.0/24 md5
這里需要配置監聽地址,因為默認監聽本地
vi /var/lib/pgsql/9.5/data/postgresql.conf listen_addresses = '192.168.216.130'
重啟服務
systemctl restart postgresql-9.5.service
從庫配置:
執行以下命令,從主庫備份數據
/usr/pgsql-9.5/bin/pg_basebackup -h 192.168.216.130 -U rep1 -F p -x -P -R -D /var/lib/pgsql/9.5/data/ -l rep_backup
備份過程實際上就是從主庫的data目錄里物理拷貝數據的過程。
參數說明
-F 指定了輸出的格式,支持p(原樣輸出)或者t(tar格式輸出)。
-x 表示備份開始后,啟動另一個流復制連接從主庫接收WAL日志。
-p 表示允許在備份的過程中實時的打印備份的進度。
-R 表示會在備份結束后自動生成recovery.conf文件,這樣就避免了手動創建。
-D 指定把備份寫到哪個目錄,注意:在做基礎備份之前從庫的數據目錄需要手動清空。
-l 表示指定一個備份的標識。
由於拷貝過來的文件屬主是root這里需要更改屬主和組
chown -R postgres.postgres /var/lib/pgsql/9.5/data/
修改從庫的配置文件
vim /var/lib/pgsql/9.5/data/postgresql.conf
247 #hot_standby = off # "on" allows queries during recovery
248 hot_standby = on #添加此行
注意這里59行監聽地址需要進行注釋,由於拷貝主庫的/data下的所有文件,因此這里需要修改
啟動從庫
systemctl start postgresql-9.5.service
測試:
從庫寫入測試:
在主庫上創建一個test表,同時在從庫上進行查詢
在從庫上進行查詢:如下圖所示