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

    你可能感兴趣的文章
    Multiple websites on single instance of IIS
    查看>>
    mysql CONCAT()函数拼接有NULL
    查看>>
    multiprocessing.Manager 嵌套共享对象不适用于队列
    查看>>
    multiprocessing.pool.map 和带有两个参数的函数
    查看>>
    MYSQL CONCAT函数
    查看>>
    multiprocessing.Pool:map_async 和 imap 有什么区别?
    查看>>
    MySQL Connector/Net 句柄泄露
    查看>>
    multiprocessor(中)
    查看>>
    mysql CPU使用率过高的一次处理经历
    查看>>
    Multisim中555定时器使用技巧
    查看>>
    MySQL CRUD 数据表基础操作实战
    查看>>
    multisim变压器反馈式_穿过隔离栅供电:认识隔离式直流/ 直流偏置电源
    查看>>
    mysql csv import meets charset
    查看>>
    multivariate_normal TypeError: ufunc ‘add‘ output (typecode ‘O‘) could not be coerced to provided……
    查看>>
    MySQL DBA 数据库优化策略
    查看>>
    multi_index_container
    查看>>
    mutiplemap 总结
    查看>>
    MySQL Error Handling in Stored Procedures---转载
    查看>>
    MVC 区域功能
    查看>>
    MySQL FEDERATED 提示
    查看>>