m6米乐安卓版下载-米乐app官网下载
暂无图片
2

pg14源码安装手册 -m6米乐安卓版下载

原创 福娃筱欢 恩墨学院 2023-08-19
335

生产环境级别的数据库安装考虑的问题比较多,考虑的方面如下:
首先是安全问题,能不能用root安装?防火墙策略怎么设置?数据库打开文件以及连接数会不会超过linux默认打开文件句柄数的限制?
其次是合理规划,数据放在哪个目录?这个目录是否是全公司统一的?linux发行版不一样,软件安装目录是否一致?数据目录是否是单独挂载磁盘?单独挂载的磁盘是否做了raid数据冗余或者lvm?
然后是运维方便的考虑,是否配置了合理的环境变量,如果不配置你是不是每次执行命令都要敲全路径?是否postgresql具备开机自启动功能?
数据库用户是否经过合理规划,你的数据操作(增删改查)用户是否能新建表,truncat表,删除表?具备这些功能的数据操作用户是否会导致人为误操作风险增加?
数据库安装之后,是否具备企业级的统一管理、故障监控?流程上如何申请?

生产环境的postgresql安装一般会使用源码编译的方式进行安装,使用源码编译的安装方式有如下好处:
公司的服务器什么型号,什么操作系统版本的都有。如果使用yum或者apt-get安装,很难统一版本,不同的操作系统发行版带的postgresql源是不一样的。即使搞成统一的,不同的操作系统之间也无法统一安装目录的位置、lib存放位置等。
postgresql源码编译的方式进行安装,可以灵活的选择需要安装的版本,需要哪一个版本就下载哪一个版本。而使用yum或者apt-get进行安装只能源库指定的若干版本。源码安装,想指定什么目录就指定什么目录,全公司所有的postgresql都在这个目录,这也是规范的一种。
所以为了适应更多的场景,为了达到公司内运维统一的标准,一般生产环境会使用postgresql源码编译的方式进行安装。
postgresql官方源码安装包的下载地址是:www.postgresql.org/download/
x86:
arm:

找到如上图所示的“file browser”,点击进入file browser页面,下载以“tar.gz”结尾的安装包即可。
目前单位用的有pg10和pg14两个版本,如下:
postgresql-10.22.tar.gz
postgresql-14.2.tar.gz

环境准备需要使用root用户进行操作。本文档以centos7.9发行版操作系统为例,命令如下。如若是其他的linux发行版,准备工作这一块内容操作步骤是差不多的,linux命令需要调整。

3.1、安装必要的编译环境

3.1.1.配置本地yum源

--上传操作系统镜像到/opt目录
[root@localhost ~]# ls -l /opt | grep cen*
-rw-r--r--.  1 root root 4712300544 aug  8 05:27 centos-7-x86_64-dvd-2009.iso
--挂载镜像
[root@localhost ~]# mount /opt/centos-7-x86_64-dvd-2009.iso /mnt/
[root@localhost ~]# df -h | grep mnt
/dev/loop0      4.4g  4.4g     0 100% /mnt
--设置开机挂载
cat << eof >> /etc/fstab
/dev/loop0    /mnt        iso9660 loop            0 0
eof
--配置本地yum源文件
mkdir -p /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
cat >> /etc/yum.repos.d/os.repo <<"eof"
[os1]
name=os
baseurl=file:///mnt
enabled=1
gpgcheck=0
eof

3.1.2.安装依赖包

首先需要安装一些必要的依赖,postgresql安装的过程需要使用到这些linux包。

yum install -y zlib zlib-devel libaio cmake make gcc gcc-c   readline readline-devel perl \
bison flex libyaml  net-tools expect  openssh-clients tcl openssl  openssl-devel \
ncurses-devel  python python-devel openldap pam systemtap-sdt-devel perl-extutils-embed

3.2、创建postgre用户

groupadd -g 5001 postgres
useradd -g postgres -g 5001 postgres
echo "postgres"|passwd --stdin  postgres

3.3、关闭防火墙

禁用和启用二选一

--禁用防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service 
--启用防火墙
firewall-cmd --zone=public --add-port=15400/tcp --permanent
firewall-cmd --zone=public --add-port=22/tcp --permanent
firewall-cmd --reload
--禁用防火墙区域偏移
sed -i 's/^allowzonedrifting=yes/allowzonedrifting=no/' /etc/firewalld/firewalld.conf 

