首页 > 数据库 >云原生之使用docker部署Postgresql数据库

云原生之使用docker部署Postgresql数据库

时间:2023-02-06 12:32:26浏览次数:47  
标签:原生 UTC 01 Postgresql 17 2023 06 docker

(云原生之使用docker部署Postgresql数据库)

一、Postgresql介绍

1.PostgreSQL简介

PostgreSQL 是一个免费的对象-关系数据库服务器(ORDBMS),在灵活的BSD许可证下发行。

2.PostgreSQL的特点

  • 维护者是PostgreSQL Global Development Group,首次发布于1989年6月。
  • 操作系统支持WINDOWS、Linux、UNIX、MAC OS X、BSD。
  • 从基本功能上来看,支持ACID、关联完整性、数据库事务、Unicode多国语言。
  • 表和视图方面,PostgreSQL支持临时表,而物化视图,可以使用PL/pgSQL、PL/Perl、PL/Python或其他过程语言的存储过程和触发器模拟。
  • 索引方面,全面支持R-/R+tree索引、哈希索引、反向索引、部分索引、Expression 索引、GiST、GIN(用来加速全文检索),从8.3版本开始支持位图索引。
  • 其他对象上,支持数据域,支持存储过程、触发器、函数、外部调用、游标7)数据表分区方面,支持4种分区,即范围、哈希、混合、列表。
  • 从事务的支持度上看,对事务的支持与MySQL相比,经历了更为彻底的测试。
  • )My ISAM表处理方式方面,MySQL对于无事务的MyISAM表,采用表锁定,1个长时间运行的查询很可能会阻碍对表的更新,而PostgreSQL不存在这样的问题。
  • 从存储过程上看,PostgreSQL支持存储过程。因为存储过程的存在也避免了在网络上大量原始的SQL语句的传输,这样的优势是显而易见的。
  • 用户定义函数的扩展方面,PostgreSQL可以更方便地使用UDF(用户定义函数)进行扩展。

二、检查本地docker环境

1.检查系统版本

[root@docker ~]# cat /etc/os-release 
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

2.检查docker版本

[root@docker ~]# docker version
Client: Docker Engine - Community
 Version:           20.10.22
 API version:       1.41
 Go version:        go1.18.9
 Git commit:        3a2c30b
 Built:             Thu Dec 15 22:30:24 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.22
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.18.9
  Git commit:       42c8b31
  Built:            Thu Dec 15 22:28:33 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.14
  GitCommit:        9ba4b250366a5ddde94bb7c9d1def331423aa323
 runc:
  Version:          1.1.4
  GitCommit:        v1.1.4-0-g5fd4c4d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

3.检查docker状态

