美文网首页
30. 读写分离

30. 读写分离

作者: 星野君 | 来源:发表于2022-05-15 14:52 被阅读0次

    一、Mysql主从复制

    • 主库
    1. 修改mysql数据库的配置文件/etc/my.cnf
    [mysqld]
    log-bin=mysql-bin #启动二进制日志
    server-10=100 #服务器唯一id
    
    1. 重启mysql服务
    systemctl restart mysqld
    
    1. 登录mysql数据库执行下面sql
    grant repliaction slave on *.* 'user'@'%' identified by '123456';
    

    注:sql作用是创建一个user用户,密码是123456,并且给他repliaction slave的权限,用于建立复制时需要的权限。

    1. 执行sql,记录下结果中file和position的值
    show master status
    
    • 从库
    1. 修改mysql数据库的配置文件/etc/my.cnf
    [mysqld]
    server-10=101 #服务器唯一id
    
    1. 重启mysql服务
    systemctl restart mysqld
    
    1. 登录mysql数据库执行下面sql
    change master to master_host='192.168.xxx.xxx',master_user='user',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=439;
    start slave;
    

    注:master_log_file是主库查询show master status时的file,master_log_pos是Position

    二、使用Sharding-JDBC读写分离

    1. 导入坐标
    <dependency>
        <groupId>org.apache.shardingsphere</groupId>
        <artifactId>sharding-jdbc-spring-boot-starter</artifactId>
        <version>4.1.1</version>
    </dependency>
    
    1. 在配置文件中配置读写分离规则,在配置文件中配置允许bean定义覆盖配置项
    server:
      port: 8080
    spring:
      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.138.100:3306/rw?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.138.101:3306/rw?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
    

    相关文章

      网友评论

          本文标题:30. 读写分离

          本文链接:https://www.haomeiwen.com/subject/agtburtx.html