win11下mysql数据库设置主从

一、主从版本选择

MySQL 官方建议主库的版本应等于或低于从库版本:

  • MySQL 5.7 主库 → MySQL 8.0 从库 ✅ 允许
  • MySQL 8.0 主库 → MySQL 5.7 从库 ❌ 不支持

二、主库设置

1、找到mysql是配置文件my.ini,一般这个文件都是在Data的安装目录下,比如C:\ProgramData\MySQL\MySQL Server 8.0,有的电脑这个ProgramData文件夹是隐藏起来的。

2、打开my.ini文件,查找server-id,这里默认都是1,主从设置的时候,需要把这个设置成唯一的,如果都是同一个网段,建议使用ip地址的最后的那段

3、确定一下log-bin参数是否存在,比如5.7版本的就没有,如果没有,补上,这个参数是日志的名称前缀,格式是:计算机名称-bin。添加binlog-format参数,binlog-format = ROW是MySQL二进制日志的基于行的复制格式。当设置为ROW格式时,MySQL不会记录执行的SQL语句本身,而是记录每行数据的具体变更内容。

4、打开cmd命令行,重启一下mysql,这样配置才生效,需要使用管理员权限,否则有报错

MySQL80 ​ 是 MySQL 8.0 版本在 Windows 系统中安装时使用的**默认服务名称,**执行以下命令,查看下服务名称

复制代码
sc queryex type= service state= all | findstr /i "mysql"

停止mysql

复制代码
net stop MySQL80

启动mysql

复制代码
net start MySQL80

如果my.ini配置文件修改错误,这里是启动失败的

5、使用navicat连接你的数据库

6、查看server_id是否配置成功

复制代码
SHOW VARIABLES LIKE 'server_id'

7、查看日志是否启动,注意这两个参数,后边从数据库配置的时候需要使用,这时候不要对数据库进行写入和修改,否则后边同步的时候,会报错

复制代码
SHOW MASTER STATUS;

8、使用navicat连接数据库,然后把主库的数据库备份一下。在需要备份的数据库上右键,转储SQL文件->结构和数据。

三、从库设置

1、把上一步保存出来的数据文件复制到从库电脑上。先建立一个数据库名称,如果你多个主数据库的数据库名称都不一样,就可以设置一样的,如果是主库的数据库名称一样,那么就可以自己选一个数据库名称,比如db1,然后选择数据文件,还原一下数据库。

3、mysql8.0默认是有四个通道的,可以执行以下命令确认一下

复制代码
SHOW VARIABLES LIKE 'slave_parallel_workers';

4、执行以下命令,这里的ip,还有账号密码,按照实际的来填写,这里的账号,注意他的权限,是要可以远程访问的。MASTER_LOG_FILE就是主库设置第七步那里查询出来的,就是当前使用的日志文件名称,MASTER_LOG_POS就是位置,要跟主库的对应的上。FOR CHANNEL 'master1';就是把这个数据库放到master1这个通道上。

复制代码
CHANGE MASTER TO
  MASTER_HOST='192.168.0.57',
  MASTER_USER='admin',
  MASTER_PASSWORD='admin',
  MASTER_LOG_FILE='DESKTOP-LRVOV97-bin.000010',
  MASTER_LOG_POS=197
FOR CHANNEL 'master1';

5、如果你有多个主库,而且主库的数据库名称都一致,那么你还需要设置一下数据库名称映射。这里的test就是主库的数据库名称,db1是我们从库上设置的数据库名称,master1是通道1

复制代码
CHANGE REPLICATION FILTER REPLICATE_REWRITE_DB = ((test, db1)) FOR CHANNEL 'master1';

6、执行下以下命令,查看下从库的状态

复制代码
SHOW SLAVE STATUS;

我这里设置了两个从库,所以我这里有两个信息。可以仔细看下这里有很多参数。比如以上这个图,就可以看到主库的ip地址,登录的账号名称,端口号,以及日志文件和位置

这里有两个重要参数,Slave_IO_Running和Slave_SQL_Running,这两个字段都要是Yes,否则就是有设置不正确的,无法进行同步。

这里有两个参数,前边的是我们之前做的数据库名称映射,后边参数是通道

7、启动一下从库

复制代码
START SLAVE;

8、修改主库,从库上的数据会同步变更

四、命令

1、停止通道1的复制线程

复制代码
STOP SLAVE FOR CHANNEL 'master1';

2、启动通道1的复制线程

复制代码
START SLAVE FOR CHANNEL 'master1';

3、重置通道配置(清空这个配置)

复制代码
RESET SLAVE ALL FOR CHANNEL 'master1'

4、显示master1通道状态

复制代码
SHOW SLAVE STATUS FOR CHANNEL 'master1';
相关推荐
老纪的技术唠嗑局17 分钟前
花一年时间整理出的:AI 数据库混合搜索入门实践
数据库
川石课堂软件测试1 小时前
安全测试|常见SQL注入攻击方式、实例及预防
服务器·数据库·sql·功能测试·测试工具·安全·单元测试
笃行3501 小时前
国产化落地避坑 · 干货向|迁移后那条「测试能过、一上生产就查空」的 SQL,多半栽在 WHERE 函数顺序上
数据库
蓝田~2 小时前
MySQL慢查询怎么优化?B+Tree索引原理+MVCC读不阻塞写+EXPLAIN执行计划,从5秒到0.05秒
数据库·mysql
Herbert_hwt2 小时前
MySQL学习前言:关于MySQL的历史与当下学习的必要性
mysql
sunxunyong2 小时前
doris用户资源组配置
数据库
Cloud云卷云舒3 小时前
云卷云舒:HaishanDB的AI原生能力主要应用场景
数据库·人工智能·ai-native·haishandb·移动云长期记忆
时间的拾荒人3 小时前
MySQL 视图详解
android·数据库·mysql
qq_366086223 小时前
sql 查询中关于 null 值判断的问题
数据库·sql
测试修炼手册3 小时前
[测试技术] JUnit 6 入门与实战:断言、参数化与 Mockito
数据库·junit·sqlserver