博客
关于我
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/

    你可能感兴趣的文章
    ORA-01152: 文件 1 没有从过旧的备份中还原
    查看>>
    ORA-01207:文件比控制文件更新 - 旧的控制文件
    查看>>
    ORA-01795: 列表中的最大表达式数为 1000
    查看>>
    ORA-06575: 程序包或函数 NO_VM_DROP_PROC 处于无效状态
    查看>>
    ORA-08102的错误
    查看>>
    ORA-12505, TNS:listener does not currently know of SID given in connect descriptor异常
    查看>>
    ORA-12514: TNS:listener does not currently know of service问题原因
    查看>>
    ora-12541:tns:no listener
    查看>>
    【docker知识】联合文件系统(unionFS)原理
    查看>>
    ORACEL学习--理解over()函数
    查看>>
    ORAchk-数据库健康检查
    查看>>
    oracle 10g crs命令,Oracle 10g CRS安装问题解决一例
    查看>>
    Oracle 10g ORA-01034: ORACLE not available 错误
    查看>>
    oracle 10g的安装配置
    查看>>
    Oracle 11.2.0.4 x64 RAC修改public/private/vip/scan地址
    查看>>
    Oracle 11G INDEX FULL SCAN 和 INDEX FAST FULL SCAN 对比分析
    查看>>
    viewpage listview gridview加载本地大图多图OOM处理办法
    查看>>
    Oracle 11g UNDO表空间备份增强
    查看>>
    Oracle 11g 使用RMAN备份数据库
    查看>>
    Oracle 11g 单实例安装文档
    查看>>