ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

PostgreSQL12安装(二)

2021-08-16 18:32:20  阅读:346  来源: 互联网

标签:web PostgreSQL postgres -- PostgreSQL12 编译 安装


通过源码编译安装

1. 下载源码
在PostgreSQL官方主页https://www.postgresql.org/ftp/source/下载区选择所需格式的源码包下载;
wget https://ftp.postgresql.org/pub/source/v12.3/postgresql-12.3.tar.gz
下载之后解压
tar xf postgresql-12.3.tar.gz
2. 运行configure程序配置编译选项
运行configure程序之前,需要先准备好编译环境和安装必要的包:
yum groupinstall "Development tools"
yum install -y bison flex readline-devel zlib-devel
在源代码目录中运行configure --help命令查看支持的配置编译选项:
cd postgresql-12.3
./configure --help|less
PostgreSQL支持的编译选项众多,常用的编译选项有:

  • --prefix=PREFIX:指定安装目录,默认的安装目录为”/usr/local/pgsql“;
  • --includedir=DIR:指定C和C++的头文件目录,默认的安装目录为”PREFIX/include“;
  • --with-pgport=PORTNUM:指定初始化数据目录时的默认端口,这个值可以在安装之后进行修改(需要重启数据库),修改它只在自行制作RPM包时有用,其它时候意义并不大;
  • --with-blocksize=BLOCKSIZE:指定数据文件的块大小,默认的是8kB,如果在OLAP场景下可以适当增加这个值到32kB,以提高OLAP的性能,但在OLTP场景下建议使用8kB默认值;
  • --with-segsize=SEGSIZE:指定单个文件的大小,默认是1GB;
  • --with-wal-blocksize=BLOCKSIZE:指定WAL文件的块大小,默认是8kB;
  • --with-wal-segsize=SEGSIZE:指定单个WAL文件的大小,默认是16MB。
    由于”--with-xxx-size“这4个参数都只能在编译的时候指定,所以在修改它们之前,请提前做好规划和严格的测试,否则后期再做调整,只能将数据导出重新导入,如果数据量很大会令人抓狂。
    运行configure配置编译选项如下所示:
    ./configure --prefix=/web/pgsql12/ --with-pgport=5432
    运行configure程序的国产中,如果遇到类似”configure:error:readline library not found“的错误,说明缺少所需的包或者开发包,通过yum进行安装即可。
    3. 编译安装
    在Linux中,PostgreSQL的编译和安装使用GNU make程序,编译使用gmake命令,安装使用gmake install命令。如果希望在编译和安装时,一次性将文档及附加模块全部进行编译和安装,可以使用gmake world命令和gmake install-world命令。对于已经安装的数据库,再单独对文档和模块进行编译和安装也是可以的,但仍然推荐使用带有world的编译和安装命令一次做完这些事,这样可以保证网络中所有数据库软件的一致性,也避免给后期维护工作带来麻烦。
    执行gmak或gmake world程序进行编译,如下所示:
    gmake
    如果使用gmake进行编译,当看到最后一行的输出为”All of PostgreSQL successfully made. Ready to install.“说明已经编译成功。
    如果使用gmake world进行编译,当看到最后一行的输出为”PostgreSQL,contrib,and documentation successfully made. Ready to install.“说明已经编译成功。
    gamke install
    如果使用gmake install进行安装,当看到最后一行的输出为”PostgreSQL installation complete.“说明已经安装成功。
    如果使用gmake install-world进行安装,当看到最后一行的输出为”PostgreSQL,contrib,and documentation installation complete.“说明已经安装成功。
    查看安装的PostgreSQL版本的命令如下所示:
    /web/pgsql12/bin/postgres --version
    postgres (PostgreSQL) 12.3
    4. 设置一个软链接
    有时候我们为了方便工作,会自己写一些shell或Python脚本处理一些定时任务,经常会通过类似/web/pg12.x这样的全路径调用一些工具,使用环境变量也会有一些其它的问题存在,如何尽可能的避免这种麻烦?很简单。
    创建一个/web/pgsql的软链接指向当前版本即可,命令如下:
    ln -s /web/pgsql12 /web/pgsql
    当进行了版本变更之后,不需要调整大量的脚本,只需要修改这个软链接即可。
    至此,我们已经成功的安装了PostgreSQL数据库:
    tree -L 1 /web/pgsql12/
    /web/pgsql12/
    ├── bin
    ├── include
    ├── lib
    └── share
    5. 创建操作系统用户
    groupadd -g 1005 postgres
    useradd -g 1005 -u 1005 postgres
    id postgres
    uid=1005(postgres) gid=1005(postgres) 组=1005(postgres)
    注意事项:
  • 出于安全考虑,这个操作系统用户不能是root或者具有操作系统管理员权限的账号,例如拥有sudo权限的用户;
  • 如果是部署集群,建议配置NTP服务,统一集群中每个节点的操作系统用户的uid和gid,如果集群中某些节点的数据库操作系统用户的uid和gid与其它节点不一致,可以通过groupmod命令和usermod命令进行修改,例:
    groupmod -g 100 postgres
    usermod -u 100 -g 100 postgres
    6. 创建数据目录
    也就是在磁盘上初始化一个数据的存储区域,通常我们称之为数据目录。
    mkdir -p /web/data_5432
    将数据目录的属主修改为我们创建的操作系统用户,并且修改数据目录的权限为0700,修改目录权限这一步其实并不需要,因为initdb会回收除PostgreSQL用户之外所有用户的访问权限。但我们应该明确知道数据目录包含所有存储在数据库里的数据,保护这个目录不受未授权的访问非常重要。
    chown -R postgres.postgres /web/data_5432
    chmod 0700 /web/data_5432
    7. 初始化数据目录
    [root@bl68 web]# /web/pgsql12/bin/initdb --help
    initdb initializes a PostgreSQL database cluster.

