MySQL通过主从复制实现读写分离
MySQL主从复制原理
主服务器将写操作指令写入二进制日志中,从服务器有指定线程负责读取该二进制文件并将其写入从服务器的中继日志中,
然后从服务器的另一个线程会重做中继日志中的操作,从而达到主从服务器的数据一致性。
MySQL主从复制主从服务器的配置
-
主服务器的配置
- MySQL配置文件配置
配置文件路径:/etc/my.cnf
[mysqld]
log-bin=mysql-bin 开启二进制日志
server-id=100 服务器唯一id,id不固定,用作唯一标识 - 创建主从服务器通信所用的用户
grant all on *.* to 'username'@'host' identified by 'password'; - 查看主库状态
show master status;
该信息在从库配置中会用到
- MySQL配置文件配置
-
从服务器的配置
- 修改从库配置文件 /etc.my.cnf
[mysqld]
server-id=101 服务器唯一标识 - 配置从库的主库
change master to
master_host='ip',master_user='username',master_password='password',master_log_file='mysql-bin.000004',master_log_pos='675' - 开启从库
start slave
- 修改从库配置文件 /etc.my.cnf
springboot项目中如何实现读写分离
- 导入相关依赖
<dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>sharding-jdbc-spring-boot-starter</artifactId> <version>4.0.0-RC1</version> </dependency>
- application.yml文件配置
shardingsphere: datasource: names: master,slave # 主数据源 master: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://192.168.40.131:3306/db_reggie?characterEncoding=utf-8 username: root password: root # 从数据源 slave: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://192.168.40.133:3306/db_reggie?characterEncoding=utf-8 username: root password: root masterslave: # 读写分离配置 load-balance-algorithm-type: round_robin #轮询 # 最终的数据源名称 name: dataSource # 主库数据源名称 master-data-source-name: master # 从库数据源名称列表,多个逗号分隔 slave-data-source-names: slave props: sql: show: true #开启SQL显示,默认false main: allow-bean-definition-overriding: true #允许bean覆盖
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~