目录
1、修改Mysql数据库的配置文件/etc/my.cnf,启用二进制日志
配置-主库Master
1、修改Mysql数据库的配置文件/etc/my.cnf,启用二进制日志
log-bin = mysql-bin 启用二进制日志
server-id = 100 服务器唯一id
2、重启
systemctl restart mysqld
3、为从库授权
GRANT REPLICATION SLAVE ON *.* to 'xiaoming'@'%' identified by 'Root@123456'
4、记录File和Position的值
show master status
配置-从库Slave
1、修改Mysql数据库的配置文件/etc/my.cnf
server-id = 101 服务器唯一id
2、重启
systemctl restart mysqld
3、登录mysql,执行下面sql
change master to master_host='ip',master_user='',master_password='',master_log_file='mysql-bin.000001',master_log_pos=441;
这里的用户和密码与主库授权的用户密码匹配,file和pos与上面的截图中的file和position匹配。
start salve; 开启
4、查看数据库状态
show slave status;
读写分离案例
使用Sharding-JDBC实现读写分离
1、导入maven坐标
<dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>sharding-jdbc-spring-boot-starter</artifactId> <version>4.0.0-RC1</version> </dependency>
2、配置读写分离规则
spring: shardingsphere: datasource: druid: names: master,slave # 主数据源 master: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://ip:3306/itcast?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://ip:3306/itcast?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
3、在配置文件中配置允许bean定义覆盖配置项
main: #允许bean定义覆盖解决数据源冲突 allow-bean-definition-overriding: true