SQLProxy 项目教程
sqlproxy 项目地址: https://gitcode.com/gh_mirrors/sq/sqlproxy
1. 项目介绍
SQLProxy 是一个基于 Kingshard 二次开发的用于信创数据库对接的中间件项目。它致力于简化异构数据库的对接工作,目标是让现有基于 MySQL 的项目无缝迁移到其它类 SQL 型数据库,例如 Oracle、达梦等。SQLProxy 的主要工作是在中间件上对不同数据库的语法和协议进行转换,以便现有业务项目不改动或尽量少改动,使用原来的 MySQL 语法和驱动就能操作另一个信创数据库。
2. 项目快速启动
2.1 环境准备
确保你已经安装了 Go 语言环境,并且版本在 1.16 以上。
2.2 下载项目
git clone https://github.com/golfxiao/sqlproxy.git
cd sqlproxy
2.3 配置文件
将 etc
目录下的 sqlproxy_example.yaml
文件重命名为 sqlproxy.yaml
,并根据需要修改配置文件。
# 示例配置文件
nodes:
- name: demodb
driver_name: dm
max_conns_limit: 32
datasource: dm://demouser:demopwd@192.168.23.216:5236
user_list:
- user: testuser1
password: testpwd1
- user: testuser2
password: testpwd2
schema_list:
- user: testuser1
nodes: [demodb]
- user: testuser2
nodes: [demodb]
2.4 编译和运行
go build
./sqlproxy -config ./etc/sqlproxy.yaml &
3. 应用案例和最佳实践
3.1 应用案例
假设一个应用服务 A 原来使用的是 MySQL 数据库,现在需要对接基于 Oracle 语法的达梦数据库。理论上代码层不用作大的改动,只需将数据库连接串由原来指向 MySQL 改为指向此 SQLProxy 中间件:
# 原始连接串
demouser:demopwd@tcp(192.168.23.215:3306)/pc3?timeout=1000ms&readTimeout=1000ms&writeTimeout=5000ms&charset=utf8
# 对接信创后连接串
testuser1:testpwd1@tcp(192.168.23.217:9696)/pc3?timeout=1000ms&readTimeout=1000ms&writeTimeout=5000ms&charset=utf8
3.2 最佳实践
- 配置优化:根据实际业务需求,合理配置
max_conns_limit
和datasource
,避免资源浪费和连接超时。 - 安全配置:确保
user_list
和schema_list
中的用户权限配置合理,避免未授权访问。 - 日志监控:通过日志监控 SQLProxy 的运行状态,及时发现和解决问题。
4. 典型生态项目
SQLProxy 作为一个数据库中间件,可以与以下典型生态项目结合使用:
- Kingshard:SQLProxy 基于 Kingshard 开发,可以与 Kingshard 结合使用,进一步提升数据库代理的性能和功能。
- MySQL:SQLProxy 支持 MySQL 语法和协议,可以与 MySQL 数据库无缝对接。
- Oracle:SQLProxy 支持 Oracle 语法和协议,可以与 Oracle 数据库无缝对接。
- 达梦数据库:SQLProxy 支持达梦数据库语法和协议,可以与达梦数据库无缝对接。
通过这些生态项目的结合,SQLProxy 可以更好地满足不同业务场景下的数据库对接需求。