迁移 Grafana 默认的 SQLite DB 数据改为使用 MySQL 方式 
背景 
Grafana 默认部署使用的是 sqlite3 文件存储数据,在于告警查询时可能遇到锁情况,加上考虑如有需要扩展多实例部署方式的话,默认的存储方式可能不太适合,所以计划将默认 DB 变更调节为 MySQL 并希望将现有数据迁移(因为不希望重新配置用户及告警规则等信息)。
迁移过程的参考步骤 
- 首先需要暂停 Grafana服务,导出默认的SQLite数据库文件,如grafana.db;
- 可借助 Grafana官方提供的工具database-migrator将数据库导出转化为支持MySQL协议的SQL文件;
- 修改 Grafana配置文件grafana.ini数据库相关配置参数-e "GF_DATABASE_URL=mysql://$db_username:$db_passwd@$db_host:$db_port/$db_name"使用MySQL数据库;
- 重新启动 Grafana让其在MySQL中设置数据库和表结构,初始化完再先关停下Grafana;
- 导入前面使用工具从 SQLLite原生默认数据库中导出的sql数据到MySQL对应的DB中;
- 重新开启 Grafana按理即可;
如果 SQLite 开启 WAL 模式情况 
当 SQLite 开启 wal 模式的话,这种情况下,因为其数据是会分布在数据文件 grafana.db 和 日志文件 grafana.db-wal 中的
 同时,即便是简单重启 Grafana 服务也不一定会触发日志文件数据持久化合并到数据文件中,所以迁移过程中需要手动触发将这里的 日志文件 持久化合并到 数据文件中;
bash
# 暂停 grafana 服务后,拷贝备份出 grafana.db 和 grafana.db-wal 文件后,手动执行下面命令触发
sqlite3 grafana.db "PRAGMA wal_checkpoint(TRUNCATE); VACUUM;"# 暂停 grafana 服务后,拷贝备份出 grafana.db 和 grafana.db-wal 文件后,手动执行下面命令触发
sqlite3 grafana.db "PRAGMA wal_checkpoint(TRUNCATE); VACUUM;"最后再按上面工具导出为 sql 文件;