Usage:
initdb [OPTION]... [DATADIR]

Options:
-A, --auth=METHOD 为本地用户指定pg_hba.conf文件中的认证方法,可以为md5、trust、password等,为了安装方便,默认的值是trust,但是除非你信任数据库实例所在服务器上的所有本地用户
--auth-host=METHOD 指定通过TCP/IP连接的本地用户在pg_hba.conf中使用的认证方法;
--auth-local=METHOD 指定通过UNIX Socket连接的本地用户在pg_hba.conf文件中的认证方法;
[-D, --pgdata=]DATADIR 将要初始化的数据目录,其它选项都可以省略,只有这个选项是必需;
-E, --encoding=ENCODING 设置数据库的默认编码,实际它是设置了template的编码,因为其它新创建的数据库都是以template1为模板克隆的。
-g, --allow-group-access 设置允许的用户组在数据目录的读或执行权限。
--locale=LOCALE 设置区域
--lc-collate=, --lc-ctype=, --lc-messages=LOCALE
--lc-monetary=, --lc-numeric=, --lc-time=LOCALE
为指定的分类设置区域
--no-locale 等价于 --locale=C
--pwfile=FILE 从一个文件读取第一行作为数据库超级用户的口令
-T, --text-search-config=CFG 设置默认的文本搜索设置
-U, --username=NAME 设置数据库超级用户的用户名,默认是postgres
-W, --pwprompt 在initdb的过程中为数据库超级用户设置一个密码。
-X, --waldir=WALDIR 指定预写日志(WAL)的存储目录
--wal-segsize=SIZE 指定单个WAL文件的大小,默认是8kB
su - postgres
/web/pgsql12/bin/initdb -D /web/data_5432/
至此数据库目录初始化完成。
8. 启动和停止数据库服务器
启动
su - postgres
/web/pgsql12/bin/pg_ctl -D /web/data_5432/ start
查看状态
/web/pgsql12/bin/pg_ctl -D /web/data_5432/ status
停止
/web/pgsql12/bin/pg_ctl -D /web/data_5432/ stop

标签:web,PostgreSQL,postgres,--,PostgreSQL12,编译,安装
来源: https://www.cnblogs.com/wangjie20200529/p/15149361.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有