背景
pg 是一个非常通用的关系型数据库,在后端开发过程中经常被用到。为了能够更好地掌握 pg,我们需要一套快速可使用的环境,用于开发、测试等。
基本形态
调研
通过在 dockerhub 上搜索 postgresql,发现有大量的镜像提供者。看到 postgres 官方的镜像 和 bitnami 提供的镜像 使用量最大,考虑到 bitnami 生态更加完善,因此选择 bitnami/postgresql 作为镜像。
搭建过程
docker
拉镜像
1
| docker pull bitnami/postgresql:12.12.0
|
直接通过 docker 运行
1 2
| # 创建网桥 docker network create pgnet --driver bridge
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| docker run -d \ -e ALLOW_EMPTY_PASSWORD=yes \ -e POSTGRESQL_REPLICATION_MODE=master \ -e POSTGRESQL_USERNAME=dbadmin \ -e POSTGRESQL_PASSWORD=password123 \ -e POSTGRESQL_DATABASE=testpg \ -e POSTGRESQL_REPLICATION_USER=repl_user \ -e POSTGRESQL_REPLICATION_PASSWORD=repl_password123 \ -e POSTGRESQL_TIMEZONE=Asia/Shanghai \ -v /data/pgtest:/bitnami/postgresql \ -v /data/pgtest/init:/docker-entrypoint-initdb.d \ --name pgmaster \ --network pgnet \ -p 5432:5432 \ bitnami/postgresql:12.12.0
|
配置 docker-compose.yaml 文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| version: '3.3'
networks: pgnet: driver: bridge
services: postgresql: image: docker.io/bitnami/postgresql:12.12.0 ports: - '5432:5432' volumes: - '/data/pgtest:/bitnami/postgresql' - '/data/pgtest/init:/docker-entrypoint-initdb.d' environment: - 'ALLOW_EMPTY_PASSWORD=yes' - 'POSTGRESQL_REPLICATION_MODE=master' - 'POSTGRESQL_USERNAME=dbadmin' - 'POSTGRESQL_PASSWORD=password123' - 'POSTGRESQL_DATABASE=testpg' - 'POSTGRESQL_REPLICATION_USER=repl_user' - 'POSTGRESQL_REPLICATION_PASSWORD=repl_password123' - 'POSTGRESQL_TIMEZONE=Asia/Shanghai' networks: - pgnet
|
[notice: 这里可以添加 docker-compose 教程] 可以参考 菜鸟教程docker-compose
尝试添加基础 sql
手动执行
1
| psql -Uxxxx -d postgres -f xxx.sql
|
k8s
charts 同样选择 bitnami 的库。
下载 helm
1 2 3 4
| wget https://get.helm.sh/helm-v3.10.1-linux-amd64.tar.gz && \ tar -zxf helm-v3.10.1-linux-amd64.tar.gz && \ mv linux-amd64/heml /usr/local/bin/ && \ rm -rf linux-amd64
|
添加 bitnami 的库
1
| helm repo add bitnami https://charts.bitnami.com/bitnami
|
查看 charts
1 2
| helm fetch bitnami/postgresql --untar
|
修改pg密码等基本信息
1 2 3 4 5 6 7
| global: postgresql: auth: username: "dbadmin" password: "123456" database: "testpg"
|
部署
1
| helm install --namespace pgtest --create-namespace pg ./postgresql
|
修改 service
1 2 3
| kubectl edit svc xxxx -n pgtest
|
测试
1
| psql -h localhost -p 5432 -d testpg -Udbadmin -W
|
二进制
二进制也可以安装,可以在网上查下资料,姑且不做操作了。下面安装 pg 是为了使用 client。
1
| yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
|
1
| yum install -y postgresql14
|
后续
- 增加 pg 的维护教程
- 增加 pg 的原理教程
- 增加 数据库 的相关教程
- 增加 pg 监控的添加
In wisdom gathered over time I have found that every experience is a form of exploration.
— Ansel Adams