讲师中心 微信公众号
AI工具推荐 视频效率加速

Laravel读写分离配置怎么上

冬婷吖_2589

冬婷吖_2589

发布时间:2026-09-13 13:20:05

|

468人浏览过

|

来源于php中文网

原创

Laravel读写分离需在config/database.php中将read/write配置为独立数组,.env中须分别定义DB_WRITE_HOST和DB_READ_HOST,启用sticky可解决主从延迟导致的查询不一致问题。

laravel读写分离配置怎么上

mysql 连接配置好读写分离后,Laravel 会自动按操作类型分发查询——selectreadinsert/update/deletewrite。但实际落地时,光改配置远远不够,关键在环境隔离、连接复用和主从延迟应对。

config/database.php 里怎么填 read/write 数组

readwrite 必须是独立数组,不能直接写成字符串或扁平列表。常见错误是把多个从库 IP 写成一个字符串,或者漏掉外层方括号:

✅ 正确(单从库):
'read' => ['host' => '192.168.1.10']
'write' => ['host' => '192.168.1.20']

❌ 错误(语法无效):
'read' => '192.168.1.10'
'read' => ['192.168.1.10', '192.168.1.11'](缺少键名)

Laravel
Laravel

避免常见的Laravel错误:N+1查询、批量赋值、缓存陷阱及队列序列化陷阱。

下载

多从库支持数组嵌套,每个元素是一个完整连接配置:
'read' => [ ['host' => '192.168.1.10', 'port' => '3307'], ['host' => '192.168.1.11', 'port' => '3307'] ]
Laravel 每次执行 select 时会随机选一个,不轮询也不加权。

.env 文件必须拆开写 DB_WRITE_HOST 和 DB_READ_HOST

Laravel 不识别 DB_HOST 同时用于读写,read/write 子配置里的值不会自动 fallback 到 DB_HOST。必须显式声明:

.env 中补全:
DB_WRITE_HOST=192.168.1.20
DB_READ_HOST=192.168.1.10
DB_DATABASE=app
DB_USERNAME=app_user
DB_PASSWORD=secret

如果共用账号密码,readwrite 配置里就别重复写 username/password,统一由外层继承;但如果从库账号权限受限(比如只读),就得在 read 数组里单独指定 usernamepassword

sticky 配置不是“可有可无”,而是要明确开关

sticky 默认是 false,一旦开启,只要当前请求里执行过一次 save()update(),后续所有 get()first() 都强制走写库——哪怕你模型里写了 on('mysql::read') 也没用。

要不要开?看场景:
- 管理后台提交表单后立刻查列表:建议开,避免刚写入就查不到
- 用户中心高频刷新个人资料页:开,规避主从延迟导致“自己看不到刚改的昵称”
- 报表类页面(纯读、数据一致性要求低):关,让流量真正分散到从库

配置位置就在 mysql 主配置下:
'sticky' => true,
注意它和 read/write 是同级字段,别塞进 read 里面。

Eloquent 查询有时不走 read,原因在这儿

select 类操作默认走 read,但以下情况会绕过:

- 使用 DB::table('users')->where(...)->update(...):这是 Query Builder 的写操作,走 write,没问题
- 用 User::where(...)->update(...):Eloquent 也会走 write
- 但 User::where(...)->lockForUpdate()->get()lockForUpdate 是写锁语义,Laravel 强制走 write 连接,哪怕你是 get()
- withTrashed() + restore() 这类软删除操作也走 write

最隐蔽的是事务:
DB::transaction(function () { User::first(); });
只要进了事务,不管里面有没有写操作,整个事务内所有查询都走 write 连接——这是为了保证事务一致性,无法绕过。

真正难搞的不是配置本身,是主从延迟带来的业务逻辑错觉。比如用户注册后跳转到个人页,sticky=true 能解决,但要是注册成功后发短信通知另一个服务去查数据库,那个服务没开 sticky,就可能查到旧数据。这种跨请求的一致性,得靠业务层加缓存版本号或延迟补偿,Laravel 的配置管不到那儿。

热门AI工具

更多
墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

LibLibAI
LibLibAI Hot

一款AI视频创作工具,主要用于国内领先的AI创意平台,以海量模型、低门槛操作与“创作-分享-商业化”生态,让小白与专业创作者都能高效实现图文乃至视频创意表达,适合需要提升相关任务效率的用户。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

相关专题

更多
laravel组件介绍
laravel组件介绍

laravel 提供了丰富的组件,包括身份验证、模板引擎、缓存、命令行工具、数据库交互、对象关系映射器、事件处理、文件操作、电子邮件发送、队列管理和数据验证。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

817

2024.04.09

laravel中间件介绍
laravel中间件介绍

laravel 中间件分为五种类型:全局、路由、组、终止和自定。想了解更多laravel中间件的相关内容,可以阅读本专题下面的文章。

795

2024.04.09

laravel使用的设计模式有哪些
laravel使用的设计模式有哪些

laravel使用的设计模式有:1、单例模式;2、工厂方法模式;3、建造者模式;4、适配器模式;5、装饰器模式;6、策略模式;7、观察者模式。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

2348

2024.04.09

thinkphp和laravel哪个简单
thinkphp和laravel哪个简单

对于初学者来说,laravel 的入门门槛较低,更易上手,原因包括:1. 更简单的安装和配置;2. 丰富的文档和社区支持;3. 简洁易懂的语法和 api;4. 平缓的学习曲线。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3281

2024.04.10

laravel入门教程
laravel入门教程

本专题整合了laravel入门教程,想了解更多详细内容,请阅读专题下面的文章。

4570

2025.08.05

laravel实战教程
laravel实战教程

本专题整合了laravel实战教程,阅读专题下面的文章了解更多详细内容。

3056

2025.08.05

laravel面试题
laravel面试题

本专题整合了laravel面试题相关内容,阅读专题下面的文章了解更多详细内容。

5869

2025.08.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

1336

2026.03.04

Conan私有仓库搭建教程
Conan私有仓库搭建教程

本专题系统的讲解Conan私有仓库的搭建流程,涵盖仓库服务部署、存储目录配置、用户认证、权限划分和远程地址添加,并介绍内部C++依赖包的上传、下载及版本维护方法。

0

2026.09.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn