暂无图片
暂无图片
18
暂无图片
暂无图片
暂无图片

课程笔记 | PostgreSQL深入浅出 | CentOS7.9安装PG12

1、目录规划

介质目录: /root
程序目录: /usr/local/pgsql
数据目录: /usr/local/pgsql/pgdata
日志目录: /usr/local/pgsql/pglog
归档目录: /usr/local/pgsql/archive

2、创建相关目录

mkdir -p /usr/local/pgsql
mkdir -p /usr/local/pgsql/pgdata
mkdir -p /usr/local/pgsql/pglog
mkdir -p /usr/local/pgsql/pgarch


3、创建Postgres用户

useradd -u 2000 postgres
echo postgres | passwd --stdin postgres


4、解压安装介质

cd ~
tar zxf postgresql-12.12.tar.gz -C /usr/local/pgsql


5、配置YUM仓库

挂载系统介质并配置yum
确保虚拟机光驱是连接状态

mount /dev/sr0 /mnt


备份当前yum

cd /etc/yum.repos.d/
mkdir bak
mv *.repo bak/

编辑repo配置文件,加入如下内容

cat > /etc/yum.repos.d/local.repo <<EOF
[base]
name=base
baseurl=file:///mnt
enabled=1
gpgcheck=0
multilib_policy=all
EOF


yum clean all && yum makecache && yum update && yum repolist


6、安装依赖包

yum install -y libicu-devel zlib-devel readline readline-devel perl-ExtUtils-Embed perl-ExtUtils-MakeMaker pam-devel openssl-devel openldap-devel libxml2-devel libxslt-devel systemd-devel tcl-devel gcc net-tools python python-devel

7、编译前检查

cd /usr/local/pgsql/postgresql-12.12/ && mv * ..
cd .. && rm -rf postgresql-12.12 && ls


export PREFIX=/usr/local/pgsql
export PGPORT=5432
./configure

[root@localhost pgsql]# ./configure

checking build system type... x86_64-pc-linux-gnu

checking host system type... x86_64-pc-linux-gnu

checking which template to use... linux

checking whether NLS is wanted... no

checking for default port number... 5432

checking for block size... 8kB

checking for segment size... 1GB

checking for WAL block size... 8kB

checking for gcc... gcc

checking whether the C compiler works... yes

checking for C compiler default output file name... a.out

checking for suffix of executables...

checking whether we are cross compiling... no

checking for suffix of object files... o

checking whether we are using the GNU C compiler... yes

checking whether gcc accepts -g... yes

checking for gcc option to accept ISO C89... none needed

checking for gcc option to accept ISO C99... -std=gnu99

checking for g++... no

checking for c++... no

checking whether we are using the GNU C++ compiler... no

checking whether g++ accepts -g... no

checking for gawk... gawk

checking whether gcc -std=gnu99 supports -Wdeclaration-after-statement, for CFLAGS... yes

checking whether gcc -std=gnu99 supports -Werror=vla, for CFLAGS... yes

checking whether gcc -std=gnu99 supports -Wendif-labels, for CFLAGS... yes

checking whether g++ supports -Wendif-labels, for CXXFLAGS... no

checking whether gcc -std=gnu99 supports -Wmissing-format-attribute, for CFLAGS... yes

checking whether g++ supports -Wmissing-format-attribute, for CXXFLAGS... no

checking whether gcc -std=gnu99 supports -Wformat-security, for CFLAGS... yes

checking whether g++ supports -Wformat-security, for CXXFLAGS... no

checking whether gcc -std=gnu99 supports -fno-strict-aliasing, for CFLAGS... yes

checking whether g++ supports -fno-strict-aliasing, for CXXFLAGS... no

checking whether gcc -std=gnu99 supports -fwrapv, for CFLAGS... yes

checking whether g++ supports -fwrapv, for CXXFLAGS... no

checking whether gcc -std=gnu99 supports -fexcess-precision=standard, for CFLAGS... yes

