博客
关于我
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.000001mysql-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.000001mysql-bin.000002 等。
    • 从节点的中继日志文件命名为 server2-relay-bin.000001 等。
  • 权限设置

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

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

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

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

    你可能感兴趣的文章
    php & 和 & (主要是url 问题)
    查看>>
    php -- 魔术方法 之 判断属性是否存在或为空:__isset()
    查看>>
    php -- 魔术方法 之 获取属性:__get()
    查看>>
    php -树-二叉树的实现
    查看>>
    PHP -算法-二路归并
    查看>>
    php 2条不一样 的json数据 怎么放在一个json里面_如果你是PHP开发者,请务必了解一下Composer...
    查看>>
    php 360 不记住密码,JavaScript_多种方法实现360浏览器下禁止自动填写用户名密码,目前开发一个项目遇到一个很 - phpStudy...
    查看>>
    regExp的match、exec、test区别
    查看>>
    php 404 自定义,APACHE 自定义404错误页面设置方法
    查看>>
    PHP 5.3.0以上推荐使用mysqlnd驱动
    查看>>
    php aes sha1解密,PHP AES加密/解密
    查看>>
    php CI框架单个file表单多文件上传例子
    查看>>
    php composer
    查看>>
    reflow和repaint引发的性能问题
    查看>>
    php csv 导出
    查看>>
    php curl 实例+详解
    查看>>
    php curl_init函数用法(http://blog.sina.com.cn/s/blog_640738130100tsig.html)
    查看>>
    php curl_multi批量发送http请求
    查看>>
    PHP curl请求错误汇总和解决方案
    查看>>
    php echo 输出 锘?... 乱码问题
    查看>>