宝塔面板本身不提供读写分离功能,必须依赖Atlas或MyCat等中间件实现;所有关键配置均在中间件侧,主从复制需手动配置,应用连接须指向中间件端口而非直连MySQL。
宝塔面板本身不提供读写分离功能,必须靠 Atlas 或 MyCat 这类中间件实现;直接在宝塔里点几下是没用的,所有关键配置都在中间件侧。
Atlas 启动失败或连接被拒绝的常见原因
Atlas 是轻量级代理,但默认配置极容易出问题。它不兼容 MySQL 8.0+ 的默认认证插件
,启动时日志里常出现
或直接静默退出。
主库用户必须显式指定为
认证:执行
配置文件
中的
字段必须 Base64 编码密码,不能明文写;可用
生成
Atlas 默认监听
,应用连不上——得改成
,且宝塔防火墙要放行该端口
启动命令必须带完整路径:
,直接运行
会加载错配置
MyCat 配置中 writeHost/readHost 不生效的典型场景
很多人照着文档填了
,但所有 SELECT 请求仍打到主库,
像摆设。根本原因是路由规则未触发或数据源未激活。
宝塔Windows面板8.5.2
宝塔Windows面板8.5.2专为Windows Server设计,提供可视化服务器管理界面。支持一键部署IIS/Nginx、PHP、MySQL等环境,集成文件管理、数据库操作、实时监控及安全防护功能,大幅降低Windows服务器运维门槛,提升管理效率。
下载
节点里的
必须指向主库真实 IP 和端口(如
),不能写
或
(MyCat 容器或远程部署时会连不通)
必须和
在同一
下,且不能只配一个——哪怕只有一个从库,也要写成
检查
中
段是否启用了
(写用户)和
(读用户),否则 MyCat 会把所有请求都当写处理
应用连接字符串必须用 MyCat 的端口(如
),且数据库名必须匹配
中定义的
名,大小写敏感
为什么 SHOW SLAVE STATUS 显示正常,但 MyCat/Atlas 仍读不到从库数据
这不是中间件问题,而是主从复制本身存在隐性断点:比如主库开了
却漏配系统库,或从库 SQL 线程卡在某个 DDL 上(
显示
)。
执行
后,重点看
是否持续 > 0,以及
是否停滞不动
检查从库错误日志:
,常见报错如
,说明主从表结构已不一致
MyCat 日志(
)里搜
或
,确认它是否真连上了从库的 IP:PORT
用
手动连从库测试 SELECT,排除网络和账号权限问题
真正难的不是配通,而是让读流量稳定落到从库、同时避开主从延迟导致的脏读。业务代码里“写完立刻查”的逻辑,必须绕过中间件走主库直连,这个控制点不在宝塔也不在 MyCat 配置里,而在你自己的 DAO 层。
caching_sha2_passwordERROR 1045 (28000): Access denied for usermysql_native_passwordALTER USER 'atlas_user'@'%' IDENTIFIED WITH mysql_native_password BY 'your_pass'; FLUSH PRIVILEGES;/usr/local/mysql-proxy/conf/test.cnfpwdsecho -n "your_pass" | base64127.0.0.1:12340.0.0.0:1234/usr/local/mysql-proxy/bin/mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/test.cnfmysql-proxyschema.xmlbalance="1"writeHost192.168.1.10:3306localhost127.0.0.1readHostwriteHostserver.xmlreadOnly="false"readOnly="true"127.0.0.1:8066schema.xmllogicalTablebinlog_ignore_dbSlave_SQL_Running_StateWaiting for table metadata lockSHOW SLAVE STATUS\GSeconds_Behind_MasterExec_Master_Log_Postail -f /www/server/mysql/data/*.errCould not execute Write_rows_v1 event on table xxx; Error_code: 1032; handler error HA_ERR_END_OF_FILElogs/mycat.logcan't get connectionconnection refusedmysql -h 192.168.1.11 -P 3306 -u readonly -p