checking whether g++ supports -fexcess-precision=standard, for CXXFLAGS... no

checking whether gcc -std=gnu99 supports -funroll-loops, for CFLAGS_VECTOR... yes

checking whether gcc -std=gnu99 supports -ftree-vectorize, for CFLAGS_VECTOR... yes

checking whether gcc -std=gnu99 supports -Wunused-command-line-argument, for NOT_THE_CFLAGS... no

checking whether gcc -std=gnu99 supports -Wcompound-token-split-by-macro, for NOT_THE_CFLAGS... no

checking whether gcc -std=gnu99 supports -Wformat-truncation, for NOT_THE_CFLAGS... no

checking whether gcc -std=gnu99 supports -Wstringop-truncation, for NOT_THE_CFLAGS... no

checking whether the C compiler still works... yes

checking how to run the C preprocessor... gcc -std=gnu99 -E

checking for pkg-config... /usr/bin/pkg-config

checking pkg-config is at least version 0.9.0... yes

checking allow thread-safe client libraries... yes

checking whether to build with ICU support... no

checking whether to build with Tcl... no

checking whether to build Perl modules... no

checking whether to build Python modules... no

checking whether to build with GSSAPI support... no

checking whether to build with PAM support... no

checking whether to build with BSD Authentication support... no

checking whether to build with LDAP support... no

checking whether to build with Bonjour support... no

checking whether to build with OpenSSL support... no

checking whether to build with SELinux support... no

checking whether to build with systemd support... no

checking whether to build with XML support... no

checking for grep that handles long lines and -e... /usr/bin/grep

checking for egrep... /usr/bin/grep -E

checking for ld used by GCC... /usr/bin/ld

checking if the linker (/usr/bin/ld) is GNU ld... yes

checking for ranlib... ranlib

checking for strip... strip

checking whether it is possible to strip libraries... yes

checking for ar... ar

checking for a BSD-compatible install... /usr/bin/install -c

checking for tar... /usr/bin/tar

checking whether ln -s works... yes

checking for a thread-safe mkdir -p... /usr/bin/mkdir -p

checking for bison... no

configure: WARNING:

*** Without Bison you will not be able to build PostgreSQL from Git nor

*** change any of the parser definition files.  You can obtain Bison from

*** a GNU mirror site.  (If you are using the official distribution of

*** PostgreSQL then you do not need to worry about this, because the Bison

*** output is pre-generated.)

checking for flex... no

configure: WARNING:

*** Without Flex you will not be able to build PostgreSQL from Git nor

*** change any of the scanner definition files.  You can obtain Flex from

*** a GNU mirror site.  (If you are using the official distribution of

*** PostgreSQL then you do not need to worry about this because the Flex

*** output is pre-generated.)

checking for perl... /usr/bin/perl

configure: using perl 5.16.3

checking for a sed that does not truncate output... /usr/bin/sed

checking for ANSI C header files... yes

checking for sys/types.h... yes

checking for sys/stat.h... yes

checking for stdlib.h... yes

checking for string.h... yes

checking for memory.h... yes

checking for strings.h... yes

checking for inttypes.h... yes

checking for stdint.h... yes

checking for unistd.h... yes

checking whether gcc -std=gnu99 is Clang... no

checking whether pthreads work with -pthread... yes

checking for joinable pthread attribute... PTHREAD_CREATE_JOINABLE

checking whether more special flags are required for pthreads... no

checking for PTHREAD_PRIO_INHERIT... yes

checking pthread.h usability... yes

checking pthread.h presence... yes

checking for pthread.h... yes

checking for strerror_r... yes

checking for getpwuid_r... yes

checking for gethostbyname_r... yes

checking whether strerror_r returns int... no

checking for main in -lm... yes

checking for library containing setproctitle... no

checking for library containing dlsym... -ldl

checking for library containing socket... none required

checking for library containing shl_load... no

checking for library containing getopt_long... none required

checking for library containing crypt... -lcrypt

