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';
相关推荐
自在极意功。3 小时前
InnoDB 存储引擎的逻辑存储结构深度解析
mysql·innodb·b+树·索引
Stone_OverLooking3 小时前
Qt6.5.3 mingw64 Ninja编译oracle oci驱动
数据库·qt·oracle
Java爱好狂.3 小时前
如何用JAVA技术设计一个高并发系统?
java·数据库·高并发·架构设计·java面试·java架构师·java八股文
慌糖4 小时前
读书笔记之MySQL的字符集与比较规则小读
数据库
张洪权4 小时前
RBAC 菜单查询的“标准写法”
mysql
码农很忙4 小时前
从0到1搭建智能分析OBS埋点数据的AI Agent:实战指南
数据库·人工智能
安当加密4 小时前
Oracle数据库透明加密实践:基于TDE架构的安全加固方案
数据库·oracle·架构
织元Zmetaboard4 小时前
什么是态势感知大屏?
网络·数据库
NineData4 小时前
NineData 支持 DB2 迁移到 PolarDB Oracle
数据库·oracle·ninedata·数据库迁移·数据库迁移工具·信创改造·智能数据管理平台