博客
关于我
MySQL主从复制的原理和实践操作
阅读量:790 次
发布时间:2023-02-11

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

MySQL 主从复制配置指南

MySQL 主从原理

MySQL 主从复制(MySQL Replication)主要用于实时备份、高可用性(HA)以及读写分离等场景。在配置主从复制之前,需要准备两台 MySQL 服务器。

主从复制工作原理

  • 单向复制:每个从服务器只能有一个主服务器。
  • 二进制日志文件:主服务器在执行 SQL 时,会记录操作到二进制日志文件(bin-log)。
  • 从服务器连接到主服务器,读取二进制日志,并在本地生成 relay-log 文件,从上次同步的位置继续执行 SQL。如果遇到错误,同步会停止。
  • Replication 原理推论

  • 数据延迟:主从复制不是实时同步,即使网络连接正常,也会存在短暂的数据不一致。
  • 网络中断处理:如果网络中断,从服务器会在恢复连接后,批量同步未处理的数据。
  • 从服务器修改:不要对从服务器的数据进行修改,否则可能导致复制失败。
  • 双主配置:可以将两个主服务器互相作为从服务器,只要双方的修改不冲突。
  • 环形主从:可以配置多个主服务器,形成环形结构,确保所有节点的数据一致。
  • 读写分离:通过主从复制降低单台 MySQL 服务器的 I/O 操作负载。
  • 高可用性集群:通过主从复制实现 MySQL 服务的 HA 集群。
  • 多主多从:支持一主多从或多主多从的配置。
  • 实验环境配置

    操作系统

    操作系统:CentOS 6.8(64位)

    MySQL 版本

    MySQL 版本:5.1.73(主从版本需一致)

    安装方式

    使用 yum 运行安装命令

    IP 配置

    • 主服务器 IP:192.168.0.8(master)
    • 从服务器 IP:192.168.0.18(slave)

    主从服务器的基本配置

    主服务器配置

    编辑主服务器的 my.cnf 文件:

    vim /etc/my.cnf

    添加以下配置:

    [mysqld]...log-bin=mysql-binserver-id=8

    server-id 可以设置为主服务器的 IP 的最后一位,也可以使用其他唯一标识符)

    重启主服务器服务:

    service mysqld restart

    从服务器配置

    对于从服务器,只需设置 server-id 即可,无需启用二进制日志:

    [mysqld]...server-id=18

    重启从服务器服务:

    service mysqld restart

    创建主从复制账号

    为了让从服务器能够通过主服务器获取二进制日志,需要在主服务器上创建专门的复制账号 repl

    mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.0.18' IDENTIFIED BY '123456';Query OK, 0 rows affected (0.00 sec)

    查看主服务器二进制日志信息

    执行以下命令,记录主服务器的二进制日志文件名称和当前写入位置:

    mysql> SHOW MASTER STATUS;+------------------+----------+--------------+------------------+| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |+------------------+----------+--------------+------------------+| mysql-bin.000001 |      259 |              |                  |+------------------+----------+--------------+------------------+

    记录下 FilePosition 这两个值,在配置从服务器之前不要对主服务器进行任何数据库操作。

    配置从服务器并启用复制

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

    mysql> CHANGE MASTER TO    -> MASTER_HOST="192.168.0.8",    -> MASTER_USER="repl",    -> MASTER_PASSWORD="123456",    -> MASTER_LOG_FILE="mysql-bin.000001",    -> MASTER_LOG_POS=248;

    启动从服务器的复制服务:

    mysql> START SLAVE;Query OK, 0 rows affected (0.00 sec)

    验证主从复制是否成功:

    mysql> SHOW SLAVE STATUS \G;...Slave_IO_Running: YesSlave_SQL_Running: Yes

    如果上述两项均为 "Yes",说明主从复制配置成功。

    测试主从复制

    在主服务器上创建一个数据库或表后,检查从服务器上是否同步了该数据库或表。

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

    你可能感兴趣的文章
    mysql 取表中分组之后最新一条数据 分组最新数据 分组取最新数据 分组数据 获取每个分类的最新数据
    查看>>
    mysql 多个表关联查询查询时间长的问题
    查看>>
    mySQL 多个表求多个count
    查看>>
    mysql 多字段删除重复数据,保留最小id数据
    查看>>
    MySQL 多表联合查询:UNION 和 JOIN 分析
    查看>>
    MySQL 大数据量快速插入方法和语句优化
    查看>>
    mysql 如何给SQL添加索引
    查看>>
    mysql 字段区分大小写
    查看>>
    mysql 字段合并问题(group_concat)
    查看>>
    mysql 字段类型类型
    查看>>
    MySQL 字符串截取函数,字段截取,字符串截取
    查看>>
    MySQL 存储引擎
    查看>>
    mysql 存储过程 注入_mysql 视图 事务 存储过程 SQL注入
    查看>>
    MySQL 存储过程参数:in、out、inout
    查看>>
    mysql 存储过程每隔一段时间执行一次
    查看>>
    mysql 存在update不存在insert
    查看>>
    Mysql 学习总结(86)—— Mysql 的 JSON 数据类型正确使用姿势
    查看>>
    Mysql 学习总结(87)—— Mysql 执行计划(Explain)再总结
    查看>>
    Mysql 学习总结(88)—— Mysql 官方为什么不推荐用雪花 id 和 uuid 做 MySQL 主键
    查看>>
    Mysql 学习总结(89)—— Mysql 库表容量统计
    查看>>