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 特征
Linux 上安裝 PostgreSQL
基礎(chǔ)環(huán)境配置
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
systemctl stop firewalld.service
systemctl disable firewalld.service
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命令生效
vi /etc/systemd/logind.conf
RemoveIPC=no
6、調(diào)整內(nèi)核參數(shù)
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ù)
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
/dev/mapper/vg_data-lv_data /data xfs defaults
noatime,nodiratime,barrier=0 0 0
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
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
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ù)庫軟件安裝及初始化
../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
initdb -D $PGDATA -E UTF8 -A MD5 -U postgres -W --wal-
segsize=256 -k 10020836730533
3、PG連接數(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)
postgres=# c runoobdb
You are now connected to database "runoobdb" as user "postgres".
runoobdb=#
$ 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
摘要:自定義配置文件鏡像的配置文件路徑為如需自定義配置文件,自行掛載即可。配置項(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...
摘要:所有節(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),...
摘要:是一個(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...
摘要:是一個(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...
摘要:是一款開源的數(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...
閱讀 1356·2023-01-11 13:20
閱讀 1707·2023-01-11 13:20
閱讀 1215·2023-01-11 13:20
閱讀 1906·2023-01-11 13:20
閱讀 4165·2023-01-11 13:20
閱讀 2757·2023-01-11 13:20
閱讀 1402·2023-01-11 13:20
閱讀 3671·2023-01-11 13:20