checking for library containing shm_open... -lrt

checking for library containing shm_unlink... none required

checking for library containing clock_gettime... none required

checking for library containing fdatasync... none required

checking for library containing sched_yield... none required

checking for library containing gethostbyname_r... none required

checking for library containing shmget... none required

checking for library containing readline... -lreadline

checking for inflate in -lz... yes

checking for stdbool.h that conforms to C99... yes

checking for _Bool... yes

checking atomic.h usability... no

checking atomic.h presence... no

checking for atomic.h... no

checking copyfile.h usability... no

checking copyfile.h presence... no

checking for copyfile.h... no

checking crypt.h usability... yes

checking crypt.h presence... yes

checking for crypt.h... yes

checking fp_class.h usability... no

checking fp_class.h presence... no

checking for fp_class.h... no

checking getopt.h usability... yes

checking getopt.h presence... yes

checking for getopt.h... yes

checking ieeefp.h usability... no

checking ieeefp.h presence... no

checking for ieeefp.h... no

checking ifaddrs.h usability... yes

checking ifaddrs.h presence... yes

checking for ifaddrs.h... yes

checking langinfo.h usability... yes

checking langinfo.h presence... yes

checking for langinfo.h... yes

checking mbarrier.h usability... no

checking mbarrier.h presence... no

checking for mbarrier.h... no

checking poll.h usability... yes

checking poll.h presence... yes

checking for poll.h... yes

checking sys/epoll.h usability... yes

checking sys/epoll.h presence... yes

checking for sys/epoll.h... yes

checking sys/ipc.h usability... yes

checking sys/ipc.h presence... yes

checking for sys/ipc.h... yes

checking sys/prctl.h usability... yes

checking sys/prctl.h presence... yes

checking for sys/prctl.h... yes

checking sys/procctl.h usability... no

checking sys/procctl.h presence... no

checking for sys/procctl.h... no

checking sys/pstat.h usability... no

checking sys/pstat.h presence... no

checking for sys/pstat.h... no

checking sys/resource.h usability... yes

checking sys/resource.h presence... yes

checking for sys/resource.h... yes

checking sys/select.h usability... yes

checking sys/select.h presence... yes

checking for sys/select.h... yes

checking sys/sem.h usability... yes

checking sys/sem.h presence... yes

checking for sys/sem.h... yes

checking sys/shm.h usability... yes

checking sys/shm.h presence... yes

checking for sys/shm.h... yes

checking sys/sockio.h usability... no

checking sys/sockio.h presence... no

checking for sys/sockio.h... no

checking sys/tas.h usability... no

checking sys/tas.h presence... no

checking for sys/tas.h... no

checking sys/un.h usability... yes

checking sys/un.h presence... yes

checking for sys/un.h... yes

checking termios.h usability... yes

checking termios.h presence... yes

checking for termios.h... yes

checking ucred.h usability... no

checking ucred.h presence... no

checking for ucred.h... no

checking utime.h usability... yes

checking utime.h presence... yes

checking for utime.h... yes

checking wchar.h usability... yes

checking wchar.h presence... yes

checking for wchar.h... yes

checking wctype.h usability... yes

checking wctype.h presence... yes

checking for wctype.h... yes

checking for net/if.h... yes

checking for sys/ucred.h... no

checking for netinet/tcp.h... yes

checking readline/readline.h usability... yes

checking readline/readline.h presence... yes

checking for readline/readline.h... yes

checking readline/history.h usability... yes

checking readline/history.h presence... yes

checking for readline/history.h... yes

checking zlib.h usability... yes

checking zlib.h presence... yes

checking for zlib.h... yes

checking whether byte ordering is bigendian... no

checking for inline... inline

checking for printf format archetype... gnu_printf

checking for flexible array members... yes

checking for signed types... yes

checking for __func__... yes

checking for _Static_assert... yes

checking for typeof... typeof

checking for __builtin_types_compatible_p... yes

checking for __builtin_constant_p... yes

