成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

PG安裝部署

IT那活兒 / 873人閱讀
PG安裝部署
點(diǎn)擊上方“IT那活兒”,關(guān)注后了解更多精彩內(nèi)容?。?!

PostgreSQL 是一個(gè)免費(fèi)的對(duì)象-關(guān)系數(shù)據(jù)庫服務(wù)器(ORDBMS),在靈活的BSD許可證下發(fā)行。

PostgreSQL 開發(fā)者把它念作 post-gress-Q-L。

PostgreSQL 的 Slogan 是 "世界上最先進(jìn)的開源關(guān)系型數(shù)據(jù)庫"。



PostgreSQL 特征

函數(shù):通過函數(shù),可以在數(shù)據(jù)庫服務(wù)器端執(zhí)行指令程序。
索引:用戶可以自定義索引方法,或使用內(nèi)置的 B 樹,哈希表與 GiST 索引。
觸發(fā)器:觸發(fā)器是由SQL語句查詢所觸發(fā)的事件。如:一個(gè)INSERT語句可能觸發(fā)一個(gè)檢查數(shù)據(jù)完整性的觸發(fā)器。觸發(fā)器通常由INSERT或UPDATE語句觸發(fā)。多版本并發(fā)控制:PostgreSQL使用多版本并發(fā)控制(MVCC,Multiversion concurrency control)系統(tǒng)進(jìn)行并發(fā)控制,該系統(tǒng)向每個(gè)用戶提供了一個(gè)數(shù)據(jù)庫的"快照",用戶在事務(wù)內(nèi)所作的每個(gè)修改,對(duì)于其他的用戶都不可見,直到該事務(wù)成功提交。
規(guī)則:規(guī)則(RULE)允許一個(gè)查詢能被重寫,通常用來實(shí)現(xiàn)對(duì)視圖(VIEW)的操作,如插入(INSERT)、更新(UPDATE)、刪除(DELETE)。
數(shù)據(jù)類型:包括文本、任意精度的數(shù)值數(shù)組、JSON 數(shù)據(jù)、枚舉類型、XML 數(shù)據(jù)等。
全文檢索:通過 Tsearch2 或 OpenFTS,8.3版本中內(nèi)嵌 Tsearch2。
NoSQL:JSON,JSONB,XML,HStore 原生支持,至 NoSQL 數(shù)據(jù)庫的外部數(shù)據(jù)包裝器。
數(shù)據(jù)倉庫:能平滑遷移至同屬 PostgreSQL 生態(tài)的 GreenPlum,DeepGreen,HAWK 等,使用 FDW 進(jìn)行 ETL。

Linux 上安裝 PostgreSQL

打開 PostgreSQL 官網(wǎng):
 https://www.postgresql.org/,點(diǎn)擊菜單欄上的 Download ,可以看到這里包含了很多平臺(tái)的安裝包,包括 Linux、Windows、Mac OS等 。
Linux 我們可以看到支持 Ubuntu 和 Red Hat 等各個(gè)平臺(tái),點(diǎn)擊具體的平臺(tái)鏈接,即可查看安裝方法:
點(diǎn)擊上圖中的 file browser,我們還能下載 PostgreSQL 最新的源碼。


基礎(chǔ)環(huán)境配置

1、關(guān)閉selinux

vim /etc/sysconfig/seliunx
selinux=disabled


2、調(diào)整用戶限制


vim /etc/security/limit.conf
* soft nofile 655360
* hard nofile 655360
* soft nproc 655360
* hard nproc 655360
* soft memlock unlimited
* hard memlock unlimited
* soft core unlimited
* hard core unlimited
* soft stack unlimited
* hard stack unlimited

3、關(guān)閉防火墻

systemctl stop firewalld.service
systemctl disable firewalld.service


4、關(guān)閉NUMA和透明大頁以及設(shè)置磁盤預(yù)讀大小

