MySQL主从复制
1.准备工作
准备好两台服务器,可创建两个虚拟机。
分别设置其IP,作为两台mysql服务器。
主库Master: 192.168.xxx.xxx
从库Slave: 192.168.xxx.xxx
查看ip:
ip addr
2.主库的配置
1).修改mysql数据库的配置文件 /etc/my.cnf
[mysqld]
log-bin=mysql-bin # 启用二进制日志
server-id=xxx #设置服务器的唯一id
2).重启MySQL服务
systemctl restart mysqld
3).登录MySQL数据库,执行下面SQL:
grant replication slave on *.* to 'xiaoming'@'%' identified by 'Root@123456';
创建一个用户 xiaoming,密码为 Root@123456,并且给xiaoming用户授予REPLICATION SLAVE 权限,用于建立复制时所需要的用户权限,也就是slave必须被master授权具有该权限的用户,才能通过用户复制。
4).记录File和Position值
show master status;
上面SQL的作用是查看Master的状态,执行完SQL后不要执行任何操作。
3.配置从库
1)修改配置文件 /etc/my.cnf
[mysqld]
server-id=101 #服务器唯一id
2)重启sql服务同上。
3)登录MySQL数据库
change master to master_host='192.168.xxx.xxx'(主库ip),master_user='xiaoming',master_password='Root@123456',master_log_file='mysql-bin.000001',master_log_pos=xxx;
start slave;
4.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:
names:
master,slave
# 主数据源
master:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.xxx.xxx:3306/dbName?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.xxx.xxx:3306/dbName?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