MySQL主从配置
MySQL主从配置
注意
- 主从服务器操作系统版本和位数一致;
- Master 和 Slave 数据库的版本要一致;
- Master 和 Slave 数据库中的数据要一致;
- Master 开启二进制日志, Master 和 Slave 的 server_id 在局域网内必须唯一;
步骤
主库配置
修改配置文件/etc/my.cnf(windows下在my.ini文件中)
1
2
3[mysqld]
log-bin=master-bin #开启二进制文件
server-id=100 #服务器唯一ID重启mysql服务
1
systemctl restart mysqld
登录mysql创建一个用户并赋予REPLICATION SLAVE权限
1
2
3CREATE USER 'username'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'username'@'%';
ALTER USER 'username'@'%' IDENTIFIED WITH mysql_native_password BY 'password';查看主库状态
1
show master status;
从库配置
修改配置文件
1
2[mysqld]
server-id=101 #服务器唯一ID重启mysql服务
设置主节点参数
1
2
3
4
5
6CHANGE MASTER TO
MASTER_HOST='192.168.229.168',
MASTER_USER='zs',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='master-bin.000001', #查看主库状态时File列的参数
MASTER_LOG_POS=3578; #查看主库状态时Position列的参数开启主从服务
1
start slave;
查看是否成功
1
show slave status \G
常见错误
- Slave_SQL_Running: NO
解决方式:
1 |
|
- Slave_IO_Running: NO/Collecting
解决方式:
1 |
|
读写分离
主库负责增删改,从库负责查
Sharding-JDBC
轻量级java框架,增强JDBC功能,可以在程序中实现数据库读写分离
导入坐标
1
2
3
4
5<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
<version>4.0.0-RC1</version>
</dependency>配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35spring:
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.229.168:3306/rw?characterEncoding=utf-8
username: root
password: 123456
# 从数据源
slave:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.229.130:3306/rw?characterEncoding=utf-8
username: root
password: 123456
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:
#Sharding和Druid的类有重名的,需要加上这个配置
allow-bean-definition-overriding: true
MySQL主从配置
http://xwww12.github.io/2022/08/19/数据库/mysql/MySQL主从配置/