checking for __builtin_unreachable... yes

checking for computed goto support... yes

checking whether struct tm is in sys/time.h or time.h... time.h

checking for struct tm.tm_zone... yes

checking for tzname... yes

checking for union semun... no

checking for struct sockaddr_un... yes

checking for struct sockaddr_storage... yes

checking for struct sockaddr_storage.ss_family... yes

checking for struct sockaddr_storage.__ss_family... no

checking for struct sockaddr_storage.ss_len... no

checking for struct sockaddr_storage.__ss_len... no

checking for struct sockaddr.sa_len... no

checking for struct addrinfo... yes

checking for intptr_t... yes

checking for uintptr_t... yes

checking for unsigned long long int... yes

checking for long long int... yes

checking for locale_t... yes

checking for C/C++ restrict keyword... __restrict

checking for struct cmsgcred... no

checking for struct option... yes

checking for z_streamp... yes

checking whether assembler supports x86_64 popcntq... yes

checking for special C compiler options needed for large files... no

checking for _FILE_OFFSET_BITS value needed for large files... no

checking size of off_t... 8

checking size of bool... 1

checking for int timezone... yes

checking types of arguments for accept()... int, int, struct sockaddr *, socklen_t *

checking whether gettimeofday takes only one argument... no

checking for wcstombs_l declaration... no

checking for cbrt... yes

checking for clock_gettime... yes

checking for copyfile... no

checking for fdatasync... yes

checking for getifaddrs... yes

checking for getpeerucred... no

checking for getrlimit... yes

checking for mbstowcs_l... no

checking for memmove... yes

checking for poll... yes

checking for posix_fallocate... yes

checking for ppoll... yes

checking for pstat... no

checking for pthread_is_threaded_np... no

checking for readlink... yes

checking for setproctitle... no

checking for setproctitle_fast... no

checking for setsid... yes

checking for shm_open... yes

checking for strchrnul... yes

checking for strsignal... yes

checking for symlink... yes

checking for sync_file_range... yes

checking for uselocale... yes

checking for utime... yes

checking for utimes... yes

checking for wcstombs_l... no

checking for __builtin_bswap16... yes

checking for __builtin_bswap32... yes

checking for __builtin_bswap64... yes

checking for __builtin_clz... yes

checking for __builtin_ctz... yes

checking for __builtin_popcount... yes

checking for __builtin_frame_address... yes

checking for fseeko... yes

checking for _LARGEFILE_SOURCE value needed for large files... no

checking how gcc -std=gnu99 reports undeclared, standard C functions... error

checking for posix_fadvise... yes

checking whether posix_fadvise is declared... yes

checking whether fdatasync is declared... yes

checking whether strlcat is declared... no

checking whether strlcpy is declared... no

checking whether strnlen is declared... yes

checking whether F_FULLFSYNC is declared... no

checking whether RTLD_GLOBAL is declared... yes

checking whether RTLD_NOW is declared... yes

checking for struct sockaddr_in6... yes

checking for PS_STRINGS... no

checking for isinf... yes

checking for crypt... yes

checking for dlopen... yes

checking for fls... no

checking for getopt... yes

checking for getrusage... yes

checking for inet_aton... yes

checking for mkdtemp... yes

checking for pread... yes

checking for pwrite... yes

checking for random... yes

checking for rint... yes

checking for srandom... yes

checking for strlcat... no

checking for strlcpy... no

checking for strnlen... yes

checking for strtof... yes

checking for setenv... yes

checking for unsetenv... yes

checking for getpeereid... no

checking for getaddrinfo... yes

checking for getopt_long... yes

checking for syslog... yes

checking syslog.h usability... yes

checking syslog.h presence... yes

checking for syslog.h... yes

checking for opterr... yes

checking for optreset... no

checking for strtoll... yes

checking for strtoull... yes

checking whether strtoll is declared... yes

checking whether strtoull is declared... yes

checking for rl_completion_append_character... yes

