一、Mysql主从复制
- 主库
- 修改mysql数据库的配置文件/etc/my.cnf
[mysqld]
log-bin=mysql-bin #启动二进制日志
server-10=100 #服务器唯一id
- 重启mysql服务
systemctl restart mysqld
- 登录mysql数据库执行下面sql
grant repliaction slave on *.* 'user'@'%' identified by '123456';
注:sql作用是创建一个user用户,密码是123456,并且给他repliaction slave的权限,用于建立复制时需要的权限。
- 执行sql,记录下结果中file和position的值
show master status
- 从库
- 修改mysql数据库的配置文件/etc/my.cnf
[mysqld]
server-10=101 #服务器唯一id
- 重启mysql服务
systemctl restart mysqld
- 登录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读写分离
- 导入坐标
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
<version>4.1.1</version>
</dependency>
- 在配置文件中配置读写分离规则,在配置文件中配置允许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
网友评论