原创,如转发需注明出处。

多年没写博客,一直用的个人笔记软件,最近准备阅读PostgreSQL源码,故记录。(这两年PostgreSQL数据库在某些环境下是比较火的,原因想必大家都清楚。)

PostgreSQL是开放源码的数据库,支持Windows、Linux、Unix等多种操作系统。下面将会介绍PostgreSQL的编译、安装与运行。

一、Windows环境

1、环境准备

Windows10、Virtual Studio 2019社区版、PostgreSQL 14.3、MinGW(https://osdn.net/projects/mingw/downloads/68260/mingw-get-setup.exe)

MinGW安装后需要安装以下依赖包:

安装perl:https://strawberryperl.com/download/5.32.1.1/strawberry-perl-5.32.1.1-64bit.msi(注意配置环境变量)

修改文件编码,改成UTF-8 BOM编码,可以使用VS2019另存或者Notepad++修改:

postgresql-14.3\src\fe_utils\print.c  和 postgresql-14.3\src\backend\access\brin\brin_bloom.c

避免出现如下类似错误:

“D:\postgresql-14.3\pgsql.sln”(默认目标) (1) ->
“D:\postgresql-14.3\postgres.vcxproj”(默认目标) (2) ->
(ClCompile 目标) ->
D:\postgresql-14.3\src\backend\access\brin\brin_bloom.c(1,1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicod
e 格式以防止数据丢失 [D:\postgresql-14.3\postgres.vcxproj]

然后打开:

进入D:\postgresql-14.3\src\tools\msvc目录,执行命令perl build.pl DEBUG,此处使用DEBUG是方便后面调试跟踪:

编译完成后,可以执行:perl vcregress.pl check命令跑下测试。然后,执行perl install.pl D:\PostgreSQL\pg14 进行安装,需要保证安装目录已存在。

进入到pg安装目录:cd D:\PostgreSQL\pg14\bin,执行建库操作:initdb.exe -D ../data,建库完成后,启动pg数据库:pg_ctl.exe -D ../data -l logfile start,启动完成后进入数据库:psql.exe -d postgres,如下:

接下来,即可通过VS2019 Attach到进程调试pgsql了,可以通过select pg_backend_pid();查询pid,也可以直接搜索进程名称。

二、Linux编译安装

1、编译
  tar zxvf postgresql-11.6.tar.gz
  ./configure --prefix=/home/cmdev/pgsql.11.6/
  编译make -j8 && make install
 
2、安装
  创建postgres用户
   groupadd postgres
   useradd -g postgres postgres
 
  设置安装目录和data目录权限
  chown -R postgres:root /home/zxcao/pgsql/data/
  chown -R postgres:root /home/cmdev/pgsql.11.6
 
  设置环境变量
  [postgres@kunpeng data]$ cat /home/postgres/.bash_profile
  export PGHOME=/home/cmdev/pgsql.11.6
  export PGDATA=/home/zxcao/pgsql/data
  export PATH=$PGHOME/bin:$PATH
  export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH
  source /home/postgres/.bash_profile
 
  初始化数据库
  initdb -D /home/zxcao/pgsql/data
 
  启动数据库
   [postgres@kunpeng log]$ pwd
   /home/zxcao/pgsql/log
  [postgres@kunpeng log]$ pg_ctl -D /home/zxcao/pgsql/data/ -l logfile start
  查看端口是否已启动:netstat -nltp|grep 5432
 
  配置数据库允许连接
  #设置监听整个网络,查找“listen_addresses ”字符串,
  vim /home/zxcao/pgsql/data/postgresql.conf
   #修改为如下:
   listen_addresses = '*'
 
  #配置连接方式:
  vim /home/zxcao/pgsql/data/pg_hba.conf
   #修改为如下:
  host    all             all             192.168.2.0/24           md5

接下来,既可以通过gdb进行调试pgsql代码。

PostgreSQL(一) 编译安装运行的更多相关文章

  1. Phonegap项目创建 编译 安装 运行

    一.创建 Phonegap项目 1. cd workspace 2.创建phonegap项目 cordova create 目录 识别符 显示名 例如:cordova create hello com ...

  2. rehat7.X下postgresql 11编译安装

    文档目录结构: 一.准备 操作系统版本:rehat7.6 Postgresql:11.2 软件安装目录:/pgsql11/basedir 数据文件存放目录:/pgsql11data/ 11.2的下载地 ...

  3. postgresql编译安装与调试(二)

    接前文postgresql编译安装与调试(一),继续说说postgresql的编译安装与调试. 上一篇已经详细说明了如何在Linux系统上编译安装postgresql,这次我们在此基础上简单讲讲如何在 ...

  4. Linux环境PostgreSQL源码编译安装

    Linux环境PostgreSQL源码编译安装 Linux版本: Red Hat 6.4 PostgreSQL版本: postgresql-9.3.2.tar.gz 数据存放目录: /var/post ...

  5. Ubuntu下编译安装postgreSQL 10.5

    Ubuntu下编译安装postgreSQL 10.5 ubuntu 16.04 LTS系统postgreSQL 10.5 安装包准备 1.从PostgreSQL官网下载PostgreSQL的安装包 安 ...

  6. 2-21-源码编译安装LAMP

      编译安装LAMP所需要及其所使用的源码版本: httpd version:httpd-2.4.16 apr version:apr-1.5.2 pcre version:pcre-8.37 apr ...

  7. postgresql编译安装与调试(一)

    因为最近组里的项目和postgresql有关,并且需要查看和调试源码,所以专门学习了一下如何安装和调试postgresql,此博文用来记录自己的安装和调试过程.安装环境是CentOS6(CentOS7 ...

  8. postgreSQL在Centos6下编译安装

    1.准备安装源 下载地址:https://www.postgresql.org/ftp/source/ 下载并解压. 2.软件编译安装 配置.检查安装环境 ./configure --prefix=/ ...

  9. CentOS 7 源码编译安装PostgreSQL 9.5

    下载 在postgresql的官方即可找到源码文件目录,地址如下:https://www.postgresql.org/ftp/source/,在下载列表中根据需求选择版本,进入子目录后,可以看到文件 ...

随机推荐

  1. DWRUtil.addOptions

    DWRUtil.addOptions有5种模式 数组: DWRUtil.addOptions(selectid, array) 会创建一堆option,每个option的文字和值都是数组元素中的值. ...

  2. 移动端页面中点击input输入框的时候弹出的键盘将输入框挡住的问题

    使用的是vux框架, 以为是框架问题, 后来发现是把当前页面的高度写死为了height:200%: 只要把高度去掉就能让页面自动弹到输入框的上方:

  3. Vue UI 可视化项目管理界面

    除了直接使用npm的命令进行安装脚手架的安装以外,我们还可以使用Vue提供的GUI方法vue ui来进行项目的构建以及安装 win+R powershell 打开终端 在一个干净的目录下输入命令 vu ...

  4. Django实现统一包装接口返回值数据格式

    前言 最近实在太忙了,开始了一个新的项目,为了快速形成产品,我选择了Django来实现后端,然后又拿起了之前我封装了项目脚手架「DjangoStarter」. 由于前段时间我写了不少.NetCore的 ...

  5. springboot+mybatis实现数据分页(三种方式)

    项目准备 1.创建用户表 2.使用spring初始化向导快速创建项目,勾选mybatis,web,jdbc,driver 添加lombok插件 <?xml version="1.0&q ...

  6. WePY开发环境的安装和小程序生成WePY项目

    相对于微信开发者工具而言,WePY的安装和生成项目稍显复杂.特记录下安装顺序: 1.安装Node.js 在Node官网(https://nodejs.org/)下载Node.js的安装包,此处我下载的 ...

  7. re模块、collections模块、time模块、datetime模块

    正则表达式之re模块 re.findall用法(重要) re.findall( '正则表达式' , '待匹配的字符' ) 找出所有的目标字符,用列表的形式展现,如果找不到返回空列表. import r ...

  8. 在Vue3项目中使用pinia代替Vuex进行数据存储

    pinia是一个vue的状态存储库,你可以使用它来存储.共享一些跨组件或者页面的数据,使用起来和vuex非常类似.pina相对Vuex来说,更好的ts支持和代码自动补全功能.本篇随笔介绍pinia的基 ...

  9. Git原理学习记录

    Git原理学习记录 1.git init git-test ​ git init 实际上就是在特定的目录下创建对应的目录和文件 2.object $ echo "V1" > ...

  10. zookeeper面试1-9

    1.选举机制 SID:服务器ID.用来唯一标识一台ZooKeeper集群中的机器,每台机器不能重复,和myid一致. ZXID:事务ID.ZXID是一个事务ID,用来标识一次服务器状态的变更.在某一时 ...