57 lines
2.5 KiB
Markdown
57 lines
2.5 KiB
Markdown
# 数据库切换 / Database
|
||
|
||
支持 4 种数据库,通过 start.sh 关键字选择(四选一,默认 `mysql`):`mysql`、`postgresql`(别名 `pg`)、`oracle`、`kingbase`(别名 `kingbase9`)。
|
||
|
||
## 对应 compose 文件
|
||
|
||
| 关键字 | compose 文件(位于 compose/) | 镜像 | 默认宿主机端口 |
|
||
| --- | --- | --- | --- |
|
||
| mysql | compose/compose-mysql.yaml | mysql:latest | 13306 |
|
||
| postgresql / pg | compose/compose-postgresql.yaml | postgres:17 | 15432 |
|
||
| oracle | compose/compose-oracle.yaml | gvenzl/oracle-free:23-slim | 11521 |
|
||
| kingbase / kingbase9 | compose/compose-kingbase.yaml | kingbase V9(需 license) | 54321 |
|
||
|
||
## 使用示例
|
||
|
||
```bash
|
||
# PostgreSQL 中间件(源码开发)
|
||
./start.sh postgresql middleware
|
||
|
||
# Oracle 全栈
|
||
./start.sh oracle all
|
||
|
||
# Kingbase 全栈(.env 中需配置 KINGBASE_LICENSE_FILE 指向 ../../kingbase/ 下的 license.dat)
|
||
./start.sh kingbase all
|
||
|
||
# 切换后停止(关键字保持一致)
|
||
./stop.sh postgresql middleware down
|
||
```
|
||
|
||
## 自动建库
|
||
|
||
`start.sh` 会在启动后自动确保应用数据库存在(不存在则创建):
|
||
|
||
| 数据库 | 使用的变量 | 默认库名 |
|
||
| --- | --- | --- |
|
||
| mysql | MYSQL_DATABASE / MYSQL_ROOT_PASSWORD | bytedesk |
|
||
| postgresql | POSTGRES_DB / POSTGRES_PASSWORD | bytedesk |
|
||
| oracle | ORACLE_DATABASE / ORACLE_PASSWORD / ORACLE_APP_USER / ORACLE_APP_USER_PASSWORD | BYTEDESK(PDB) |
|
||
| kingbase | KINGBASE_DATABASE / KINGBASE_DB_PASSWORD | bytedesk |
|
||
|
||
## 应用侧连接注入
|
||
|
||
bytedesk 应用的数据源连接(`SPRING_DATASOURCE_URL/USERNAME/PASSWORD` 等)由 `start.sh` 按所选数据库自动注入并写入 `.env.app`:
|
||
|
||
- 使用 mysql 时指向 `bytedesk-mysql:3306`
|
||
- 使用 postgresql 时指向 `bytedesk-postgresql:5432`(附带 postgres Driver)
|
||
- 使用 oracle 时指向 `bytedesk-oracle:1521/FREEPDB1`
|
||
- 使用 kingbase 时指向 `bytedesk-kingbase:54321`(附带 PostgreSQLDialect、quartz/batch/flowable postgres 适配、关闭 liquibase)
|
||
|
||
如需完全接管,可在 `.env` 中显式配置 `SPRING_DATASOURCE_*`(优先级高于脚本注入),或通过 shell 环境变量覆盖。详见 [readme.env.md](./readme.env.md)。
|
||
|
||
## 限制
|
||
|
||
- **freeswitch/mrcp(call)仅支持 mysql / postgresql**:`./start.sh call oracle` 会直接报错
|
||
- Kingbase 需要 license 文件(默认取 `deploy/kingbase/` 下的专业版 dat,可在 .env 覆盖)
|
||
- 切换数据库不会迁移数据;各数据库使用独立数据卷(如 bytedesk_mysql_data / bytedesk_postgresql_data)
|