博客
关于我
2.5 lnmp架构_MySQL主从复制
阅读量:270 次
发布时间:2019-03-01

本文共 1530 字,大约阅读时间需要 5 分钟。

MySQL 主从复制详解

复制原理

MySQL 中的二进制日志 (bin log) 记录了所有修改数据库的 SQL 语句,包括插入、更新、删除、创建/修改/删除表、授权等操作。主从复制的核心原理是通过将主节点的二进制日志复制到从节点,并在从节点上执行这些日志中的操作,从而实现数据的一致性。

复制过程

必要条件

  • 主节点必须启用二进制日志,记录所有修改数据库的事件。
  • 从节点需要配置合适的二进制日志和中继日志设置。

主节点配置

  • 启用二进制日志:

    log_bin = mysql-bin
  • 设置唯一的服务器 ID:

    server-id = 1
  • 示例配置文件:

    [mysqld]server-id=1log-bin=mysql-bin
  • 重启主节点并查看状态:

    /etc/init.d/mysqld restart

    查看主节点状态:

    mysql -p -e "SHOW MASTER STATUS"
  • 从节点配置

  • 配置文件示例:

    [mysqld]server-id=2log_bin=mysql-binrelay_log=mysql-relay-binlog_slave_updates=1read_only=1
  • 启动从节点的复制:

    CHANGE MASTER TO MASTER_HOST='172.25.21.2', MASTER_USER='repl', MASTER_PASSWORD='westos', MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=437;START SLAVE;
  • 查看从节点状态:

    mysql -p -e "SHOW SLAVE STATUS\G"
  • 复制过程详解

  • 主节点:

    • 启动 dump thread 用于向从节点发送二进制日志。
    • 从节点作为客户端通过 I/O thread 请求主节点的二进制日志。
  • 从节点:

    • 接收主节点的日志数据并写入中继日志 (relay log)。
    • 启动 SQL thread 执行中继日志中的操作。
  • 日志文件管理:

    • 主节点生成 mysql-bin.000001、mysql-bin.000002 等二进制日志文件。
    • 从节点生成 server2-relay-bin.000001 等中继日志文件。
  • 测试与验证

    操作步骤

  • 在主节点中创建数据库:

    mysql -pwestos -e "create database westos;"
  • 查看从节点的数据库列表:

    mysql -pwestos -e "show databases;"
  • 重启主节点和从节点,确保复制完成:

    /etc/init.d/mysqld restart
  • 查看从节点的数据库列表是否与主节点一致:

    mysql -pwestos -e "show databases;"
  • 注意事项

  • 二进制日志文件:

    • 主节点的二进制日志文件默认命名为 mysql-bin.000001、mysql-bin.000002 等。
    • 从节点的中继日志文件命名为 server2-relay-bin.000001 等。
  • 权限设置:

    • 确保从节点的用户名和密码配置正确。
    • 使用 GRANT REPLICATION SLAVE ON *.* 授权从节点访问主节点的二进制日志。
  • 数据一致性:

    • 确保主节点的二进制日志包含所有修改操作。
    • 从节点的复制线程完成后,数据应与主节点保持一致。
  • 性能优化:

    • 使用 read_only 避免直接修改从节点数据。
    • 配置合适的 relay_log 和 log_slave_updates 参数,确保复制高效稳定。
  • 通过以上步骤,可以实现MySQL的主从复制,确保数据在主从节点之间的一致性和高效同步。

    转载地址:http://vpsv.baihongyu.com/

    你可能感兴趣的文章
    Python基础 | 关于“循环”那些事
    查看>>
    python系列【仅供参考】:python 远程rdp
    查看>>
    python基于flask搭建http服务(四)—— Docker容器化部署
    查看>>
    Python块键盘/鼠标输入
    查看>>
    python在使用HTMLTestRunner时,报告为空,错误提示<_io.TextIOWrapper name='<stderr>' mode='w' encoding='utf_8'>...
    查看>>
    python在gpu上运行_【python】python开启GPU加速
    查看>>
    Python在def函数中使用for循环
    查看>>
    Python在def函数中使用for循环
    查看>>
    Python在Conda环境中,但在Windows虚拟环境中没有激活
    查看>>
    python系列【仅供参考】:python pip 错误 ModuleNotFoundError: No module named pip._internal 解决办法
    查看>>
    python图像条状状噪声,使用PYTHON PIL从验证码图像中删除背景嘈杂的线条
    查看>>
    Python图像处理:从内存加载jpeg
    查看>>
    python固定后缀(名物化词汇)词频统计:抽取+统计+可视化
    查看>>
    python商品评论数据采集与分析可视化系统 Flask框架 requests爬虫 NLP情感分析 毕业设计 源码
    查看>>
    python商品数据分析可视化系统(带爬虫)京东销售数据分析 计算机毕业设计 源码下载
    查看>>
    python商品库存管理系统 django框架 商品网站 MySQL数据库 源码下载 计算机毕业设计
    查看>>
    Python哪个版本最稳定好用2023.10.19
    查看>>
    Python和黑客技术的渊源
    查看>>
    Python和RF编写接口自动化
    查看>>
    python和js哪个难_【Python】记一次学习,Python 与 js 在实现闭包时的差异
    查看>>