博客
关于我
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修改密码报错ERROR 1396 (HY000): Operation ALTER USER failed for ‘root‘@‘localhost‘
    查看>>
    Mysql全局优化参数
    查看>>
    MySQL全文索引实现简单版搜索引擎
    查看>>
    MySQL全面瓦解:安装部署与准备
    查看>>
    mysql共享锁与排他锁
    查看>>
    MySQL内存表使用技巧
    查看>>
    MySQL再叙(体系结构、存储引擎、索引、SQL执行过程)
    查看>>
    mysql出现错误的解决办法
    查看>>
    MySQL函数
    查看>>
    mysql函数汇总之字符串函数
    查看>>
    mysql函数汇总之数学函数
    查看>>
    mysql函数汇总之日期和时间函数
    查看>>
    mysql函数汇总之条件判断函数
    查看>>
    mysql函数汇总之系统信息函数
    查看>>
    MySQL函数简介
    查看>>
    mysql函数遍历json数组
    查看>>
    MySQL函数(转发)
    查看>>
    mysql分区表
    查看>>
    MySQL分层架构与运行机制详解
    查看>>
    mysql分库分表中间件简书_MySQL分库分表
    查看>>