3.4、关闭selinux

sed -i “s/selinux=enforcing/selinux=disabled/g” /etc/selinux/config
setenforce 0

3.5、修改操作系统打开最大文件句柄数

cat >> /etc/security/limits.conf << "eof"
#add by postgres
postgres    soft    nproc    65536
postgres    hard    nproc    65536
postgres    soft    nofile   65536
postgres    hard    nofile   65536
postgres    soft    stack    1024000
postgres    hard    stack    1024000
eof

该配置在关闭linux访问终端session重新登录之后生效,ulimit -n的值会变成65535 。进行这一步操作的目的是防止linux操作系统内打开文件句柄数量的限制,避免不必要的故障。

3.6、修改磁盘调度

echo deadline > /sys/block/sda/queue/scheduler

3.7、修改磁盘预读

/sbin/blockdev --setra 8192 /dev/sda

3.8、查看磁盘预读

/sbin/blockdev --getra /dev/sda

3.9、设置系统内核参数

cp /etc/sysctl.conf /etc/sysctl.confbak
cat >> /etc/sysctl.conf <

3.10、关闭进程间通信

#centos openeuler操作系统默认为关闭,可以跳过该步骤
sed -i 's/#removeipc=no/removeipc=no/g' /etc/systemd/logind.conf
systemctl daemon-reload
systemctl restart systemd-logind

3.11、创建必要的目录

--安装目录(该后面解压步骤生成不用手动创建)
/pgdb/pgsql
--数据目录
/pgdb/data
--归档目录
/pgdb/pg_archive
--逻辑备份目录
/pgdb/pg_logicalbackups
--物理备份目录
/pgdb/pg_physicalbackups
--临时目录(用于存放导入导出文件)
/pgdb/tmp
--脚本目录
/pgdb/scripts

mkdir -p /pgdb/{data,pg_archive,pg_logicalbackups,pg_physicalbackups,scripts,tmp}
生产环境建议,postgresql安装和数据存放目录是服务器单独挂载的一块磁盘,。这样做的好处:一是方便数据备份(硬件层面或软件层面),二是操作系统出现的问题,不影响数据安全。

3.12、解压安装介质

--上传安装介质至/opt
[root@localhost opt]# ls -l /opt | grep pos*
-rw-r--r--. 1 root root   28794023 aug 19 14:03 postgresql-14.2.tar.gz
--解压
[root@localhost opt]# tar -zxf /opt/post*.gz -c /pgdb
[root@localhost opt]# mv /pgdb/post* /pgdb/pgsql
[root@localhost opt]# chown -r postgres:postgres /pgdb
cd /pgdb/pgsql
./configure --prefix=/pgdb/pgsql  --with-pgport=5432 --with-openssl --with-perl \
--with-python
gmake world -j2
gmake install-world -j2

–with-perl --with-python:使用perl和python语法的过程语言来编写自定义函数。
gmake一次性将文档及附加模块全部进行编译和安装,保证所有数据库软件的一致性,避免给后期维护操作带来麻烦

echo "##postgres user env configuration" >> /home/postgres/.bash_profile
cp /home/postgres/.bash_profile  /home/postgres/.bash_profilebak
sed -i 's/^export path/#export path/'  /home/postgres/.bash_profile
echo "#add by postgres" >>  /home/postgres/.bash_profile
echo 'export pghome=/pgdb/pgsql' >>  /home/postgres/.bash_profile
echo 'export pgdata=/pgdb/data' >>  /home/postgres/.bash_profile
echo 'export pgport=5432' >>  /home/postgres/.bash_profile
echo 'export path=$pghome/bin:$path' >>  /home/postgres/.bash_profile
echo 'export manpath=$pghome/share/man:$manpath' >>  /home/postgres/.bash_profile
echo 'export ld_library_path=$pghome/lib:$ld_library_path' >>  /home/postgres/.bash_profile
echo 'export lang="en_us.utf-8"' >>  /home/postgres/.bash_profile
echo 'export date=`date  "%y%m%d%h%m"`' >>  /home/postgres/.bash_profile
source /home/postgres/.bash_profile	
su - postgres
echo "top@123" > /home/postgres/.pgpass
chmod 0600 /home/postgres/.pgpass
/pgdb/pgsql/bin/initdb  --username=postgres --pwfile=/home/postgres/.pgpass \
-d /pgdb/data \
--encoding=utf8 \
--lc-collate=en_us.utf-8 --lc-ctype=en_us.utf-8
参数说明:
--lc-collate: 字符串排序的顺序
--lc-ctype:字符分类

