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覆盖

浙公网安备 33010602011771号