MySQL读写分离就是创建不同的几个数据库来实现读的时候是一个数据库,写的时候是另一个数据库,提升系统的允许效率,读写分离运用了MySQL的主从复制
主从复制的含义:就是将主库的数据同步到从库的数据,从而保证从库的数据和主库的数据保持一致。
主从复制的原理:MySQL主从复制是一个异步的复制过程,底层是基于MySQL数据库自带的二进制日志功能,就是一台或者多台的数据库(从库)从另一台数据库(主库)进行日志的复制再解析日志并应用到自身,最终实现从库和主库的数据保持一致。
一 、 读写分离的配置步骤:(此处使用的是Linux虚拟机)
第一步:创建两台Linux虚拟机,并安装上MySQL数据库(自行安装)
第二步:在Linux中配置其中一个MySQL为主库
1、修改MySQL数据库的配置文件/etc/my.cnf
2、在当前的配置文件中加入以下配置
[mysqld]
log-bin=mysql-bin 含义: 启用二进制日志
server-id=100 含义: 服务器唯一id
3、重启服务
systemctl restart mysqld
4、创建用户,用于从库和主库之间的通信
GRANT REPLICATION SLAVE ON *.* to 'xiaoming'@'%' identified by 'Root@123456';
以上创建是创建一个用户xiaoming ,密码是Root@123456 ,并且给xiaoming用户授权REPLICATION SLAVE 权限。 常用户建立复制时所需要用到的用户权限,也就是slave必须被master授权具有该权限的用户,才能通过该用户复制
5、登录MySQL数据库,执行下面的SQL,记录下结果中File 和Position的值
show master status
【注意】:执行完这步以后就不要再执行任何操作。当前虚拟机就停留在当前步骤
第三步:在Linux中配置从库(此时在另一个虚拟机中,不是相同的虚拟机)
1、修改配置文件 /etc/my.cnf
[mysqld]
server-id=101 含义:服务器id必须唯一
2、重启MySQL的服务
systemctl restart mysqld
3、执行下面的SQL,其中那个master_host 是我们自己主库的ip,那个master_log_file 、master_log_pos也是我们自己的(主库的)
change master to master_host='192.168.190.141',master_user='xiaoming',master_password='Root@123456',master_log_file='mysql-bin.000001',master_log_pos=441;
4、最后执行一句
start slave;
5、登录MySQL数据库,执行执行下面的SQL,查看从数据库的状态,如果在Linux中查看比较混乱,那么复制执行出来的数据到另一个软件中查看,就不会混乱
如果Slave_IO_Running 和Slave_SQL_Running 都为yes,则说明配置成功
show slave status;
第四步:测试,测试就是打开我们的windows的数据库软件,去连接Linux中数据库,连接成功以后,完后在主库创建一个表,完后再刷新从库如果出现相同的数据库那么就是配置成功。
二 、在IDEA中实现配置数据库的读写分离,从而来实现项目的读写分离
在IDEA中配置读写分离是通过Sharding-JDBC来实现的
第一步:导入Sharding-JDBC的依赖
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
<version>4.0.0-RC1</version>
</dependency>
第二步:在配置文件中配置数据源以及读写分离的配置
spring:
shardingsphere:
datasource:
names:
master,slave
# 主数据源,那个url就是我们Linux中的ip地址
master:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.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.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显示,默认falsemain:
allow-bean-definition-overriding: true文章来源:https://www.toymoban.com/news/detail-836518.html
经过以上配置项目就实现了读写分离的配置。 文章来源地址https://www.toymoban.com/news/detail-836518.html
到了这里,关于MySQL的读写分离的配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!