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';
相关推荐
麦聪聊数据12 分钟前
利用实时数据管道与 SQL2API 重构企业自动化审计架构
数据库·sql·低代码
麦聪聊数据13 分钟前
重构开放生态:利用 QuickAPI 跨越遗留系统与敏捷交付的工程实践
数据库·sql·低代码·restful
百结2145 小时前
Mysql数据库操作
数据库·mysql·oracle
keep one's resolveY5 小时前
时区问题解决
数据库
Leinwin5 小时前
OpenClaw 多 Agent 协作框架的并发限制与企业化规避方案痛点直击
java·运维·数据库
qq_417695055 小时前
机器学习与人工智能
jvm·数据库·python
漫随流水5 小时前
旅游推荐系统(view.py)
前端·数据库·python·旅游
ego.iblacat6 小时前
MySQL 服务基础
数据库·mysql
Maverick067 小时前
Oracle Redo 日志操作手册
数据库·oracle
攒了一袋星辰8 小时前
高并发强一致性顺序号生成系统 -- SequenceGenerator
java·数据库·mysql