[root@docker ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2023-01-12 20:05:15 CST; 4 days ago
     Docs: https://docs.docker.com
 Main PID: 5888 (dockerd)
    Tasks: 10
   Memory: 112.9M
   CGroup: /system.slice/docker.service
           └─5888 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

三、下载Postgresql镜像

[root@docker ~]# docker pull postgres
Using default tag: latest
latest: Pulling from library/postgres
8740c948ffd4: Pull complete 
c8dbd2beab50: Pull complete 
05d9dc9d0fbd: Pull complete 
ddd89d5ec714: Pull complete 
f98bb9f03867: Pull complete 
0554611e703f: Pull complete 
64e0a8694477: Pull complete 
8b868a753f47: Pull complete 
12ed9aefbab3: Pull complete 
825b08d51ffd: Pull complete 
8f272b487267: Pull complete 
ba2eed7bd2cc: Pull complete 
ff59f63f47d6: Pull complete 
Digest: sha256:6b07fc4fbcf551ea4546093e90cecefc9dc60d7ea8c56a4ace704940b6d6b7a3
Status: Downloaded newer image for postgres:latest
docker.io/library/postgres:latest

四、部署Postgresql数据库

1.创建Postgresql容器

docker run -d --name postgres --restart always -e POSTGRES_PASSWORD='admin'   -e POSTGRES_USER='admin' -e ALLOW_IP_RANGE=0.0.0.0/0 -v /data/postgres/data:/var/lib/postgresql -p 55433:5432 -d postgres

-name : 自定义容器名称
-e POSTGRES_PASSWORD: Postgresql数据库密码
-e POSTGRES_USER: Postgresql数据库账号
-e ALLOW_IP_RANGE=0.0.0.0/0,这个表示允许所有ip访问,如果不加,则非本机 ip 访问不了。
-v :   本地文件系统目录:容器内目录
-p: 映射端口,宿主机端口:容器端口

在这里插入图片描述

2.查看Postgresql容器状态

[root@docker ~]# docker ps
CONTAINER ID   IMAGE      COMMAND                  CREATED         STATUS         PORTS                                         NAMES
de5b3c8570a9   postgres   "docker-entrypoint.s…"   6 minutes ago   Up 6 minutes   0.0.0.0:55433->5432/tcp, :::55433->5432/tcp   postgres

3.查看Postgresql容器日志

查看Postgresql容器日志,检查Postgresql数据库是否正常启动。

[root@docker ~]# docker logs postgres
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "en_US.utf8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".

Data page checksums are disabled.

fixing permissions on existing directory /var/lib/postgresql/data ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default time zone ... Etc/UTC
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok


Success. You can now start the database server using:

    pg_ctl -D /var/lib/postgresql/data -l logfile start

initdb: warning: enabling "trust" authentication for local connections
initdb: hint: You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb.
waiting for server to start....2023-01-17 06:10:55.857 UTC [47] LOG:  starting PostgreSQL 15.1 (Debian 15.1-1.pgdg110+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-bit
2023-01-17 06:10:55.883 UTC [47] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2023-01-17 06:10:55.962 UTC [50] LOG:  database system was shut down at 2023-01-17 06:10:54 UTC
2023-01-17 06:10:55.988 UTC [47] LOG:  database system is ready to accept connections
 done
server started
CREATE DATABASE


/usr/local/bin/docker-entrypoint.sh: ignoring /docker-entrypoint-initdb.d/*

2023-01-17 06:10:56.314 UTC [47] LOG:  received fast shutdown request
waiting for server to shut down....2023-01-17 06:10:56.349 UTC [47] LOG:  aborting any active transactions
2023-01-17 06:10:56.351 UTC [47] LOG:  background worker "logical replication launcher" (PID 53) exited with exit code 1
2023-01-17 06:10:56.351 UTC [48] LOG:  shutting down
2023-01-17 06:10:56.375 UTC [48] LOG:  checkpoint starting: shutdown immediate
2023-01-17 06:10:56.783 UTC [48] LOG:  checkpoint complete: wrote 918 buffers (5.6%); 0 WAL file(s) added, 0 removed, 0 recycled; write=0.016 s, sync=0.306 s, total=0.433 s; sync files=250, longest=0.253 s, average=0.002 s; distance=4217 kB, estimate=4217 kB
2023-01-17 06:10:56.787 UTC [47] LOG:  database system is shut down
 done
server stopped

PostgreSQL init process complete; ready for start up.

2023-01-17 06:10:56.896 UTC [1] LOG:  starting PostgreSQL 15.1 (Debian 15.1-1.pgdg110+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-bit
2023-01-17 06:10:56.897 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2023-01-17 06:10:56.897 UTC [1] LOG:  listening on IPv6 address "::", port 5432
2023-01-17 06:10:56.948 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2023-01-17 06:10:57.000 UTC [63] LOG:  database system was shut down at 2023-01-17 06:10:56 UTC
2023-01-17 06:10:57.026 UTC [1] LOG:  database system is ready to accept connections
2023-01-17 06:15:57.100 UTC [61] LOG:  checkpoint starting: time
2023-01-17 06:16:01.354 UTC [61] LOG:  checkpoint complete: wrote 44 buffers (0.3%); 0 WAL file(s) added, 0 removed, 0 recycled; write=4.110 s, sync=0.055 s, total=4.254 s; sync files=12, longest=0.029 s, average=0.005 s; distance=252 kB, estimate=252 kB

五、远程连接Postgresql数据库

1.psql客户端连接

[root@docker ~]# psql -h192.168.3.157 -p 55433 -Uadmin -W
Password: 
psql (13.9, server 15.1 (Debian 15.1-1.pgdg110+1))
WARNING: psql major version 13, server major version 15.
         Some psql features might not work.
Type "help" for help.

admin=# 

2.查看Postgresql内的所有数据库

admin=# \l
                             List of databases
   Name    | Owner | Encoding |  Collate   |   Ctype    | Access privileges 
-----------+-------+----------+------------+------------+-------------------
 admin     | admin | UTF8     | en_US.utf8 | en_US.utf8 | 
 postgres  | admin | UTF8     | en_US.utf8 | en_US.utf8 | 
 template0 | admin | UTF8     | en_US.utf8 | en_US.utf8 | =c/admin         +
           |       |          |            |            | admin=CTc/admin
 template1 | admin | UTF8     | en_US.utf8 | en_US.utf8 | =c/admin         +
           |       |          |            |            | admin=CTc/admin
(4 rows)

admin=# 

标签:原生,UTC,01,Postgresql,17,2023,06,docker
From: https://blog.51cto.com/u_14664141/6038878

相关文章

  • 客服系统即时通讯IM开发(六)Glang Gorm 执行原生Sql语句增删改查封装库【唯一客服】网站
    在开发在线客服系统的时候,有某些地方需要使用脚本去批量执行SQL语句,这个时候就需要使用简单的执行SQL的封装函数了查询操作是使用的原生的sql库,没用Gorm,原因是Gorm的RawSca......
  • 【微信小程序-原生开发】实用教程10 - 动态的新增、修改、删除(含微信云数据库的新增、
    开始前,请先完成首页的动态列表和动态详情的开发,详见【微信小程序-原生开发】实用教程09-可滚动选项,动态列表-步骤条(含事件传参),动态详情(含微信云查询单条数据doc)技术要点......
  • apollo源码同时兼容mysql、postgresql、oracle解决思路
    本文摘录apollo源码采用的是jpa规范Hibernate进行持久化的ORM框架解决思路:思路一:使用jpa配置文件persistence.xml文件,根据使用的数据库动态加载实体类与数据库中实体......
  • postgresql添加随机分数的random 用法
    PostgreSQL sum() 函数是一个聚合函数,它计算一个分组中的所有指定的值的总和并返回。sum() 语法这里是PostgreSQL sum() 的语法:sum(expr)我们通常在SQLite中......
  • PostgreSQL update set from 两表联合更新
    updatet_businesstbsetsystem_id=ir.application_idfromt_business_irregularirwheretb.affected_business=ir.application_nameupdatet_businesstbsetsyst......
  • 带小白入门docker
    带小白入门docker一、docker定义Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操......
  • docker 国内加速器
    1、配置镜像地址Docker客户端版本大于1.10.0的用户可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器{"registry-mirrors":["https://docker.mirror......
  • docker网络
    一.docker网络概述Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同......
  • Docker
    Docker是什么?Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源。Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然......
  • Docker数据管理
    一、docker数据管理管理Docker容器中数据主要有两种方式:数据卷(DataVolumes)和数据卷容器(DataVolumesContainers)。1、数据卷数据卷是一个供容器使用的特殊目录,位于容器......