NUMA架構(gòu)會(huì)優(yōu)先在請(qǐng)求線程所在的CPU的local內(nèi)存上分配空間,如果local內(nèi)存不足,優(yōu)先淘汰local內(nèi)存中無用的頁面,會(huì)導(dǎo)致每個(gè)CPU上的內(nèi)存分配不均。因此建議關(guān)閉NUMA。
vi /etc/default/grub的GRUB_CMDLINE_LINUX行最后添加 numa=off
GRUB_CMDLINE_LINUX=”crashkernel=auto …… rhgb quiet numa=off
#執(zhí)行g(shù)rub2-mkconfig命令
grub2-mkconfig -o /boot/grub2/grub.cfg


透明大頁(transparent_hugepage)在運(yùn)行時(shí)動(dòng)態(tài)分配內(nèi)存,而運(yùn)行時(shí)的內(nèi)存分配會(huì)有延誤,對(duì)于數(shù)據(jù)庫管理系統(tǒng)來說并不友好,所以建議關(guān)閉透明大頁。


  • 臨時(shí)關(guān)閉:

[root@localhost ~]# echo never >
/sys/kernel/mm/transparent_hugepage/enabled
[root@localhost ~]# echo never >
/sys/kernel/mm/transparent_hugepage/defrag


  • 永久關(guān)閉:


[root@localhost ~]# vim /etc/rc.d/rc.local
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
/sbin/blockdev --setra 16384 /dev/sdb /dev/sdc
授予執(zhí)行權(quán)限
[root@localhost ~]# chmod +x /etc/rc.d/rc.local
source /etc/rc.local命令生效

5、關(guān)閉RemoveIPC,CentOS默認(rèn)為關(guān)閉

vi /etc/systemd/logind.conf
RemoveIPC=no


6、調(diào)整內(nèi)核參數(shù)