配置文件:
位置:数据目录pgdata目录
/pgdb/data/postgresql.conf --数据库参数
/pgdb/data/pg_hba.conf --用户访问权限文件

7.1、数据库参数配置

--更改配置文件
cp /pgdb/data/postgresql.conf /pgdb/data/postgresql.confbak
sed -i "/^#listen_addresses = 'localhost'/s/#listen_addresses = 'localhost'/listen_addresses = '*'/" /pgdb/data/postgresql.conf
sed -i "s/^#port = 5432/port = 5432/" /pgdb/data/postgresql.conf
sed -i 's/max_connections = 100/max_connections = 500/' /pgdb/data/postgresql.conf
sed -i "/^#wal_level/s/^#//" /pgdb/data/postgresql.conf #去掉注释
sed -i 's/#archive_mode = off/archive_mode = on/' /pgdb/data/postgresql.conf
sed -i "/^#archive_command = ''/s/#archive_command = ''/archive_command ='\/usr\/bin\/lz4 -q -z %p \/pgdb\/pg_archive\/%f.lz4'/" /pgdb/data/postgresql.conf  #-q取消警告-z强制压缩
sed -i "/^#log_destination = 'stderr'/s/#log_destination = 'stderr'/log_destination = 'csvlog'/" /pgdb/data/postgresql.conf
sed -i "/^#logging_collector = off/s/#logging_collector = off/logging_collector = on/" /pgdb/data/postgresql.conf
sed -i "/^#log_directory = 'log'/s/^#//" /pgdb/data/postgresql.conf #去掉注释
sed -i "/^#log_filename/s/^#//" /pgdb/data/postgresql.conf #去掉注释
sed -i "/^#log_file_mode/s/^#//" /pgdb/data/postgresql.conf #去掉注释
sed -i "/^#log_rotation_age/s/^#//" /pgdb/data/postgresql.conf #去掉注释
sed -i "/^#log_rotation_size/s/^#//" /pgdb/data/postgresql.conf #去掉注释
sed -i "/^shared_buffers = 128mb/s/shared_buffers = 128mb/shared_buffers = 1024mb/" /pgdb/data/postgresql.conf #物理内存25~40%
sed -i "/^#work_mem = 4mb/s/#work_mem = 4mb/work_mem = 30mb/" /pgdb/data/postgresql.conf
sed -i "/^#maintenance_work_mem = 64mb/s/#maintenance_work_mem = 64mb/maintenance_work_mem = 256mb/" /pgdb/data/postgresql.conf
sed -i "/^#temp_buffers = 8mb/s/#temp_buffers = 8mb/temp_buffers = 256mb/" /pgdb/data/postgresql.conf

max_connections = 100

shared_buffers =1gb

7.2、用户访问权限配置

cat > /pgdb/data/pg_hba.conf << eof

local all all trust
host all all 0.0.0.0/0 md5
eof
第一行的内容表示local本机,all所有用户可以访问postgre的所有数据库,并且密码发送方式不需要加密(trust)。
第二行的内容用于远程访问,指定了可以访问postgresql数据库的远程用户的ip范围, 0.0.0.0/0 表示所有ip都可以。如果你希望指定ip段,可以像这样去配置192.168.3.1/24(表示的ip范围是:192.168.3.1到192.168.3.255)。md5表示数据库访问密码使用md5的加密方式发送。

--初始化postgres用户密码
alter user postgres with password '你设置的密码';
--创建新用户
create user top_sjjs with encrypted password 'top_sjjs';
alter user top_sjjs with superuser;
--创建数据库
create database mix_db owner top_sjjs;
grant all privileges on database mix_db to top_sjjs;
grant all privileges on all tables in schema public to top_sjjs;
--创建程序用户,用于操作数据库表里面的数据,完成增删改查
create user top_sjjs with encrypted password 'top_sjjs';
grant  update,delete,insert,select  on  all tables in schema public to top_sjjs;
--启动命令
pg_ctl start -d /pgdb/data
--重启命令
pg_ctl restart  -d /pgdb/data
--查看数据库运行状态
pg_ctl status  -d /pgdb/data
--停止数据库
pg_ctl stop  -d /pgdb/data

