开发者必看:MySQL主从复制与Laravel读写分离的完美搭配

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 开发者必看:MySQL主从复制与Laravel读写分离的完美搭配

介绍

主从同步配置的主要性不用多说,本文将详细介绍了如何在MySQL数据库中设置主从复制,以及如何在Laravel框架中实现数据库的读写分离。

通过一系列的步骤,包括修改MySQL配置、创建同步账户、获取二进制日志文件名和位置、导出主服务器数据库、配置从服务器、导入数据库以及执行同步SQL等。

主服务器设置

修改mysql配置


# [mysqld]模块
[mysqld]
# 开启二进制日志
log-bin=mysql-bin
# 二进制日志的记录格式  
binlog_format=mixed
# 设置server-id
server-id=1

重启mysql服务

创建用于同步的账户:


# 创建同步账号
mysql> create user your_repl_user@'%' identified by 'your_repl_password';
# 授权账号同步权限
mysql> GRANT REPLICATION SLAVE ON *.* TO your_repl_user@'%';
# 刷新权限
mysql> FLUSH PRIVILEGES;

获取主服务器的二进制日志文件名和位置


# 查看 master 状态
mysql> show master status;

记录下 FilePosition的值,这些将用于配置从服务器。

image.png

导出主服务器数据库


mysqldump -u username -p database_name > dump_filename.sql

这里的参数解释如下:

mysqldumpMySQL提供的数据库导出工具。

-u username:指定连接数据库的用户名。

-p:提示输入密码(在命令行中输入密码时不会显示)。

database_name:你想要导出的数据库名称。

dump_filename.sql:导出的文件名,你可以根据需要命名。

image.png

配置从服务器

修改mysql配置


# [mysqld]模块
[mysqld]
# 设置server-id
server-id=2

重启mysql服务

导入主服务器数据库

执行同步sql


mysql> CHANGE MASTER TO
->     MASTER_HOST='***.***.***.***',             # 主服务器ip
->     MASTER_USER='your_repl_user',                        # 主服务器登陆名
->     MASTER_PASSWORD='your_repl_password',          # 主服务器登陆密码
->     MASTER_LOG_FILE='mysql-bin.000283',        # 二进制文件的名称
->     MASTER_LOG_POS=45844110;                       # 二进制文件的位置

启动从服务器复制功能


mysql> start slave;

查看 slave 状态


mysql> show slave status

确保Slave_IO_RunningSlave_SQL_Running 的值都为 Yes

Laravel读写分离设置

Laravel 中实现 MySQL 的读写分离,通常涉及到配置数据库连接,以便应用程序可以根据操作类型(读或写)连接到不同的服务器。

打开数据库配置文件:

Laravel 项目中,打开 config/database.php 文件。

配置多个连接


'mysql' => [
    'read' => [
        'host' => [
            '从服务器ip',
        ],
    ],
    'write' => [
        'host' => [
            '主服务器ip',
        ],
    ],
    'sticky' => true,
    'driver' => 'mysql',
    'database' => 'database',
    'username' => 'root',
    'password' => '',
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix' => '',
],

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

但是要注意的是使用 Schema 门面方法可能会造成读写分离失效。

总结

通过以上步骤,你已经成功配置了 MySQL 的主从同步和 Laravel 的读写分离。

现在,你的 Laravel 应用程序可以自动根据操作类型连接到不同的 MySQL 服务器,从而提高数据库的性能和可用性。



相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
17天前
|
SQL 关系型数据库 MySQL
说一下MySQL主从复制的原理?
【8月更文挑战第24天】说一下MySQL主从复制的原理?
44 0
|
18天前
|
存储 关系型数据库 MySQL
实战!MySQL主从复制一键搭建脚本分享
实战!MySQL主从复制一键搭建脚本分享
25 2
|
19天前
|
SQL 关系型数据库 MySQL
在Linux中,mysql 如何减少主从复制延迟?
在Linux中,mysql 如何减少主从复制延迟?
|
1月前
|
SQL 关系型数据库 MySQL
配置MySQL主从复制(一主一从)
配置MySQL主从复制(一主一从)
|
17天前
|
关系型数据库 MySQL 网络安全
MySQL主从复制详细教程
配置MySQL的主从复制是一个细致的过程,需要仔细遵循上述步骤进行。一旦配置完成并运行正常,主从复制将大大提高数据库的可用性和读写性能。在操作过程中,务必保持谨慎,确保数据的一致性和安全性。
59 0
|
1月前
|
SQL 关系型数据库 MySQL
(二十五)MySQL主从实践篇:超详细版读写分离、双主热备架构搭建教学
在上篇《主从原理篇》中,基本上把主从复制原理、主从架构模式、数据同步方式、复制技术优化.....等各类细枝末节讲清楚了,本章则准备真正对聊到的几种主从模式落地实践,但实践的内容通常比较枯燥乏味,因为就是调整各种配置、设置各种参数等步骤。
156 2
|
1月前
|
SQL canal 关系型数据库
(二十四)全解MySQL之主从篇:死磕主从复制中数据同步原理与优化
兜兜转转,经过《全解MySQL专栏》前面二十多篇的内容讲解后,基本对MySQL单机模式下的各方面进阶知识做了详细阐述,同时在前面的《分库分表概念篇》、《分库分表隐患篇》两章中也首次提到了数据库的一些高可用方案,但前两章大多属于方法论,并未涵盖真正的实操过程。接下来的内容,会以目前这章作为分割点,开启MySQL高可用方案的落地实践分享的新章程!
500 1
|
21天前
|
SQL 关系型数据库 MySQL
mysql读写分离,主从同步
本文介绍了如何在Laravel项目中配置数据库读写分离,并实现MySQL主从同步。主要步骤包括:在`config/database.php`中设置读写分离配置;为主机授予从机访问权限;配置各MySQL服务器的`/etc/my.cnf`文件以确保唯一的`server-id`;以及通过SQL命令设置主从关系并启动从服务。文章还针对一些常见错误提供了排查方法。最后通过验证确认主从同步是否成功。[原文链接](https://juejin.cn/post/6901581801458958344)。版权所有者为作者佤邦帮主,转载请遵循相关规定。
|
30天前
|
cobar 关系型数据库 MySQL
使用MyCat实现MySQL主从读写分离(一)概述
【8月更文挑战第11天】MySQL读写分离通过主从复制分散负载,主库负责写操作,从库承担读查询,以复制技术确保数据一致性。此策略有效缓解锁竞争,提升查询效能并增强系统可用性。实现方式包括应用层处理,简便快捷但灵活性受限;或采用中间件如MyCAT、Vitess等,支持复杂场景但需专业团队维护。
36 0
|
1月前
|
SQL 关系型数据库 MySQL
基于proxysql实现MySQL读写分离
基于proxysql实现MySQL读写分离

热门文章

最新文章

下一篇
DDNS