HugePages配置:
Linux內(nèi)存頁默認(rèn)為4K,當(dāng)內(nèi)存很大時(shí),如果頁很小,整體性能就會(huì)變差。啟用了huge_pages后,相應(yīng)的內(nèi)存頁表就會(huì)變小,進(jìn)而提高內(nèi)存管理的性能。
cat /proc/meminfo | grep -i huge 查看是否啟動(dòng)了huge_pages
[postgres@PG-1 ~]$ cat /proc/meminfo | grep Huge
AnonHugePages: 2048 kB
HugePages_Total: 4000 #設(shè)置的大頁個(gè)數(shù)
HugePages_Free: 3687 ##當(dāng)前剩余的大頁數(shù)量,但實(shí)際上真正可用的并沒有這么多,因?yàn)镻G鎖定了3129個(gè)大頁
HugePages_Rsvd: 3129 ##啟動(dòng)PostgreSQL數(shù)據(jù)庫使用的大頁數(shù)量
HugePages_Surp: 0
Hugepagesize: 2048 kB
計(jì)算nr_hugepages的配置:
安裝完成后,啟動(dòng)數(shù)據(jù)庫。
pid = `cat $PGDATA/postmaster.pid`
pg_mem = `cat /proc/${pid}/status | greo VmPeak`
huge_size = `cat /proc/meminfo| grep -i Hugepagesize`
result = $((pg_mem / huge_size))
sysctl -w vm.nr_hugepages=${result}
或者 shared_buffers/huge_size
fs.aio-max-nr=1048576
fs.file-max=76724600
fs.nr_open=20480000
kernel.sem=4096 2147483647 2147483646 512000
kernel.shmall=5033164 #Total_MEM [按頁計(jì)算]#建設(shè)設(shè)置內(nèi)存的80%,以頁為單位4K
kernel.shmmax=20615843030 #Total_mem * 80% #單個(gè)共享內(nèi)存段的大小
kernel.shmmax=20615843030 #Total_mem * 80% #單個(gè)共享內(nèi)存段的大小
kernel.shmmni=819200 #一共能生成多個(gè)共享內(nèi)存段,每個(gè)PG數(shù)據(jù)庫集群至少2個(gè)共享內(nèi)存段
net.core.netdev_max_backlog=10000
net.core.wmem_max = 21299200
net.core.rmem_max = 21299200
net.core.wmem_default = 21299200
net.core.rmem_default = 21299200
net.core.somaxconn=65535
net.ipv4.tcp_max_tw_buckets=262144
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_keepalive_time = 60
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl = 20
net.ipv4.tcp_retries1=5
net.ipv4.tcp_syn_retries=5
net.ipv4.tcp_synack_retries=5
net.ipv4.tcp_retries2=12
net.ipv4.tcp_rmem = 8192 250000 16777216
net.ipv4.tcp_wmem = 8192 250000 16777216
net.ipv4.tcp_syncookies = 1
net.ipv4.ip_local_port_range=40000 65535
net.ipv4.tcp_fin_timeout=10
net.ipv4.tcp_max_syn_backlog=65535
net.ipv4.tcp_mem=8388608 12582912 16777216
net.ipv4.tcp_timestamps=1
net.ipv4.tcp_sack=1
vm.swappiness=0
vm.zone_reclaim_mode=0
vm.numa_balancing=0
vm.extfrag_threshold = 500
vm.mim_free_kbytes=1048576 #建議每32GB保留1GB;指定強(qiáng)制Linux VM保留的內(nèi)存
最新值,單位Kb
vm.overcommit_memory = 2
vm.overcommit_ratio=90
vm.dirty_ratio=10 #指定了當(dāng)文件系統(tǒng)緩存臟頁數(shù)量達(dá)到系統(tǒng)內(nèi)存百分之多少時(shí)(如10%),系統(tǒng)不得不開始處理緩存臟頁
vm.dirty_background_ratio=5 #指定了當(dāng)文件系統(tǒng)緩存臟頁數(shù)量達(dá)到系統(tǒng)內(nèi)存百分之多少時(shí)(如5%)就會(huì)觸發(fā)
pdflush/flush/kdmflush等后臺(tái)回寫進(jìn)程運(yùn)行,將一定緩存的臟頁異步地刷入外存
vm.dirty_writeback_centisecs=80
vm.mmap_min_addr=65536 #指定用戶進(jìn)程通過mmap可使用的最小虛擬內(nèi)存地址,以
避免其在低地址空間產(chǎn)生映射導(dǎo)致安全問題
vm.nr_hugepages=0 #設(shè)置大頁的個(gè)數(shù)

7、調(diào)整磁盤IO調(diào)度

CentOS7:
grubby --update-kernel=ALL --args="elevator=defaline"
CentOS6:
vim /boot/grub/menu.lst
更改到如下內(nèi)容: ## 在 rhgb quiet 前添加 elevator=deadline
kernel /boot/vmlinuz-2。6。32-504.el6 ro root=LABEL=/ elevator=deadline
rhgb quiet

8、調(diào)整磁盤參數(shù) noatime,nodirtime等參數(shù),數(shù)據(jù)盤目錄

/dev/mapper/vg_data-lv_data /data xfs defaults
noatime,nodiratime,barrier=0 0 0

9、安裝依賴包

  • 9.1安裝依賴包

yum install -y rsync sysstat glib2 glib2-devel gcc gcc-c++ icu
libicu libicu-devel flex flex-devel python python-devel tcl tcldevel perl perl-devel bison bison-devel perl-ExtUtils* readline
readline-devel zlib zlib-devel openssl openssl-devel pam pam-devel
libxml2 libxml2-devel libxslt libxslt-devel openldap openldap-devel
ldapjdk ldapjdk-devel uuid uuid-devel systemd* bzip2 bzip2-devel
bzip2-libs libevent libevent-devel libcurl libcurl-devel libyml
libyml-devel libyaml libyaml-devel libaio libaio-devel uuid uuiddevel logrotate lz4 lz4-devel perl-Time-HiRes perl-DBI perl-DBD-Pg
  • 9.2 安裝CMAKE,3.5版本以上