checking for rl_completion_matches... yes

checking for rl_filename_completion_function... yes

checking for rl_reset_screen_size... yes

checking for append_history... yes

checking for history_truncate_file... yes

checking test program... ok

checking whether long int is 64 bits... yes

checking for __builtin_mul_overflow... no

checking size of void *... 8

checking size of size_t... 8

checking size of long... 8

checking whether to build with float4 passed by value... yes

checking whether to build with float8 passed by value... yes

checking alignment of short... 2

checking alignment of int... 4

checking alignment of long... 8

checking alignment of double... 8

checking for int8... no

checking for uint8... no

checking for int64... no

checking for uint64... no

checking for __int128... yes

checking for __int128 alignment bug... ok

checking alignment of PG_INT128_TYPE... 16

checking for builtin __sync char locking functions... yes

checking for builtin __sync int32 locking functions... yes

checking for builtin __sync int32 atomic operations... yes

checking for builtin __sync int64 atomic operations... yes

checking for builtin __atomic int32 atomic operations... yes

checking for builtin __atomic int64 atomic operations... yes

checking for __get_cpuid... yes

checking for __cpuid... no

checking for _mm_crc32_u8 and _mm_crc32_u32 with CFLAGS=... no

checking for _mm_crc32_u8 and _mm_crc32_u32 with CFLAGS=-msse4.2... yes

checking for __crc32cb, __crc32ch, __crc32cw, and __crc32cd with CFLAGS=... no

checking for __crc32cb, __crc32ch, __crc32cw, and __crc32cd with CFLAGS=-march=armv8-a+crc... no

checking which CRC-32C implementation to use... SSE 4.2 with runtime check

checking for library containing sem_init... -lpthread

checking which semaphore API to use... unnamed POSIX

checking for /dev/urandom... yes

checking which random number source to use... /dev/urandom

checking for xmllint... /usr/bin/xmllint

checking for xsltproc... /usr/bin/xsltproc

checking for fop... no

checking for dbtoepub... no

checking thread safety of required library functions... yes

checking whether gcc -std=gnu99 supports -Wl,--as-needed... yes

configure: using compiler=gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)

configure: using CFLAGS=-Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -O2

configure: using CPPFLAGS= -D_GNU_SOURCE

configure: using LDFLAGS=  -Wl,--as-needed

configure: creating ./config.status

config.status: creating GNUmakefile

config.status: creating src/Makefile.global

config.status: creating src/include/pg_config.h

config.status: creating src/include/pg_config_ext.h

config.status: creating src/interfaces/ecpg/include/ecpg_config.h

config.status: linking src/backend/port/tas/dummy.s to src/backend/port/tas.s

config.status: linking src/backend/port/posix_sema.c to src/backend/port/pg_sema.c

config.status: linking src/backend/port/sysv_shmem.c to src/backend/port/pg_shmem.c

config.status: linking src/include/port/linux.h to src/include/pg_config_os.h

config.status: linking src/makefiles/Makefile.linux to src/Makefile.port

[root@localhost pgsql]#

8、开始编译

# make world

9、编译安装

# make install-world

10、安装扩展模块

cd /usr/local/pgsql/contrib
make
make install

11、配置环境变量

su - postgres

cat >>/home/postgres/.bashrc<<EOF

export PGHOME=/usr/local/pgsql

export LD_LIBRARY_PATH=\${PGHOME}/lib:\${LD_LIBRARY_PATH}

export PGDATA=\${PGHOME}/pgdata

export PATH=\${PGHOME}/bin:${PATH}

EOF

环境生效
source ~//.bashrc && . ~/.bashrc

12、root用户给文件重新赋权

chown -R postgres:postgres /usr/local/pgsql

13、简单初始化数据库

su - postgres
initdb -D $PGDATA -W -U postgres --指定数据文件存放目录,并指定一个用户


至此,安装完成。

最后修改时间:2022-08-25 13:47:23
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
4人已赞赏
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论