当前位置: 首页 > news >正文

Windows 上的 MySQL 8.4.3 和 WSL(Ubuntu)的 MySQL 8.0.40 之间配置 主从同步

Windows 上的 MySQL 8.4.3WSL(Ubuntu)的 MySQL 8.0.40 之间配置 主从同步(Master-Slave Replication) 的过程略有不同,因为两者的 MySQL 版本和环境存在差异。以下是详细步骤,帮助你完成跨平台的主从复制配置。


📝 前提条件

  1. 主服务器(Master):Windows 上的 MySQL 8.4.3
  2. 从服务器(Slave):WSL Ubuntu 上的 MySQL 8.0.40
  3. 确保主从服务器之间网络可以互相访问。

🚀 步骤 1:在主服务器(Windows MySQL 8.4.3)上配置

📌 1. 修改 MySQL 配置文件

  1. 打开 my.ini 文件,路径通常为:

    C:\ProgramData\MySQL\MySQL Server 8.4\my.ini
    
  2. 添加或修改以下配置:

    [mysqld]
    server-id=1
    log-bin=mysql-bin
    binlog-format=row
    
    • server-id=1:主服务器的唯一标识。
    • log-bin=mysql-bin:启用二进制日志。
    • binlog-format=row:推荐的二进制日志格式。
  3. 保存配置文件后,重启 MySQL 服务:

    net stop mysql
    net start mysql
    

📌 2. 创建复制用户

在主服务器上,登录 MySQL 并创建一个用于复制的用户:

CREATE USER 'replica_user'@'%' IDENTIFIED BY 'your_password';
GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%';
FLUSH PRIVILEGES;

📌 3. 获取二进制日志信息

运行以下命令,获取主服务器的二进制日志文件名和位置:

SHOW BINARY LOG STATUS;

示例输出:

+------------------+----------+
| Log_name         | Position |
+------------------+----------+
| mysql-bin.000001 | 154      |
+------------------+----------+

记下 Log_namePosition 的值。


🚀 步骤 2:在从服务器(WSL MySQL 8.0.40)上配置

📌 1. 修改 MySQL 配置文件

  1. 在 WSL Ubuntu 中,编辑 my.cnf 文件:

    sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
    
  2. 添加或修改以下配置:

    [mysqld]
    server-id=2
    relay-log=relay-log
    
    • server-id=2:从服务器的唯一标识。
    • relay-log=relay-log:启用中继日志。
  3. 保存并退出,然后重启 MySQL 服务:

    sudo systemctl restart mysql
    

📌 2. 配置主从同步

登录从服务器的 MySQL:

mysql -u root -p

执行以下命令,设置主服务器的信息:

CHANGE REPLICATION SOURCE TOSOURCE_HOST='your_master_ip',SOURCE_USER='replica_user',SOURCE_PASSWORD='your_password',SOURCE_LOG_FILE='mysql-bin.000001',SOURCE_LOG_POS=154;
  • your_master_ip:主服务器的 IP 地址(Windows 的本地 IP 地址)。
  • replica_useryour_password:主服务器上创建的复制用户和密码。
  • mysql-bin.000001:主服务器的二进制日志文件名。
  • 154:主服务器的二进制日志位置。

📌 3. 启动从服务器的复制

在从服务器上执行以下命令:

START REPLICA;

🚀 步骤 3:验证主从同步状态

📌 在从服务器上检查复制状态

在从服务器上执行:

SHOW REPLICA STATUS\G;

检查以下关键字段:

字段说明
Replica_IO_Running应为 Yes
Replica_SQL_Running应为 Yes
Last_Error应为空

如果 Replica_IO_RunningReplica_SQL_Running 都是 Yes,说明主从复制已正常运行。


步骤 4:测试主从同步

📌 在主服务器上创建一个测试数据库

在主服务器上执行:

CREATE DATABASE test_db;

📌 在从服务器上验证

在从服务器上执行:

SHOW DATABASES;

如果你在从服务器上看到了 test_db,说明主从复制已成功。


🛠 常见问题排查

问题解决方法
无法连接主服务器确保主服务器的防火墙允许从服务器的 IP 访问 MySQL 端口
Replica_IO_Running: No确认主服务器的 IP 地址和用户权限设置正确
从服务器显示错误日志检查 SHOW REPLICA STATUS\GLast_Error 字段

🔧 防火墙配置(Windows)

如果 Windows 防火墙阻止了 WSL 的访问,需要允许 MySQL 3306 端口的入站流量:

New-NetFirewallRule -DisplayName "Allow MySQL 3306" -Direction Inbound -Protocol TCP -LocalPort 3306 -Action Allow

🎯 总结

主服务器从服务器
Windows MySQL 8.4.3WSL MySQL 8.0.40
server-id=1server-id=2
SHOW BINARY LOG STATUS;SHOW REPLICA STATUS\G;
使用 CHANGE REPLICATION SOURCE TO 替代旧的 CHANGE MASTER TO 命令
#主库
SHOW BINARY LOG STATUS;CREATE USER 'root'@'%' IDENTIFIED BY 'root';
GRANT REPLICATION SLAVE ON *.* TO 'root'@'%';ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
FLUSH PRIVILEGES;SHOW PLUGINS;#从库
SELECT VERSION();CHANGE REPLICATION SOURCE TOSOURCE_HOST='192.168.110.206',SOURCE_USER='root',SOURCE_PASSWORD='root',SOURCE_LOG_FILE='KONG-bin.000016',SOURCE_LOG_POS=15597;#启动io
START REPLICA;
#查看状态
SHOW REPLICA STATUS;#停止io
STOP REPLICA IO_THREAD;select * from s_sys_user;
http://www.lryc.cn/news/522409.html

相关文章:

  • 【狂热算法篇】探秘图论之 Floyd 算法:解锁最短路径的神秘密码(通俗易懂版)
  • Sentinel配置流控规则详解
  • 解锁动态规划的奥秘:从零到精通的创新思维解析(6)
  • Qwen2.5 3B、7B、14B在文本按照规范进行标准化改写任务上的表现
  • Oracle报错ORA-01078、LRM-00109
  • 免费为企业IT规划WSUS:Windows Server 更新服务 (WSUS) 之快速入门教程(一)
  • Titans 架构中的记忆整合:Memory as a Context;Gated Memory;Memory as a Layer
  • 无缝过渡:将 Ansys 子结构模型转换为 Nastran
  • 小哆啦的跳跃挑战:能否突破迷宫的极限?
  • KubeSphere部署安装,接入KubeKey安装的k8s集群
  • Object常用的方法及开发中的使用场景
  • SQL2000在win10上安装的方法
  • Windows图形界面(GUI)-QT-C/C++ - QT 对话窗口
  • Java语言的数据结构
  • 【12】Word:张老师学术论文❗
  • 大疆最新款无人机发布,可照亮百米之外目标
  • 《小迪安全》学习笔记05
  • 56_多级缓存实现
  • 每日进步一点点(网安)
  • 宝塔php7.4安装报错,无法安装,php8以上可以安装,以下的不行,gd库什么的都正常
  • SDL2:PC端编译使用
  • Windows 蓝牙驱动开发-蓝牙设备栈
  • docker一张图理解
  • RocketMQ、Kafka、RabbitMQ,如何选型?
  • RabbitMQ故障全解析:消费、消息及日常报错处理与集群修复
  • 无公网IP 实现外网访问本地 Docker 部署 Navidrome
  • pnpm add 和 pnpm install 的区别?
  • Linux:文件描述符fd、系统调用open
  • CPU负载与CPU使用率之区别
  • C++实现设计模式---外观模式 (Facade)