./configure && gmake -j 7 && gmake install
  • 9.3 安裝LLVM

LLVM 不支持在源目錄中構(gòu)建LLVM,需要?jiǎng)?chuàng)建一個(gè)目錄。
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_CXX_COMPILER=/usr
/local/bin/c++ -DCMAKE_C_COMPILER=/usr/local/bin/gcc
gmake -j 7 && gmake install
  • 9.4 安裝CLANG

不允許在源碼目錄中進(jìn)行CMAKE。
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_CXX_COMPILER=/usr
/local/bin/c++ -DCMAKE_C_COMPILER=/usr/local/bin/gcc
gmake -j 7 && gmake install




數(shù)據(jù)庫軟件安裝及初始化

1、源碼編譯安裝

../configure --prefix=/opt/pgsql/pg132 --exec-prefix=/opt/pgsql/pg132 --
enable-thread-safety --with-pgport=5432 
--with-blocksize=8 --with-segsize=1 --with-wal-blocksize=8 --with-llvm -
-with-icu --with-tcl --with-perl --with-python
--with-gssapi --with-pam --with-ldap --with-selinux --with-systemd --
with-readline --with-libedit-preferred --with-ossp-uuid
--with-libxml --with-libxslt --with-zlib --with-lz4 --with-gnu-ld --withopenssl
make
make world
make install
make install-world
make install-docs
PG14.0
../configure --prefix=/opt/pg140 --exec-prefix=/opt/pg140 --enablethread-safety --with-pgport=5432 --with-blocksize=32 --with-segsize=1 --
with-wal-blocksize=32 --with-llvm --with-icu --with-tcl --with-perl --
with-python --with-gssapi --with-pam --with-ldap --with-selinux --withsystemd --with-readline --with-libedit-preferred --with-ossp-uuid --withlibxml --with-libxslt --with-zlib --with-lz4 --with-gun-ld --with-openssl
AIO:
--with-liburing --with-posix-aio

2、數(shù)據(jù)庫初始化

initdb -D $PGDATA -E UTF8 -A MD5 -U postgres -W --wal-
segsize=256 -k 10020836730533


3、PG連接數(shù)據(jù)庫

  • 數(shù)據(jù)庫的命令窗口

PostgreSQL 命令窗口中,我們可以命令提示符后面輸入 SQL 語句:
postgres=#
使用 l 用于查看已經(jīng)存在的數(shù)據(jù)庫:
postgres=# l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+---------+-------+-----------------------
postgres |
 postgres | UTF8 | C | C |
runoobdb | postgres | UTF8 | C | C |
template0 |
 postgres | UTF8 | C | C | =c/postgres +
| |          | |       | postgres=CTc/postgres
template1 |
 postgres | UTF8 | C | C | =c/postgres +
| |          | |       | postgres=CTc/postgres
(4 rows)
接下來我們可以使用 c + 數(shù)據(jù)庫名 來進(jìn)入數(shù)據(jù)庫:
postgres=# c runoobdb
You are now connected to database "runoobdb" as user "postgres".
runoobdb=#
  • 系統(tǒng)命令行窗口

在系統(tǒng)的命令行查看,我們可以在連接數(shù)據(jù)庫后面添加數(shù)據(jù)庫名來選擇數(shù)據(jù)庫:
$ psql -h localhost -p 5432 -U postgress runoobdb
Password for user postgress: ****
psql (11.3)
Type "help" for help.
You are now connected to database "runoobdb" as user "postgres".
runoobdb=#





END




更多精彩干貨分享

點(diǎn)擊下方名片關(guān)注

IT那活兒

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/129731.html

