Docker部署postgresql-11以及主从配置
Docker部署postgresql-11以及主从配置
- 一. Docker部署postgresql-11(简单版)
- 二. 【最全】从Docker中运行postgresql数据库
-
- 一. Docker 中使用postgresql
- 二. 从小白到大佬的 `pgsql` 学习-基础语法
-
- 一. 导入数据
- 二. PostgreSQL 基础命令
-
- 1. SELECT
- 2. WHERE
- 3. ORDER BY
- 4. FETCH
- 5. LIMIT
- 6. OFFSET
- 7. DISTINCT
- 8. 列别名
- 9. 表别名
- 10. IN
- 11. BETWEEN
- 12. LIKE 模糊
- 13. IS NULL
- 14. EXISTS
- 15. ALL
- 16. ANY
- 17. GROUP BY 将结果集按照某个维度进行汇总
- 18. HAVING
- 19. 一次查询中生成多个维度的报表,三种实现
- 20. JOIN
- 21. 子查询
- 22. CTE (后面再补,太陌生啦,哎)
- 23. UNION
- 24. INTERSECT
- 25. EXCEPT
- 26. INSERT
- 27. INSERT ON CONFLICT
- 28. UPDATE
- 29. UPDATE FROM
- 30. DELETE
- 31. 清空表
- 32. 简单学习一下json
- 三. `postgresql`【数据库管理】用户权限、更改密码、数据备份、启动、停止、重启动数据库
- 四. 【干货! 最详细教程】`Dockerfile postgresql` 安装 `wal2json` 插件
- 三. 基于docker容器的Postgresql 11主从复制搭建 及切换
一. Docker部署postgresql-11(简单版)
1. 拉取镜像
docker pull docker.io/postgres:11
2.启动命令脚本
vi startPostgres.sh
填入以下内容:
docker run -d --name postgresql-11 \
--restart=always \
-v /postgresql/data:/var/lib/postgresql/data \
-e POSTGRES_PASSWORD=123456 \
-p 5432:5432 \
docker.io/postgres:11
3.给脚本写权限:
chmod +x startPostgres.sh
4.执行启动脚本:
./startPostgres.sh
5.查看日志,启动报错:
docker logs postgresql-11
2019-06-13 12:35:21.977 UTC [1] FATAL: configuration file "/var/lib/postgresql/data/postgresql.conf" contains errors
2019-06-13 12:35:23.182 UTC [1] LOG: invalid value for parameter "lc_messages": "zh_CN.UTF-8"
2019-06-13 12:35:23.182 UTC [1] LOG: invalid value for parameter "lc_monetary": "zh_CN.UTF-8"
2019-06-13 12:35:23.182 UTC [1] LOG: invalid value for parameter "lc_numeric": "zh_CN.UTF-8"
2019-06-13 12:35:23.182 UTC [1] LOG: invalid value for parameter "lc_time": "zh_CN.UTF-8"
6.在容器中安装中文编码:
>>docker exec -it postgresql-11 /bin/bash
1、root@9a36f3d4c0e9:/# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
2、debian下安装 locale 并设置 zh_CN.UTF-8
root@9a36f3d4c0e9:/# apt-get install locales
Reading package lists... Done
Building dependency tree
Reading state information... Done
locales is already the newest version (2.24-11+deb9u4).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
3、root@9a36f3d4c0e9:/# dpkg-reconfigure locales
Locales to be generated: 468
Default locale for the system environment: 3
Generating locales (this might take a while)...
zh_CN.UTF-8... done
Generation complete.
7.重启动docker容器:
doker start postgresql-11
二. 【最全】从Docker中运行postgresql数据库
一. Docker 中使用postgresql
有三种方式:Dockerfile 启动、docker-compose启动、通过命令行
我采用的是docker-compose.yml 的方式,大家可以自己玩一玩其他的两种方式,参考这个链接
1. Linux 下内核版本
uname -a
2. docker , docker-compose 版本
docker --version
docker-compose --version
3. 根据自己的系统配置拉取相应的official images
如果安装过程遇到以下报错,
可以更换以下版本的pg 镜像
4. 安装步骤(docker 不熟悉的自觉点击docker docs)
1. 拉取镜像
docker pull postgres:15-bullseye
2. 创建并进入 pg 目录
mkdir dockerdata/postgresql && cd dockerdata/postgresql
3. docker-compose.yml
内容如下
vim docker-compose.yml
version: '2.3'
services:
pgdb:
image: postgres:15-bullseye
restart: always
environment:
POSTGRES_PASSWORD: ggyy
POSTGRES_USER: ggyy
ports:
- 5439:5439
volumes:
- ./postgres-db:/data/postgres
volumes:
postgres-db:
driver: local
4. 启动数据库容器
docker-compose -f docker-compose.yml up -d
5. 进入数据库
docker exec -it postgresql_pgdb_1 psql -Uggyy
看到这个页面恭喜你,成功了
明天学习docker服务日志管理,创建数据库,增删改查指令学习。
二. 从小白到大佬的 pgsql
学习-基础语法
一. 导入数据
在正式开始学习之前,我们需要有个数据库,再有一个数据表。
1. 搭建数据库
关于如何搭建一个pgsql数据库环境,可以参考我的上一个blog Docker 搭建Postgresql数据库
2. 导入数据表
到这个地址https://github.com/jOOQ/sakila/tree/main/postgres-sakila-db下载两个文件
1.postgres-sakila-schema.sql
- 此文件包含了创建数据库结构的 sql 脚本,包含表,函数,存储过程,触发器等。
2.postgres-sakila-insert-data.sql
- 此文件包含了导入数据的 sql 脚本
3. 下载后将两个文件分别 docker cp 到postgresql 容器内
sudo docker cp postgres-sakila-insert-data.sql f161f67ba0e0:/
4. 依次运行如下指令开始导入
$ docker exec -it postgresql_pgdb_1 bash
$ psql -Uggyy -f postgres-sakila-schema.sql
$ psql -Uggyy -f postgres-sakila-insert-data.sql
5. 遇到语法格式错误,去hub链接下,把原始内容复制下,粘贴在同文件中即可.
6. 验证是否导入成功
$ exit # 退出容器
$ docker exec -it postgresql_pgdb_1 psql -Uggyy # 重新进入数据库
$ \dt # 列出数据表
看到这个表,恭喜你,又成功了
二. PostgreSQL 基础命令
1. SELECT
1. 普通查找
SELECT
first_name as fname,
last_name as lname,
email
FROM customer;
2.如果想检索结果显示的好看些,可以使用\x , 再SELECT,退出的话再使用\x即可。
3. 使用带有表达式的
SELECT
first_name ||' '|| last_name,
email
FROM customer;
2. WHERE
语法结构如下:
SELECT columns_list
FROM table_name
WHERE query_condition;
举个例子
1. where 子句和LIKE 混用
SELECT first_name,
last_name
FROM customer
WHERE first_name LIKE 'ANN%';
2. where 子句和 BETWEEN 混用
SELECT first_name,
LENGTH(first_name) name_length
FROM customer
WHERE first_name LIKE 'A%'
AND LENGTH(first_name) BETWEEN 3 AND 5
ORDER BY name_len