PostgreSQL 安裝與讀寫分離配置
-
前言
本部落格的內容主要是對PostgreSQL關係型資料庫的安裝與讀寫分離配置進行詳細的介紹,並且介紹了安裝過程與配置過程中遇到的問題。安裝與配置採用的是Centos系統環境,採用rpm手動安裝方式(解決yum不能用問題)。PostgreSQL9.0版本以後增加了Stream模式(流式)的主從複製,提供了在主從複製過程中可讀的功能,本文配置過程中採用的PostgreSQL版本為9.5。
-
PostgreSQL安裝
本部分主要介紹 PostgreSQL資料庫的基本安裝方法,無論是否進行主從複製進行讀寫分離都可以採用此部分介紹的方法進行PostgreSQL資料庫的搭建。
1. PostgreSQL資料庫rpm依賴包下載
1.1 rpm下載地址
PostgreSQL關係型資料庫的常用Rpm依賴包下載地址為“https://yum.postgresql.org/9.5/redhat/rhel-6-x86_64/”,其中引數“9.5”代表PostgreSQL版本號,“redhat”代表系統,“rhel-6-x86_64”代表系統型別。具體下載地址需要根據機型進行更改。
1.1.2 PostgresSQL-9.5基本rpm包下載命令
根據具體的業務功能需要,選擇安裝不同的依賴rpm包。此次安裝只安裝四個基本依賴。具體安裝的依賴包(如表1.1所示)。
“wget https://yum.postgresql.org/9.5/redhat/rhel-6-x86_64/postgresql95-server-9.5.4-2PGDG.rhel6.x86_64.rpm”。
表1.1 PostgreSQL 依賴包
1 | postgresql95-server-9.5.4-2PGDG.rhel6.x86_64.rpm |
2 | postgresql95-libs-9.5.4-2PGDG.rhel6.x86_64.rpm |
3 | postgresql95-contrib-9.5.4-2PGDG.rhel6.x86_64.rpm |
4 | postgresql95-9.5.4-2PGDG.rhel6.x86_64.rpm |
1.2 rpm包安裝
由於包之前存在其餘依賴,所以需要忽略依賴的強制安裝方式,安裝命令為“rpm -i --force –nodeps [包名]”。四個依賴包之間存在先後安裝順序為:
1)postgresql95-libs-9.5.4-2PGDG.rhel6.x86_64.rpm
2)postgresql95-9.5.4-2PGDG.rhel6.x86_64.rpm
3)postgresql95-server-9.5.4-2PGDG.rhel6.x86_64.rpm
4)postgresql95-contrib-9.5.4-2PGDG.rhel6.x86_64.rpm
1.3 初始化PostgreSQL資料庫
PostgreSQL資料庫安裝後不進行初始化是無法啟動的,因為初始化會進行PostgreSQL資料庫基本配置檔案的生成,未初始化之前配置檔案是不存在的。初始化命令為:“service postgresql-9.5 initdb”
1.4 啟動PostgreSQL資料庫
此時PoatgreSQL資料庫已經基本安裝完成,如果沒有特殊配置需求的可以進行PostgreSQL的啟動了,啟動命令為:“service postgresql-9.5 start”。
啟動過程中還可能會遇到“localhost”域名無法解決解析問題,此問題沒有進行鍼對性解決,因為後面配置了遠端連結,不進行localhost域名的監聽。再此提出一種出現此問題原因的可能性,就是本地host檔案中未對localhost進行對映,所以無法進行解析,是否正確還需要讀者進行親自驗證,期待您的反饋。
-
PostgreSQL配置遠端連線
2.1 配置postgresql.conf檔案
此檔案為PostgreSQL資料庫的基本配置檔案,需要進行資料庫初始化後才能出現。通過此檔案配置PostgreSql資料庫的監聽埠配置。將/var/lib/pgsql/9.5/data/postgresql.conf檔案中的listen_addresses 引數修改為“listen_addresses ='*'”,預設為監聽localhost。
2.2 配置pg_hba.conf檔案
通過此檔案配置遠端連線的使用者驗證方式,以及配置允許的遠端ip。可以根據具體情況進行不同的新增,本文將/var/lib/pgsql/9.5/data/pg_hba.conf檔案引數進行修改,新增“host all all 0.0.0.0/0 trust”。
-
PostgreSQL配置主從流複製
配置主從複製伺服器過程中需要注意,PostgreSQL資料庫在主從伺服器上都需要進行安裝,採用上述安裝方式就行。但是主伺服器與從伺服器的初始化過程不同,主伺服器需要初始化,從伺服器不需要初始化,從伺服器的基本配置資訊是通過從主伺服器拉取得到的,否則無法正常啟動。
3.1 主從伺服器基本資訊
本次配置中採用兩臺伺服器進行主從配置,分別為:
Master Server:***
資料庫版本:PostgreSQL9.5
埠:5432
資料庫的資料目錄: /var/lib/pgsql/9.5/data
Standby Server:******
資料庫版本:PostgreSQL9.5
埠:5433
資料庫的資料目錄: /var/lib/pgsql/9.5/data/
3.2 主伺服器配置
3.2.1 配置postgresql.conf檔案
wal_level = hot_standby
max_wal_senders = 2
wal_keep_segments = 32
3.2.2 配置pg_hba.conf檔案
host replication postgres *****/32 md5
3.2.3 重啟主資料庫
service postgresql-9.5 restart
3.3 從伺服器配置
3.3.1 複製備庫
通過pg_basebackup進行一步到位的主資料庫配置同步。
命令為:pg_basebackup -F p --progress -D /var/lib/pgsql/9.5/data -h "ip" -p 5432 -U replica –password
3.3.2 檔案授權
檔案複製過來檔案使用者與許可權可能與主伺服器不同,通過命令“chown -R [使用者] [檔名]”進行所屬使用者的授權,授權命令樣例:
chown -R postgres.postgres data
chmod -R 777 data
3.3.3 配置postgresql.conf檔案
port=5432
hot_standby = on
並註釋掉wal_level max_wal_senders和wal_keep_segments的設定
3.3.4 拷貝並配置recovery.conf
#cp /usr/pgsql-9.5/share/recovery.conf.sample /var/lib/pgsql/9.5/data/recovery.conf
配置如下內容:
standby_mode = on
primary_conninfo = ‘host=*** port=5432 user=postgres password=psql’
trigger_file = ‘/var/lib/pgsql/9.5/trigger_activestandby’
3.3.5 刪除從主資料庫中過來的postmaster.pid檔案,然後啟動從資料庫
#rm /var/lib/pgsql/9.5/data/postmaster.pid
#service postgresql-9.5 start
-
PostgreSQL資料庫常用命令
4.1 PostgreSQL常用SQL命令
PostgreSQL常用SQL命令
命令 | 解釋 |
---|---|
psql -U user -d dbname | 連線資料庫, 預設的使用者和資料庫是postgres |
\c dbname | 切換資料庫,相當於mysql的use dbname |
\l | 列舉資料庫,相當於mysql的show databases |
\dt | 列舉表,相當於mysql的show tables |
\d tblname | 查看錶結構,相當於desc tblname,show columns from tbname |
\di | 檢視索引 |
create database [資料庫名] | 建立資料庫 |
drop database [資料庫名] | 刪除資料庫 |
alter table [表名A] rename to [表名B] | 重新命名一個表 |
drop table [表名] | 刪除一個表 |
alter table [表名] add column [欄位名] [型別] | 在已有的表裡新增欄位 |
alter table [表名] drop column [欄位名] | 刪除表中的欄位 |
alter table [表名] rename column [欄位名A] to [欄位名B] | 重新命名一個欄位 |
alter table [表名] alter column [欄位名] set default [新的預設值] | 給一個欄位設定預設值 |
alter table [表名] alter column [欄位名] drop default | 去除預設值 |
insert into 表名 ([欄位名m],[欄位名n],......) values ([列m的值],[列n的值],......) | 在表中插入資料 |
update [表名] set [目標欄位名]=[目標值] where [該行特徵] | 修改表中的某行某列的資料 |
delete from [表名] where [該行特徵] | 刪除表中某行資料 |
delete from [表名] | 刪空整個表 |
create table ([欄位名1] [型別1] ;,[欄位名2] [型別2],......<,primary key (欄位名m,欄位名n,...)>;) | 建立表 |
\copyright | 顯示 PostgreSQL 的使用和發行條款 |
\encoding [字元編碼名稱] | 顯示或設定使用者端字元編碼 |
\h [名稱] | SQL 命令語法上的說明,用 * 顯示全部命令 |
\prompt [文字] 名稱 | 提示使用者設定內部變數 |
\password [USERNAME] | 修改密碼 |
\q | 退出 psql |
4.2 PostgreSQL其餘常用命令
4.2.1 tgreSQL啟動與停止服務命令:
啟動服務:service postgresql start
重啟服務:service postgresql restart
停止服務:service postgresql stop
4.2.2 PstgreSQL連線命令:
使用者名稱:postgres
密碼:psql
連線命令:sudo -s -u postgres
4.2.2 PstgreSQL資料匯入匯出命令:
匯出命令:pg_dump -h ip -U postgres -w -t annual_hr_2016_temp3 test >/root/postgresql/data/*.sql
匯入命令:psql -h ip -U postgres -w -t test </root/postgresql/data/*.sql
-
安裝過程中用到的centos命令於rpm命令
命令 | 解釋 |
---|---|
cat /etc/redhat-release | 系統版本查詢 |
uname -m | 系統位數查詢 |
chown -R postgres.postgres data | 檔案授使用者命令 |
ps -aux | grep java | centos檢視程序命令 |
du -h annual_hr_2016_temp3.sql | 檢視檔案大小 |
service --status-all | grep postgres | 檢視安裝服務 |
rpm -qa | grep postgresql | 根據名字檢視已安裝的安裝包 |
rpm -e --nodeps pgdg-centos96-9.6-3.noarch | 解除安裝已安裝包 |
rpm -i --force --nodeps postgresql95-9.5.4-2PGDG.rhel5.x86_64.rpm | 強制安裝,忽略依賴 |
-
總結
本文詳細介紹了PostgerSQL資料庫的安裝與主從配置,並把常用的sql命令,rmp命令,centos命令進行了總結與歸納,如有不詳細的地方期待您的反饋。