mysql读写分离,主从同步

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 本文介绍了如何在Laravel项目中配置数据库读写分离,并实现MySQL主从同步。主要步骤包括:在`config/database.php`中设置读写分离配置;为主机授予从机访问权限;配置各MySQL服务器的`/etc/my.cnf`文件以确保唯一的`server-id`;以及通过SQL命令设置主从关系并启动从服务。文章还针对一些常见错误提供了排查方法。最后通过验证确认主从同步是否成功。[原文链接](https://juejin.cn/post/6901581801458958344)。版权所有者为作者佤邦帮主,转载请遵循相关规定。

laravel设置方法:config/database.php 文件

dart

代码解读

复制代码

 'mysql' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'read' => [
                ['host' => 'XX.XX.XX.XX', 'port'=>1234]
            ],
            'write' => [
                ['host' => 'localhost', 'port'=>123]
            ],
//            'host' => env('DB_HOST', '127.0.0.1'),
//            'port' => env('DB_PORT', '3306'),
	]

这样就可以在不同的数据库读写分离了。记住要设置mysql的访问权限,同意该项目的ip访问mysql(grant all privileges on *.* to 'root'@'XX.X.XX.X'  IDENTIFIED BY 'mypassword' WITH GRANT OPTION; FLUSH PRIVILEGES;)

mysql主从同步设置(难点)

修改两mysql服务器的 /etc/my.conf文件

ini

代码解读

复制代码

log-bin=mysql-bin
server-id	= 13

两服务器的server-id不能一样,log-bin 文件一般都已经存在,可改可不改(不改偶尔会有日志回滚同步的问题)。

修改好后重启mysql  

代码解读

复制代码

 service mysql restart

登陆主数据库

shell

代码解读

复制代码

mysql -u root -p
密码:******* 
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave'@'从数据库ip' identified by 'password';
mysql> FLUSH PRIVILEGES;

获取主数据库日志信息

sql

代码解读

复制代码

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000005      120|              | mysql            |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

记住file和position, 从数据库设定需要用到。

登陆从数据库

ini

代码解读

复制代码

mysql -u root -p
密码:*******
mysql> change master to master_host='主服务器ip', master_user='slave', master_password='password',master_log_file='mysql-bin.000005', master_log_pos=120;

如果修改了3306端口需要写入master_port=1234,否则连不上

ini

代码解读

复制代码

mysql> start slave;
mysql> show slave status \G;

当   Slave_IO_Running: yes                   Slave_SQL_Runing:yes     时,主从同步成功

报错情况

Slave_SQL_Running: no  ; 可在下面看到Last_Error: ………………sql语句:的情况下,是sql日志同步失败,事务回滚的问题。

ini

代码解读

复制代码

mysql> stop slave ;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> start slave ;

运行后如果还是不行,看 Last_Error内容有没有改变,改变了就是有效的,继续重复上面的语句。

Slave_IO_Running: no  ;我出现这种情况的原因是在从服务器上连不上主服务器的mysql,因为master设置没有加入我自己修改过的master_port=1234。

在尝试分别在主从服务器连接对方的mysql中看到报错才知道原因:mysql -h XX.XX.XX.XX -u root -p --port=1234(linux终端连接其他服务器mysql)

Slave_IO_Running: 和 Slave_SQL_Runing yes 后经过测试修改主数据库,从数据库的内容也得到修改。


转载来源:https://juejin.cn/post/6901581801458958344

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
185
分享
相关文章
如何将数据从MySQL同步到其他系统
【10月更文挑战第17天】如何将数据从MySQL同步到其他系统
881 0
如何实现 MySQL 的读写分离?
本文介绍了 MySQL 读写分离的实现方式及其主从复制原理,解释了如何通过主从架构提升读并发能力。重点分析了主从同步延时问题及解决方案,如半同步复制、并行复制等技术手段,并结合实际案例探讨了高并发场景下的优化策略。文章还提醒开发者在编写代码时需谨慎处理插入后立即查询的情况,避免因主从延时导致的数据不一致问题。
261 44
如何实现 MySQL 的读写分离?
MySQL 备份 Shell 脚本:支持远程同步与阿里云 OSS 备份
一款自动化 MySQL 备份 Shell 脚本,支持本地存储、远程服务器同步(SSH+rsync)、阿里云 OSS 备份,并自动清理过期备份。适用于数据库管理员和开发者,帮助确保数据安全。
MySQL原理简介—12.MySQL主从同步
本文介绍了四种为MySQL搭建主从复制架构的方法:异步复制、半同步复制、GTID复制和并行复制。异步复制通过配置主库和从库实现简单的主从架构,但存在数据丢失风险;半同步复制确保日志复制到从库后再提交事务,提高了数据安全性;GTID复制简化了配置过程,增强了复制的可靠性和管理性;并行复制通过多线程技术降低主从同步延迟,保证数据一致性。此外,还讨论了如何使用工具监控主从延迟及应对策略,如强制读主库以确保即时读取最新数据。
MySQL原理简介—12.MySQL主从同步
MySQL 官宣:支持读写分离了!!
【10月更文挑战第8天】MySQL的读写分离功能显著提升了数据库性能、可用性和可靠性。通过将读写操作分配至不同服务器,有效减轻单个服务器负载,提高响应速度与吞吐量,并增强系统稳定性。此外,它还支持便捷的扩展方式,可通过增加只读服务器提升读操作性能。实现读写分离的方法包括软件层面(如使用数据库中间件)和硬件层面(使用独立服务器)。使用时需注意数据一致性、负载均衡及监控管理等问题。
355 0
Flink CDC MySQL同步MySQL错误记录
在使用Flink CDC同步MySQL数据时,常见的错误包括连接错误、权限错误、表结构变化、数据类型不匹配、主键冲突和
240 17
Maxwell:binlog 解析器,轻松同步 MySQL 数据
Maxwell:binlog 解析器,轻松同步 MySQL 数据
629 11
Mysql主从同步 清理二进制日志的技巧
Mysql主从同步 清理二进制日志的技巧
60 1
MySQL主从复制实现读写分离
MySQL主从复制(二进制日志)、 Sharding-JDBC实现读写分离
MySQL主从复制实现读写分离
mysql 主从同步 实现增量备份
【8月更文挑战第28天】mysql 主从同步 实现增量备份
112 3

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等