Windows 上设置 MySQL 的主从复制

ops/2024/9/23 7:32:39/

Windows 上设置 MySQL 的主从复制

  • 一、前言
    • 1. 环境准备
    • 2. 主服务器配置
    • 3. 从服务器配置
    • 6. 测试复制
    • 7. 注意事项


一、前言

MySQL 主从复制可以在程序中通过以下方式应用:

  1. 读写分离:将写操作(如插入、更新、删除)发送到主服务器,将读操作(如查询)发送到从服务器。这可以减轻主服务器的负担,并提高读性能。

  2. 数据备份:从服务器可以用于定期备份主服务器的数据。因为从服务器会持续同步主服务器的数据,备份从服务器比备份主服务器更轻松。

  3. 故障恢复:在主服务器出现故障时,可以将从服务器提升为新的主服务器,减少系统停机时间。

  4. 负载均衡:将负载分散到多个从服务器,提高整体系统的吞吐量和可靠性。

在程序中实现这些功能通常需要配置数据库连接池或ORM框架,支持读写分离。例如,在Spring Boot中,你可以通过配置多个数据源和相应的路由策略来实现。

1. 环境准备

  1. 安装 MySQL
    确保你在 Windows 上安装了 MySQL,并且能够访问 MySQL 命令行工具。

  2. 确定主从服务器
    假设我们有两台机器:

    • 主服务器(Master):192.168.1.100
    • 从服务器(Slave):192.168.1.101

2. 主服务器配置

  1. 编辑 MySQL 配置文件
    找到 my.ini 文件,通常位于 C:\ProgramData\MySQL\MySQL Server X.X\(X.X为版本号)。添加或修改以下参数:

    [mysqld]
    server-id = 1
    log-bin = mysql-bin
    binlog-do-db = your_database_name  # 如果只想复制特定数据库
    
    • server-id:主服务器的唯一标识符,必须是一个正整数。
    • log-bin:启用二进制日志,这对于复制是必需的。
    • binlog-do-db:可选,指定要复制的数据库。
  2. 重启 MySQL 服务
    可以通过服务管理器或命令提示符重启 MySQL 服务。

  3. 创建复制用户
    连接到 MySQL 命令行,执行以下命令:

    CREATE USER 'replica'@'%' IDENTIFIED BY 'replica_password';
    GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%';
    FLUSH PRIVILEGES;
    
    • 这个用户将用于从服务器连接到主服务器。
  4. 获取主服务器状态
    在 MySQL 命令行中执行:

    SHOW MASTER STATUS;
    

    记录结果中的 FilePosition 字段,以便在从服务器上使用。

3. 从服务器配置

  1. 编辑从服务器的 MySQL 配置文件
    找到从服务器的 my.ini 文件,添加或修改以下参数:

    [mysqld]
    server-id = 2
    
    • server-id:从服务器的唯一标识符,必须与主服务器不同。
  2. 重启从服务器的 MySQL 服务

  3. 连接到从服务器
    打开 MySQL 命令行,执行以下命令:

    CHANGE MASTER TOMASTER_HOST='192.168.1.100',MASTER_USER='replica',MASTER_PASSWORD='replica_password',MASTER_LOG_FILE='mysql-bin.000001',  -- 使用从主服务器获取的 FileMASTER_LOG_POS=12345;                 -- 使用从主服务器获取的 Position
    
    • 替换 MASTER_LOG_FILEMASTER_LOG_POS 为你在主服务器上记录的值。
  4. 启动复制
    执行以下命令启动复制:

    START SLAVE;
    
  5. 检查复制状态
    输入以下命令检查复制状态:

    SHOW SLAVE STATUS
    
    • 确保 Slave_IO_RunningSlave_SQL_Running 都显示为 Yes,这表示复制正在正常运行。

6. 测试复制

  1. 在主服务器上创建一些数据:

    USE your_database_name;
    CREATE TABLE test_table (id INT PRIMARY KEY, name VARCHAR(50));
    INSERT INTO test_table VALUES (1, 'test_name');
    
  2. 在从服务器上查询该表:

    USE your_database_name;
    SELECT * FROM test_table;
    

    你应该能看到在主服务器上插入的数据。

7. 注意事项

  • 防火墙设置:确保主从服务器之间的网络连接正常,防火墙不会阻止 MySQL 的端口(默认是 3306)。
  • 数据一致性:在配置复制之前,确保主从服务器的数据一致性。可以通过备份和恢复的方式来确保这一点。
  • 监控复制状态:定期检查从服务器的复制状态,以确保没有错误发生。

通过以上步骤,你应该能够成功在 Windows 上设置 MySQL 的主从复制。如有问题,请查看 MySQL 错误日志以诊断问题。


http://www.ppmy.cn/ops/98811.html

相关文章

re正则模块

re模块用于处理正则表达式,它的基本功能包括:匹配、查找、替换。 匹配 匹配的使用方法一般有三个参数:第一个参数:正则模式、第二个参数:需要处理的字符、 第三个参数:附加处理方法 下面列举的是一写匹…

Notion使用详解

文章目录 Notion使用详解一、引言二、Notion的核心特性1、模块化设计——Block Editor2、强大的数据库功能——Database3、丰富的模板和导入功能 三、Notion的高级使用技巧1、页面和子页面的创建与管理2、内容的动态交互和展示3、跨平台同步与分享 四、总结 Notion使用详解 一…

iOS 开发:Object-C 和 Swift 的区别 (AI问答)

一:语言类型的区别(最主要区别) object-c 是动态类型语言; swift是静态类型语言; 看一下AI的回答,很全面~~ Objective-C 和 Swift 的语言类型区别主要体现在以下几个方面: 1. 静态类型 vs. 动…

ASIACRYPT 2020

分类文章编号最佳论文1-3加密方案4-9后量子密码10-12消息鉴权编码13-15密码分析16-22对称密钥密码23-25侧信道分析26-29公钥密码30-37格密码38-42量子算法43-46多方计算47-58同形映射密码59-64鉴权密钥交换65-68区块链和消息轨迹69-70可更新加密71-74零知识75-80属性加密81-85B…

【Java 数据结构】排序

排序 排序排序是什么排序相关概念稳定性比较排序非比较排序内部排序外部排序 常见比较排序冒泡排序基本思想代码实现 选择排序基本思想代码实现 插入排序基本思想代码实现 希尔排序基本思想代码实现 堆排序基本思想代码实现 快速排序基本思想代码实现优化其他实现寻找基准非递归…

40_操作系统安全机制、linux安全加固、windows安全加固、Linux基线扫描下载、主机安全检查工具windows版本下载

1.操作系统安全机制 1.1标识与鉴别 Windows:SIDLinux: UID、GID 1.1.1 SID 查看当前用户名及SID 查看所有用户名及SID C:\Users\TEACHER>wmic useraccount get name,sid Name SID Administrator S-1-5-21-80530027-1782036084-1563535153-500 Defa…

【多线程基础】Java线程的六种状态

Hi~!这里是奋斗的明志,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 🌱🌱个人主页:奋斗的明志 🌱🌱所属专栏:Java多线程 📚本系列文章为个人…

框架——MyBatis查询(单表查询,多表联查)

目录 1.单表查询 2.多表查询 想查询student并且查询student所选择的专业major ①通过id查一个 ②不传入值直接查所有的学生列表 ③嵌套查询 想查询专业major并且查询该专业被哪些学生student选择 ①通过id查一个 ②不传入值直接查所有的专业列表 ③嵌套查询 3. 设置自动…