您的位置:首页 > 数据库

PostGreSQL(1)-源码安装

2019-09-09 14:49 1856 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/devcloud/article/details/100558388

目录

  • 三、 初始化
  • 四、 自动运行
  • 五、 小试牛刀
  • 简述

    目前大多数Linux 发行版都包含了 PostGreSql的安装源,通过yumapt-get可以快速的安装好数据库。
    在一些情况下,我们需要通过源码方式进行安装。 例如发行版的软件版本不满足我们的需求,或者生产环境无法对接外网下载软件等等。
    下面将从头到尾介绍手动源码安装PostGres的全过程,供大家参考。

    一、格式化磁盘

    一般我们会为数据库挂载一个独立的磁盘用于数据存放,可以参考下面的操作完成磁盘格式化。

    不需要挂载磁盘的可跳过这部分

    A.查看磁盘信息

    [code]kwe1000570040:~ # fdisk -l
    
    Disk /dev/vda: 85.9 GB, 85899345920 bytes
    255 heads, 63 sectors/track, 10443 cylinders, total 167772160 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x000aa73e
    
    Device Boot Start End Blocks Id System
    /dev/vda1 * 2048 75505663 37751808 83 Linux
    /dev/vda2 75505664 83886079 4190208 82 Linux swap / Solaris
    
    Disk /dev/vdb: 322.1 GB, 322122547200 bytes

    这里找到待使用的磁盘为 /dev/vdb

    B.使用parted设置分区

    [code]//设置分区格式(gpt)
    parted -s /dev/vdb mklabel gpt
    
    //执行分区(1GB预留) --第一个分区用于存放工作软件
    parted -a optimal -s /dev/vdb mkpart primary 1GB 100GB
    
    //执行分区 --第二个分区用于存放数据
    parted -a optimal -s /dev/vdb mkpart extend 100GB 100%

    关于 Parted工具的使用可参考这里

    C. 格式化并挂载分区

    推荐使用XFS文件系统格式,在挂载分区时指定noatime,nodiratime选项可提升一些性能。

    [code]//XFS数据分区格式化
    mkfs.xfs -f /dev/vdb1
    mkfs.xfs -f /dev/vdb2
    
    //创建数据目录
    mkdir -p /opt/local
    mkdir -p /data
    
    chmod -R 755 /opt/local
    chmod -R 755 /data
    
    //写入FSTAB
    echo "/dev/vdb1 /opt/local xfs noatime,nodiratime 0 0">> "/etc/fstab"
    echo "/dev/vdb2 /data xfs noatime,nodiratime 0 0">> "/etc/fstab"
    
    //挂载目录
    mount -a

    二、源码安装 PostGreSql

    1. 安装 readline-devel

    需事先安装 readline,否则编译过程会报错

    [code]wget https://ftp.gnu.org/gnu/readline/readline-6.0.tar.gz
    tar -xzvf readline-6.0.tar.gz
    cd readline
    ./configure
    make && make install

    2. 安装 PostGresql

    执行下面的命令,将会完成源码下载、编码以及安装

    [code]wget https://ftp.postgresql.org/pub/source/v10.6/postgresql-10.6.tar.gz
    tar -xzvf postgresql-10.6.tar.gz
    cd postgresql-10.6
    
    ./configure --prefix=/opt/local/postgres
    make && make install

    --prefix表示安装的目标路径,在安装完成后可以进入该目录找到对应的执行程序。

    这里使用的是postgresql-10.6的版本,可以从这里下载到不同的版本。

    3. 设置环境变量

    编辑 /etc/profile 文件,在末尾加入:

    [code]export PG_HOME=/opt/local/postgres
    export PATH=$PG_HOME/bin:$PATH

    再次执行 source /etc/profile即完成环境变量设置。
    接下来,需要设置动态链接库的加载路径(LD_LIBRARY_PATH),否则会报找不到libpq.so.5的错误,如下:

    [code]./psql: error while loading shared libraries: libpq.so.5: cannot open shared object file: No such file or directory

    设置链接库路径

    [code]sudo /sbin/ldconfig /opt/local/pgsql/lib

    或通过编辑/etc/profile,加入:

    [code]LD_LIBRARY_PATH=/usr/local/pgsql/lib
    export LD_LIBRARY_PATH

    三、 初始化

    1. 设置运行用户

    [code]groupadd postgres
    useradd -G postgres postgres
    passwd postgres
    ...

    2. 初始化数据库

    [code]
    //执行初始化
    su postgres -c 'pg_ctl -D /data/pgsql/data initdb'
    //启动数据库
    su postgres -c 'pg_ctl start -D /data/pgsql/data -l serverlog'

    su postgres -c '...'表示以postgres 的权限来执行程序。
    pg_ctl 是postgres 提供的控制程序,可用于初始化、启动、停止数据库进程。

    执行完上述的命令,可以发现在 /data/pgsql/data目录中生成了一系列的数据库文件,如下:

    [code]-rw------- 1 postgres users 3 Mar 5 17:18 PG_VERSION
    drwx------ 6 postgres users 50 Mar 5 18:22 base
    drwx------ 2 postgres users 4.0K Mar 5 17:50 global
    drwx------ 2 postgres users 6 Mar 5 17:18 pg_commit_ts
    drwx------ 2 postgres users 6 Mar 5 17:18 pg_dynshmem
    -rw------- 1 postgres users 4.5K Mar 5 17:18 pg_hba.conf
    -rw------- 1 postgres users 1.6K Mar 5 17:18 pg_ident.conf
    drwx------ 4 postgres users 65 Mar 5 18:28 pg_logical
    drwx------ 4 postgres users 34 Mar 5 17:18 pg_multixact
    drwx------ 2 postgres users 17 Mar 5 17:49 pg_notify
    drwx------ 2 postgres users 6 Mar 5 17:18 pg_replslot
    drwx------ 2 postgres users 6 Mar 5 17:18 pg_serial
    drwx------ 2 postgres users 6 Mar 5 17:18 pg_snapshots
    drwx------ 2 postgres users 6 Mar 5 17:49 pg_stat
    drwx------ 2 postgres users 60 Mar 7 16:06 pg_stat_tmp
    drwx------ 2 postgres users 17 Mar 5 17:18 pg_subtrans
    drwx------ 2 postgres users 6 Mar 5 17:18 pg_tblspc
    drwx------ 2 postgres users 6 Mar 5 17:18 pg_twophase
    drwx------ 3 postgres users 58 Mar 5 17:18 pg_wal
    drwx------ 2 postgres users 17 Mar 5 17:18 pg_xact
    -rw------- 1 postgres users 88 Mar 5 17:18 postgresql.auto.conf
    -rw------- 1 postgres users 23K Mar 5 17:18 postgresql.conf
    -rw------- 1 postgres users 57 Mar 5 17:49 postmaster.opts
    -rw------- 1 postgres users 83 Mar 5 17:49 postmaster.pid
    -rw-r--r-- 1 postgres users 1.2K Mar 5 18:22 serverlog

    其中,需要了解的几个文件:

    文件 描述
    postmaster.pid 首行记录了进程PID
    serverlog 数据库日志
    postgresql.conf 主配置文件(可做定制
    pg_hba.conf 鉴权相关文件
    PG_VERSION 当前主版本号

    3. 设置远程访问

    编辑 pg_hba.conf文件,在末尾添加一行:

    [code]host all all 0.0.0.0/0 md5

    为了让 postgres用户可以远程访问,可以通过 psql 设置密码:

    [code]alter user postgres with password 'postgres';

    开启远程访问
    默认情况下 postgresql 仅仅监听本机的端口,需要编辑 /webdata/pgsql/data/postgresql.conf 文件开启远程IP的访问

    [code]listen_addresses = '*'

    4. 常用命令

    如果需要定制端口,可以执行脚本:

    [code]postgres -p 5430 -D /data/pgsql/data >serverlog 2>&1 &

    检查进程是否存活:

    [code]netstat -nlp |grep `head -1 /data/pgsql/data/postmaster.pid`

    停止数据库进程

    [code]kill -INT `head -1 /data/pgsql/data/postmaster.pid`

    四、 自动运行

    数据库一般需要设置为随系统启动运行,省去每次重启要手动拉起进程的麻烦。

    1. 配置到服务

    找到源码目录中 contrib/start-scripts/linux脚本文件,拷贝为 /etc/init.d/postgres

    修改内容如下:

    [code]
    # 程序所在目录
    prefix=/opt/local/postgres
    
    # 数据目录
    PGDATA="/data/pgsql/data"
    
    # 运行用户
    PGUSER=postgres
    
    # 日志文件
    PGLOG="$PGDATA/serverlog"

    设置执行权限

    [code]chmod +x /etc/init.d/postgres

    此后,执行以下命令可以方便的启停服务

    [code]//手动启动服务
    service postgres start
    
    //查看服务状态
    service postgres status
    
    //手动停止服务
    service postgres stop

    2. 设置自启动

    执行以下命令:

    [code]//设置开机启动
    chkconfig --add postgres

    如果需要对数据库做一些参数修改,可以编辑 $DATA_DIR/postgres.conf 这个文件

    五、 小试牛刀

    按照前面的步骤做好了数据库的安装及配置之后,输入以下命令:

    [code]psql -U postgres -p 5432
    
    > select version();

    回车,可以看到以下输出:

    [code]                                                version
    ---------------------------------------------------------------------------------------------------------------------
    PostgreSQL 10.6 on x86_64-pc-linux-gnu, compiled by gcc (SUSE Linux) 4.3.4 [gcc-4_3-branch revision 152973], 64-bit
    (1 row)

    至此,我们就已经完成了整个源码的安装过程!

    作者:美码师

    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: