MySQL主从分离的原理、配置和代码实现

1.MySQL主从分离的原理

在这里插入图片描述
MySQL主从分离的原理即数据库主服务器将对数据的操作写入二进制日志文件中,从服务器读取二进制文件通过SQL线程操作从服务器上的数据,确保主从数据同步。

2.主从分离配置

环境要求:两台Linux服务器,且已经装好MySQL数据库。

2.1.Master服务器配置

  1. 修改my.cnf文件,vim etc/my.cnf;
  2. 在mysqld节点下增加以下配置项;
    在这里插入图片描述
  3. 重启MySQL,service mysqld restart;
  4. 重新登录MySQL,任意执行MySQL命令,再执行show master status查看是否配置成功;
    在这里插入图片描述
  5. 在主库上创建主从同步的用户,并赋予同步的权限(只需要同步的权限即可),本文档中创建的用户为repl,密码为mysql。
    在这里插入图片描述
    注意:以上命令中的IP是从服务器的IP

2.2.Slave服务器的配置

  1. 修改my.cnf文件,vim etc/my.cnf;
  2. 在mysqld节点下增加以下配置项;
    在这里插入图片描述
  3. 重启MySQL服务;
    在这里插入图片描述
    注意:以上命令只是重启MySQL服务的另一种方式
  4. 登录MySQL,执行命令,进行主从同步连接配置并开启主从跟踪;
    在这里插入图片描述
    注意:以上命令中master_log_file的文件名可在主服务器上通过show master status命令查询; 以上命令中的master_log_pos=0可以挪用;(当主从同步失败后,可以记录失败的位置,重新配置主从同步)
  5. 执行命令查看主从同步是否配置成功,没有错误信息说明配置成功。
    在这里插入图片描述
    注意:以上命令中的\G表示将内容竖向显示

3. 代码层读写分离的实现

  1. 创建DynamicDataSourceHolder类,用于从连接池中动态获取数据源类型;
    在这里插入图片描述
  2. 创建继承自AbstractRoutingDataSource类的java类,重写抽象方法,决定使用哪一种数据源;
    在这里插入图片描述
  3. 开发mybatis拦截器,实现读写分离(写主库,读从库);
    在这里插入图片描述
    在这里插入图片描述
  4. 修改mybatis核心配置文件,新增自定义拦截器的配置,其他配置项不变;
    在这里插入图片描述
  5. 修改数据库配置文件,为多个数据源;
    在这里插入图片描述
    注意:以上配置文件中主从数据库出URL以外其他配置项都相同。
  6. 修改Spring和mybatis整合的配置文件,新增以下配置,其他的配置不变。
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值