基于 MySQL 协议,Swoole 开发的MySQL数据库连接池使用教程。
2019-12-17
本博客所有文章采用的授权方式为 自由转载-非商用-非衍生-保持署名 ,转载请务必注明出处,谢谢。
声明:
本博客欢迎转发,但请保留原作者信息!
博客地址:任志帆的博客;
内容系本人学习、研究和总结,如有雷同,实属荣幸!
基于 MySQL 协议,Swoole 开发的MySQL数据库连接池使用教程
安装
git clone https://github.com/louislivi/SMProxy.git
composer install --no-dev # 如果你想贡献你的代码,请不要使用 --no-dev 参数。
运行
cd SMProxy
bin/SMProxy start
启动成功后的界面如下所示
root@JD:/var/www/SMProxy# bin/SMProxy start
/$$$$$$ /$$ /$$ /$$$$$$$
/$$__ $$| $$$ /$$$| $$__ $$
| $$ \__/| $$$$ /$$$$| $$ \ $$ /$$$$$$ /$$$$$$ /$$ /$$ /$$ /$$
| $$$$$$ | $$ $$/$$ $$| $$$$$$$//$$__ $$ /$$__ $$| $$ /$$/| $$ | $$
\____ $$| $$ $$$| $$| $$____/| $$ \__/| $$ \ $$ \ $$$$/ | $$ | $$
/$$ \ $$| $$\ $ | $$| $$ | $$ | $$ | $$ >$$ $$ | $$ | $$
| $$$$$$/| $$ \/ | $$| $$ | $$ | $$$$$$/ /$$/\ $$| $$$$$$$
\______/ |__/ |__/|__/ |__/ \______/ |__/ \__/ \____ $$
/$$ | $$
| $$$$$$/
\______/
SMProxy version: v1.3.0@e6a640a
Server starting ...
查看启动后的状态
root@JD:/var/www/SMProxy# bin/SMProxy status
SMProxy[v1.3.0] - Linux JD 4.4.0-62-generic #83-Ubuntu SMP Wed Jan 18 14:10:15 UTC 2017 x86_64
Host: 0.0.0.0, Port: 3366, PHPVerison: 7.3.12-1+ubuntu16.04.1+deb.sury.org+1
SwooleVersion: 4.4.12, WorkerNum: 2
Process : 26 total, 24 sleep, 2 query
+------+--------+-----------------+-----------+---------+------+-----------+-----------------------------+-------------------------+-----------------------+---------------+-------------+
| ID | USER | HOST | DB | COMMAND | TIME | STATE | INFO | SERVER_VERSION | PLUGIN_NAME | SERVER_STATUS | SERVER_KEY |
+------+--------+-----------------+-----------+---------+------+-----------+-----------------------------+-------------------------+-----------------------+---------------+-------------+
| 1789 | zhifan | localhost:58178 | bbs | Sleep | 35 | | | 5.7.28-0ubuntu0.16.04.2 | mysql_native_password | 2 | writeSΜbbs |
| 1790 | zhifan | localhost:58182 | bbs | Sleep | 35 | | | 5.7.28-0ubuntu0.16.04.2 | mysql_native_password | 2 | writeSΜbbs |
| 1791 | zhifan | localhost:58186 | bbs | Sleep | 35 | | | 5.7.28-0ubuntu0.16.04.2 | mysql_native_password | 2 | writeSΜbbs |
| 1793 | zhifan | localhost:58190 | bbs | Query | 0 | executing | /*SMProxy processlist sql*/ | 5.7.28-0ubuntu0.16.04.2 | mysql_native_password | 2 | writeSΜbbs |
| 1794 | zhifan | localhost:58196 | bbs | Sleep | 35 | | | 5.7.28-0ubuntu0.16.04.2 | mysql_native_password | 2 | readSΜbbs |
| 1795 | zhifan | localhost:58200 | bbs | Sleep | 35 | | | 5.7.28-0ubuntu0.16.04.2 | mysql_native_password | 2 | readSΜbbs |
| 1796 | zhifan | localhost:58204 | bbs | Sleep | 35 | | | 5.7.28-0ubuntu0.16.04.2 | mysql_native_password | 2 | readSΜbbs |
| 1797 | zhifan | localhost:58208 | bbs | Sleep | 35 | | | 5.7.28-0ubuntu0.16.04.2 | mysql_native_password | 2 | readSΜbbs |
| 1798 | zhifan | localhost:58212 | bbs | Sleep | 35 | | | 5.7.28-0ubuntu0.16.04.2 | mysql_native_password | 2 | readSΜbbs |
| 1799 | zhifan | localhost:58216 | bbs | Sleep | 35 | | | 5.7.28-0ubuntu0.16.04.2 | mysql_native_password | 2 | readSΜbbs |
| 1800 | zhifan | localhost:58220 | bbs | Sleep | 35 | | | 5.7.28-0ubuntu0.16.04.2 | mysql_native_password | 2 | readSΜbbs |
| 1801 | zhifan | localhost:58224 | bbs | Sleep | 35 | | | 5.7.28-0ubuntu0.16.04.2 | mysql_native_password | 2 | readSΜbbs |
| 1802 | zhifan | localhost:58228 | bbs | Sleep | 35 | | | 5.7.28-0ubuntu0.16.04.2 | mysql_native_password | 2 | readSΜbbs |
| 1803 | zhifan | localhost:58232 | bbs | Sleep | 35 | | | 5.7.28-0ubuntu0.16.04.2 | mysql_native_password | 2 | readSΜbbs |
| 1804 | zhifan | localhost:58236 | bbs | Sleep | 35 | | | 5.7.28-0ubuntu0.16.04.2 | mysql_native_password | 2 | readSΜbbs |
| 1805 | zhifan | localhost:58240 | bbs | Sleep | 35 | | | 5.7.28-0ubuntu0.16.04.2 | mysql_native_password | 2 | readSΜbbs |
| 1806 | zhifan | localhost:58244 | bbs | Sleep | 35 | | | 5.7.28-0ubuntu0.16.04.2 | mysql_native_password | 2 | readSΜbbs |
| 1807 | zhifan | localhost:58248 | bbs | Sleep | 35 | | | 5.7.28-0ubuntu0.16.04.2 | mysql_native_password | 2 | readSΜbbs |
| 1808 | zhifan | localhost:58252 | bbs | Sleep | 35 | | | 5.7.28-0ubuntu0.16.04.2 | mysql_native_password | 2 | readSΜbbs |
| 1809 | zhifan | localhost:58270 | bbs | Sleep | 35 | | | 5.7.28-0ubuntu0.16.04.2 | mysql_native_password | 2 | readSΜbbs |
| 1810 | zhifan | localhost:58268 | bbs | Query | 0 | executing | /*SMProxy processlist sql*/ | 5.7.28-0ubuntu0.16.04.2 | mysql_native_password | 2 | readSΜbbs |
| 1811 | zhifan | localhost:58264 | bbs | Sleep | 35 | | | 5.7.28-0ubuntu0.16.04.2 | mysql_native_password | 2 | readSΜbbs |
| 1812 | zhifan | localhost:58260 | bbs | Sleep | 35 | | | 5.7.28-0ubuntu0.16.04.2 | mysql_native_password | 2 | readSΜbbs |
| 1813 | zhifan | localhost:58256 | bbs | Sleep | 35 | | | 5.7.28-0ubuntu0.16.04.2 | mysql_native_password | 2 | readSΜbbs |
| 1814 | zhifan | localhost:58278 | bookstack | Sleep | 6 | | | 5.7.28-0ubuntu0.16.04.2 | mysql_native_password | 2 | read |
| 1815 | zhifan | localhost:58280 | bookstack | Sleep | 6 | | | 5.7.28-0ubuntu0.16.04.2 | mysql_native_password | 2 | read |
+------+--------+-----------------+-----------+---------+------+-----------+-----------------------------+-------------------------+-----------------------+---------------+-------------+
我遇到的问题
2019-12-17 13:37:21 [warning] Config serverInfo->write->account is not exists! (/var/www/SMProxy/src/Base.php:99)
2019-12-17 13:37:21 [warning] Config serverInfo->write->account is not exists! (/var/www/SMProxy/src/Base.php:99)
2019-12-17 13:38:35 [info] Worker started!
参考上面的说明 我把database->account下面的root 改为了zhifan 然后启动成功
这里附上我自己的配置文件 对于account对应的用户名非root远程访问的一定要记得修改root那个key为自己账户的
我的database.json文件如下
{
"database": {
"account": {
"db_user": { # 我就是错在这里了 之前是root 我忘记修改 导致报错 改完之后即可正常运行
"zhifan": "zhifan",
"password": "password"
}
},
"serverInfo": {
"server1": {
"write": {
"host": ["127.0.0.1"],
"port": 3306,
"timeout": 2,
"account": "zhifan"
},
"read": {
"host": ["127.0.0.1"],
"port": 3306,
"timeout": 2,
"account": "zhifan",
"startConns": "swoole_cpu_num()*10",
"maxSpareConns": "swoole_cpu_num()*10",
"maxSpareExp": 3600,
"maxConns": "swoole_cpu_num()*20"
}
}
},
"databases": {
"bbs": {
"serverInfo": "server1",
"startConns": "swoole_cpu_num()*2",
"maxSpareConns": "swoole_cpu_num()*2",
"maxSpareExp": 3600,
"maxConns": "swoole_cpu_num()*2",
"charset": "utf8mb4"
}
}
}
}
该命令会发布配置文件 laravels.php 到 config 目录下,以及脚本文件到 bin 目录下:
我的server.json文件如下
{
"server": {
"user": "root",
"password": "123456",
"charset": "utf8mb4",
"host": "0.0.0.0",
"port": "3366",
"mode": "SWOOLE_PROCESS",
"sock_type": "SWOOLE_SOCK_TCP",
"logs": {
"open":true,
"config": {
"system": {
"log_path": "ROOT/logs",
"log_file": "system.log",
"format": "Y/m/d"
},
"mysql": {
"log_path": "ROOT/logs",
"log_file": "mysql.log",
"format": "Y/m/d"
}
}
},
"swoole": {
"worker_num": "swoole_cpu_num()",
"max_coro_num": 6000,
"open_tcp_nodelay": true,
"daemonize": true,
"heartbeat_check_interval": 60,
"heartbeat_idle_time": 600,
"reload_async": true,
"log_file": "ROOT/logs/swoole.log",
"pid_file": "ROOT/logs/pid/server.pid"
},
"swoole_client_setting": {
"package_max_length": 16777215
},
"swoole_client_sock_setting": {
"sock_type": "SWOOLE_SOCK_TCP"
}
}
}