为了让postgresql在以后每次服务器重启之后,都能够自动启动,写一个自启动配置文件。下面的命令需要使用root用户执行

cat > /usr/lib/systemd/system/postgres.service << "eof"
[unit]
description=postgresql database server
after=network.target
[service]
type=forking
user=postgres
group=postgres
environment=pgport=5432
environment=pgdata=/pgdb/data
oomscoreadjust=-1000
execstart=/pgdb/pgsql/bin/pg_ctl start -d $pgdata
execstop=/pgdb/pgsql/pg_ctl stop -d $pgdata -s -m fast
execreload=/pgdb/pgsql/bin/pg_ctl reload -d $pgdata -s
timeoutsec=300
[install]
wantedby=multi-user.target
eof
chmod  x /usr/lib/systemd/system/postgres.service
systemctl daemon-reload
systemctl start postgres.service
systemctl enable postgres.service
ps -ef | grep postgres

10.1.参数配置

--更改配置文件
cp /pgdb/data/postgresql.conf /pgdb/data/postgresql.confbak
sed -i "/^#listen_addresses = 'localhost'/s/#listen_addresses = 'localhost'/listen_addresses = '*'/" /pgdb/data/postgresql.conf
sed -i "s/^#port = 5432/port = 5432/" /pgdb/data/postgresql.conf
sed -i 's/max_connections = 100/max_connections = 500/' /pgdb/data/postgresql.conf
sed -i "/^#wal_level/s/^#//" /pgdb/data/postgresql.conf #去掉注释
sed -i 's/#archive_mode = off/archive_mode = on/' /pgdb/data/postgresql.conf
sed -i "/^#archive_command = ''/s/#archive_command = ''/archive_command ='\/usr\/bin\/lz4 -q -z %p \/pgdb\/pg_archive\/%f.lz4'/" /pgdb/data/postgresql.conf  #-q取消警告-z强制压缩
sed -i "/^#log_destination = 'stderr'/s/#log_destination = 'stderr'/log_destination = 'csvlog'/" /pgdb/data/postgresql.conf
sed -i "/^#logging_collector = off/s/#logging_collector = off/logging_collector = on/" /pgdb/data/postgresql.conf
sed -i "/^#log_directory = 'log'/s/^#//" /pgdb/data/postgresql.conf #去掉注释
sed -i "/^#log_filename/s/^#//" /pgdb/data/postgresql.conf #去掉注释
sed -i "/^#log_file_mode/s/^#//" /pgdb/data/postgresql.conf #去掉注释
sed -i "/^#log_rotation_age/s/^#//" /pgdb/data/postgresql.conf #去掉注释
sed -i "/^#log_rotation_size/s/^#//" /pgdb/data/postgresql.conf #去掉注释
sed -i "/^shared_buffers = 128mb/s/shared_buffers = 128mb/shared_buffers = 1024mb/" /pgdb/data/postgresql.conf #物理内存25~40%
sed -i "/^#work_mem = 4mb/s/#work_mem = 4mb/work_mem = 30mb/" /pgdb/data/postgresql.conf
sed -i "/^#maintenance_work_mem = 64mb/s/#maintenance_work_mem = 64mb/maintenance_work_mem = 256mb/" /pgdb/data/postgresql.conf
sed -i "/^#temp_buffers = 8mb/s/#temp_buffers = 8mb/temp_buffers = 256mb/" /pgdb/data/postgresql.conf
--重启数据库
systemctl restart postgres.service

10.2.手动切归档

/pgdb/pgsql/bin/psql -upostgres -w -d postgres -h127.0.0.1 -p5432 -c "select pg_switch_wal();"

10.3.归档定期删除策略

cat >> /var/spool/cron/postgres << "eof"
# postgresbegin
#设置归档策略:每晚零点10分删除7天前归档文件,视情况更改成1个月
10 00 * * * find /server/data/pgdb/pg_archive -type f -name "0000000*" -mtime  7 -exec rm {} \; > /dev/null 2>&1
#设置日志保留2天,视情况更改成半年或3个月
00 01 * * * find /server/data/pgdb/data/log -type f -name "postgresql*.log" -mtime  7 -exec rm {} \; > /dev/null 2>&1
00 01 * * * find /server/data/pgdb/data/log -type f -name "postgresql*.csv" -mtime  7 -exec rm {} \; > /dev/null 2>&1
eof
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【米乐app官网下载的版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论

网站地图