# SkyWalking 使用 MySQL Storage
> [SkyWalking Backend Storage](https://github.com/apache/skywalking/blob/6.x/docs/en/setup/backend/backend-storage.md)
本文介绍 Skywalking 使用 MySQL Storage,以 `apache/skywalking-oap-server:6.5.0` Docker 镜像为例子。
SW 默认使用H2,测试环境可使用H2,生产官方推荐使用ES。如果平台流量很小,使用MySQL也是不错的选择,但是需要忽略掉一些无意义的采样如: **"健康检查"**、**"心跳"**等接口。
## 镜像目录结构
HOME目录是 `/skywalking`,下面是主要树结构。
* 应用、预警等配置都在 config 目录下
* 各类jar包位于 oap-libs
```
$ tree
.
├── config
│ ├── alarm-settings-sample.yml
│ ├── alarm-settings.yml
│ ├── application.yml
│ ├── component-libraries.yml
│ ├── gateways.yml
│ ├── log4j2.xml
│ └── official_analysis.oal
├── docker-entrypoint.sh
├── licenses
└── oap-libs
├── HdrHistogram-2.1.9.jar
```
## 添加驱动
官方镜像中不包含MySQL驱动,自行下载并添加到 `oap-libs` 目录即可。
例如将下载的jar放到任意目录,然后拷贝到 skywalking 中,下面是示例Dockerfile:
```dockerfile
FROM apache/skywalking-oap-server:6.5.0
COPY ./libs/* /skywalking/oap-libs
```
## 通过环境变量配置MySQL
应用配置在 `application.yml` 中,文件由 `docker-entrypoint.sh` 根据环境变量动态生成。
```bash
docker run -d \
--name skywalking-oap \
-p 12800:12800 \
-p 11800:11800 \
-e TZ=Asia/Shanghai \
-e SW_STORAGE=mysql \
-e SW_JDBC_URL="jdbc:mysql://x.x.x.x:3306/sw" \
-e SW_DATA_SOURCE_USER=sw \
-e SW_DATA_SOURCE_PASSWORD=sw \
apache/skywalking-oap-server:6.5.0
```
* SW_STORAGE:选择存储,支持 `elasticsearch h2 mysql`
* SW_JDBC_URL、SW_DATA_SOURCE_USER、SW_DATA_SOURCE_PASSWORD是mysql的配置
下面是截取的 `docker-entrypoint.sh` 中部分脚本:
```bash
generateApplicationYaml() {
# validate
validateVariables "SW_STORAGE" "$SW_STORAGE" "elasticsearch h2 mysql"
# generate storage
case ${SW_STORAGE} in
elasticsearch) generateStorageElastisearch;;
h2) generateStorageH2;;
mysql) generateStorageMySQL;;
esac
```
扫码或搜索 codercyj 关注微信公众号, 结伴学习, 一起努力