博客
关于我
MySQL主从复制的原理和实践操作
阅读量:789 次
发布时间: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中的rbs,SharePoint RBS:即使启用了RBS,内容数据库也在不断增长
    查看>>
    mysql中的undo log、redo log 、binlog大致概要
    查看>>
    Mysql中的using
    查看>>
    MySQL中的关键字深入比较:UNION vs UNION ALL
    查看>>
    mysql中的四大运算符种类汇总20多项,用了三天三夜来整理的,还不赶快收藏
    查看>>
    mysql中的字段如何选择合适的数据类型呢?
    查看>>
    MySQL中的字符集陷阱:为何避免使用UTF-8
    查看>>
    mysql中的数据导入与导出
    查看>>
    MySQL中的时间函数
    查看>>
    mysql中的约束
    查看>>
    MySQL中的表是什么?
    查看>>
    mysql中穿件函数时候delimiter的用法
    查看>>
    Mysql中索引的分类、增删改查与存储引擎对应关系
    查看>>
    Mysql中索引的最左前缀原则图文剖析(全)
    查看>>
    MySql中给视图添加注释怎么添加_默认不支持_可以这样取巧---MySql工作笔记002
    查看>>
    Mysql中获取所有表名以及表名带时间字符串使用BetweenAnd筛选区间范围
    查看>>
    Mysql中视图的使用以及常见运算符的使用示例和优先级
    查看>>
    Mysql中触发器的使用示例
    查看>>
    Mysql中设置只允许指定ip能连接访问(可视化工具的方式)
    查看>>
    mysql中还有窗口函数?这是什么东西?
    查看>>