PostgreSQL 是一个免费的对象-关系数据库服务器(ORDBMS),在灵活的BSD许可证下发行。
PostgreSQL 开发者把它念作 post-gress-Q-L。
PostgreSQL 的 Slogan 是 "世界上最先进的开源关系型数据库"。
PostgreSQL 特征
Linux 上安装 PostgreSQL
基础环境配置
vim /etc/sysconfig/seliunx
selinux=disabled
2、调整用户限制
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”
#执行grub2-mkconfig命令
grub2-mkconfig -o /boot/grub2/grub.cfg
透明大页(transparent_hugepage)在运行时动态分配内存,而运行时的内存分配会有延误,对于数据库管理系统来说并不友好,所以建议关闭透明大页。
临时关闭:
[root@localhost ~]# echo never >
/sys/kernel/mm/transparent_hugepage/enabled
[root@localhost ~]# echo never >
/sys/kernel/mm/transparent_hugepage/defrag
永久关闭:
[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
授予执行权限
[root@localhost ~]# chmod +x /etc/rc.d/rc.local
source /etc/rc.local命令生效
vi /etc/systemd/logind.conf
RemoveIPC=no
6、调整内核参数
cat /proc/meminfo | grep -i huge 查看是否启动了huge_pages
[postgres@PG-1 ~]$ cat /proc/meminfo | grep Huge
AnonHugePages: 2048 kB
HugePages_Total: 4000 #设置的大页个数
HugePages_Free: 3687 ##当前剩余的大页数量,但实际上真正可用的并没有这么多,因为PG锁定了3129个大页
HugePages_Rsvd: 3129 ##启动PostgreSQL数据库使用的大页数量
HugePages_Surp: 0
Hugepagesize: 2048 kB
计算nr_hugepages的配置:
安装完成后,启动数据库。
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 [按页计算]#建设设置内存的80%,以页为单位4K
kernel.shmmax=20615843030 #Total_mem * 80% #单个共享内存段的大小
kernel.shmmax=20615843030 #Total_mem * 80% #单个共享内存段的大小
kernel.shmmni=819200 #一共能生成多个共享内存段,每个PG数据库集群至少2个共享内存段
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;指定强制Linux VM保留的内存
最新值,单位Kb
vm.overcommit_memory = 2
vm.overcommit_ratio=90
vm.dirty_ratio=10 #指定了当文件系统缓存脏页数量达到系统内存百分之多少时(如10%),系统不得不开始处理缓存脏页
vm.dirty_background_ratio=5 #指定了当文件系统缓存脏页数量达到系统内存百分之多少时(如5%)就会触发
pdflush/flush/kdmflush等后台回写进程运行,将一定缓存的脏页异步地刷入外存
vm.dirty_writeback_centisecs=80
vm.mmap_min_addr=65536 #指定用户进程通过mmap可使用的最小虚拟内存地址,以
避免其在低地址空间产生映射导致安全问题
vm.nr_hugepages=0 #设置大页的个数
CentOS7:
grubby --update-kernel=ALL --args="elevator=defaline"
CentOS6:
vim /boot/grub/menu.lst
更改到如下内容: ## 在 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
数据库软件安装及初始化
../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连接数据库
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
更多精彩干货分享
点击下方名片关注
IT那活儿
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/129731.html
摘要:自定义配置文件镜像的配置文件路径为如需自定义配置文件,自行挂载即可。配置项手册管理网关的的使用教程这里就不写了,自行觅食吧简单的看看下面这篇可以的集成插件服务网关 Kong 镜像: https://hub.docker.com/_/kong 官网给定的用户安装手册上并没有设置 PG 的密码,导致如下问题无法启动 nginx: [error] init_by_lua error: /us...
摘要:所有节点中分为三种角色全局事务管理器协调器和数据节点。一旦故障,整个集群立刻无法访问,此时可以切换到节点上。 第一节 简介Postgres-XL是一款开源的PG集群软件,XL代表eXtensible Lattice,即可扩展的PG格子之意,以下简称PGXL。官方称其既适合写操作压力较大的OLTP应用,又适合读操作为主的大数据应用。它的前身是Postgres-XC(简称PGXC),...
摘要:是一款开源的数据库,支持标准,用户可以通过驱动连接进行应用程序开发。本文就针对如何扩展功能,实现对接进行介绍。直接在中修改配置文件,只能在当前中生效,重新登录需要重新设置。 PostgreSQL是一款开源的SQL数据库,支持标准SQL,用户可以通过JDBC驱动连接PostgreSQL进行应用程序开发。用户通过扩展PostgreSQL功能,让开发者可以使用SQL语句访问SequoiaDB...
阅读 1249·2023-01-11 13:20
阅读 1557·2023-01-11 13:20
阅读 1011·2023-01-11 13:20
阅读 1680·2023-01-11 13:20
阅读 3971·2023-01-11 13:20
阅读 2518·2023-01-11 13:20
阅读 1310·2023-01-11 13:20
阅读 3485·2023-01-11 13:20