首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Laravel 详细配置mysql读写分离

在平时开发过程中,并发量上来以后,会出现单服务器负载过大的问题,简单说就是单点故障。为了避免这种问题,需要把数据库的数据进行分离,写数据库是写的服务器,读的操作使用单独的服务器,使用分布解决数据库瓶颈问题。

1.读写分离简介

数据库连接时,执行 SELECT 语句表示读操作。而 INSERT、UPDATE 和 DELETE 语句则由另一个数据库连接来执行,全部是写操作。

在 Laravel 框架中,无论你是使用原生 SQL 查询、查询构造器 或是 Eloquent ORM,都能轻松实现读写分离。

在文件config\database.php中配置:多服务器用户名和密码全部为同一个。

'mysql' => [

   'read' => [

       'host' => [

           '192.168.100.101',

           '196.168.100.102',

       ],

   ],

   'write' => [

       'host' => [

           '196.168.100.103',

       ],

   ],

   'sticky' => true,

   'driver' => 'mysql',

   'database' => '你的数据库',

   'username' => '账号',

   'password' => '密码',

   'charset' => 'utf8mb4',

   'collation' => 'utf8mb4_unicode_ci',

   'prefix' => '',

]

read:表示配置读服务器的信息。

write:表示配置写服务器的信息。

sticky:设置生产true时,且在当前请求周期中执行过写操作,那么在这之后的所有读操作都将使用写连接。这样可以确保同一个请求周期中写入的数据库可以被立即读取到,从而避免主从同步延迟导致的数据不一致。

2.在文件config\database.php中配置:多服务器用户名和密码不一致的情况

'mysql' => [

   'read' => [

       [

           'host' => '192.168.100.101',          

'username' => '你的账号',

           'password' => '你的密码',

       ],

       [

           'host' => '192.168.100.102',        

'username' => '你的账号',

           'password' => '你的密码',

       ],

   ],

   'write' => [

       [

           'host' => '192.168.100.103',        

'username' => '你的账号',

           'password' => '你的密码',

       ],

   ],

   'sticky' => true,

   'driver' => 'mysql',

   'database' => '你的数据库',

   'charset' => 'utf8mb4',

   'collation' => 'utf8mb4_unicode_ci',

   'prefix' => '',

]

注意:多服务器数据库账号和密码不一致的情况,需要把每个数据库的账号和密码进行单独配置。

Laravel框架配置读写分离非常简单,但这个配置完全取决于数据库服务器的架构设计。下期我们将配置数据库的读写分离,也使用三台服务器进行配置,完成和本次Laravel数据库配置一致。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OmAd_sFZcoCeqqhBtGOf6uew0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券