相關(guān)文章

  • Docker 部署 Kong 網(wǎng)關(guān)

    摘要:自定義配置文件鏡像的配置文件路徑為如需自定義配置文件,自行掛載即可。配置項(xiàng)手冊管理網(wǎng)關(guān)的的使用教程這里就不寫了,自行覓食吧簡單的看看下面這篇可以的集成插件服務(wù)網(wǎng)關(guān) Kong 鏡像: https://hub.docker.com/_/kong 官網(wǎng)給定的用戶安裝手冊上并沒有設(shè)置 PG 的密碼,導(dǎo)致如下問題無法啟動(dòng) nginx: [error] init_by_lua error: /us...

    zhouzhou 評(píng)論0 收藏0
  • 初識(shí)Postgres-XL

    摘要:所有節(jié)點(diǎn)中分為三種角色全局事務(wù)管理器協(xié)調(diào)器和數(shù)據(jù)節(jié)點(diǎn)。一旦故障,整個(gè)集群立刻無法訪問,此時(shí)可以切換到節(jié)點(diǎn)上。 第一節(jié) 簡介Postgres-XL是一款開源的PG集群軟件,XL代表eXtensible Lattice,即可擴(kuò)展的PG格子之意,以下簡稱PGXL。官方稱其既適合寫操作壓力較大的OLTP應(yīng)用,又適合讀操作為主的大數(shù)據(jù)應(yīng)用。它的前身是Postgres-XC(簡稱PGXC),...

    JasinYip 評(píng)論0 收藏0
  • Kong網(wǎng)關(guān)部署

    摘要:是一個(gè)成熟的網(wǎng)關(guān)解決方案。網(wǎng)關(guān)的下一層,是內(nèi)部服務(wù),內(nèi)部服務(wù)只需開發(fā)和關(guān)注具體業(yè)務(wù)相關(guān)的實(shí)現(xiàn)。網(wǎng)關(guān)可以提供發(fā)布管理維護(hù)等主要功能。 ??Kong是一個(gè)使用了lua-nginx-module運(yùn)行在Nginx之上的Lua應(yīng)用。Kong是一個(gè)成熟的API網(wǎng)關(guān)解決方案。API 網(wǎng)關(guān),即API Gateway,是大型分布式系統(tǒng)中,為了保護(hù)內(nèi)部服務(wù)而設(shè)計(jì)的一道屏障,可以提供高性能、高可用的 API...

    hiyang 評(píng)論0 收藏0
  • Kong網(wǎng)關(guān)部署

    摘要:是一個(gè)成熟的網(wǎng)關(guān)解決方案。網(wǎng)關(guān)的下一層,是內(nèi)部服務(wù),內(nèi)部服務(wù)只需開發(fā)和關(guān)注具體業(yè)務(wù)相關(guān)的實(shí)現(xiàn)。網(wǎng)關(guān)可以提供發(fā)布管理維護(hù)等主要功能。 ??Kong是一個(gè)使用了lua-nginx-module運(yùn)行在Nginx之上的Lua應(yīng)用。Kong是一個(gè)成熟的API網(wǎng)關(guān)解決方案。API 網(wǎng)關(guān),即API Gateway,是大型分布式系統(tǒng)中,為了保護(hù)內(nèi)部服務(wù)而設(shè)計(jì)的一道屏障,可以提供高性能、高可用的 API...

    XiNGRZ 評(píng)論0 收藏0
  • PostgreSQL對(duì)接SequoiaDB

    摘要:是一款開源的數(shù)據(jù)庫,支持標(biāo)準(zhǔn),用戶可以通過驅(qū)動(dòng)連接進(jìn)行應(yīng)用程序開發(fā)。本文就針對(duì)如何擴(kuò)展功能,實(shí)現(xiàn)對(duì)接進(jìn)行介紹。直接在中修改配置文件,只能在當(dāng)前中生效,重新登錄需要重新設(shè)置。 PostgreSQL是一款開源的SQL數(shù)據(jù)庫,支持標(biāo)準(zhǔn)SQL,用戶可以通過JDBC驅(qū)動(dòng)連接PostgreSQL進(jìn)行應(yīng)用程序開發(fā)。用戶通過擴(kuò)展PostgreSQL功能,讓開發(fā)者可以使用SQL語句訪問SequoiaDB...

    TZLLOG 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<