主要就是分担压力
master(主库)负责后台维护 增删改
salve(从库 英语翻译 下属 奴隶 也就是主要干活得)负责读(大部分得工作都是select)
两个库分担压力 减小负荷并且保证数据安全(也可以多个从库)
master 主库 通过sql自带得二进制日志 异步slave(从库)保证两库同步
具体操作
需要两台服务器
1.主库操作
vim /etc/my.cfn
log-bin=mysql-bin #开启二进制日志
server-id=100 #服务器唯一id(可以任何数 保证id唯一即可)
2.systemctl restart mysqld
3. GRANT REPLICATION SLAVE ON *.* to 'xiaoming'@'%' identified by 'Root@123456';
创建一个被master认可得(可复制master)得奴隶 xiaoming
file 当前日志得名称
position 当前日志得位置
配置从库
1.vim /etc/my.cnf
server-id=101 #服务器唯一id
2.systemctl restart mysqld
注意 自己得 ip 。file。 master log pos
show slave status;
关于测试
可以在navicat 等 在主库 增删改查 库 表 数据 等 看看两个库是否同步
读写分离 具体案例
maven工程 只需导入上述依赖即可
配置项目相对应得表
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
<version>4.0.0-RC1</version>
</dependency>
server:
port: 8080
mybatis-plus:
configuration:
#在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射
map-underscore-to-camel-case: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
id-type: ASSIGN_ID
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.130.128:3306/rw?characterEncoding=utf-8
username: root
psaaword: root
# 从数据源
slave:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.130.130:3306/rw?characterEncoding=utf-8
username: root
psaaword: root
masterslave:
# 读写分离配置
load-balance-algorithm-type: round_robin
# 最终得数据源名称
name: datasource
# 主库数据源名称
master-data-source-name: master
# 从库数据源名称列表,多个逗号分隔
slave-date-source-names: slave
props:
sql:
show: true #开启sql显示,默认false
main:
#允许bean定义覆盖配置项
allow-bean-definition-overriding: true