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;

      该信息在从库配置中会用到
  • 从服务器的配置

    • 修改从库配置文件 /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

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覆盖
    
posted @   ydw333  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示