数据库读写分离

环境

两台虚拟机并且都配置了mysql,其中一台做master(192.168.146.100),其余做slave(192.168.146.101)
在这里插入图片描述

1.修改master

  1. 配置master开启二进制日志
    在这里插入图片描述

  2. 重启mysql 命令:systemctl restart mysqld

  3. 对master设置用户并创建密码和授权对master设置用户并创建密码和授权

  4. 查看master状态之后不要操作任何东西
    查看master状态

2.修改slave

  1. 修改slave(192.168.146.101)在这里插入图片描述
  2. 重启mysql 命令:systemctl restart mysqld
  3. 修改slave,记住master_host,master_user,master_password,master_log_file名字。master_position
    在这里插入图片描述
  4. 用show slave status\G查看slave状态
    在这里插入图片描述
重点关注以上四个内容,都满足说明主从复制成功,若Slave_IO_Running=no,且两台虚拟机是clone出来的,记住改一下clone的UUID。

3.异常修改uuid

  1. 获取uuid
# uuidgen   
  1. 替换uuid
# vim /etc/sysconfig/network-scripts/ifcfg-ens33

4.程序中使用读写分离

  1. 引入依赖
		<dependency>
            <groupId>org.apache.shardingsphere</groupId>
            <artifactId>sharding-jdbc-spring-boot-starter</artifactId>
            <version>4.0.0-RC1</version>
        </dependency>
最好使用这个版本
  1. application.yml配置
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.146.100:3306/reggie?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
        username: root
        password: root
      # 从数据源
      slave:
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://192.168.146.101:3306/reggie?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
        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
spring.main.allow-bean-definition-overriding=true就是解决bean重复定义的。设置为true时,后定义的bean会覆盖之前定义的相同名称的bean。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值