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

    你可能感兴趣的文章
    MySQLSyntaxErrorException: Unknown error 1146和SQLSyntaxErrorException: Unknown error 1146
    查看>>
    Mysql_Postgresql中_geometry数据操作_st_astext_GeomFromEWKT函数_在java中转换geometry的16进制数据---PostgreSQL工作笔记007
    查看>>
    mysql_real_connect 参数注意
    查看>>
    mysql_secure_installation初始化数据库报Access denied
    查看>>
    MySQL_西安11月销售昨日未上架的产品_20161212
    查看>>
    Mysql——深入浅出InnoDB底层原理
    查看>>
    MySQL“被动”性能优化汇总
    查看>>
    MySQL、HBase 和 Elasticsearch:特点与区别详解
    查看>>
    MySQL、Redis高频面试题汇总
    查看>>
    MYSQL、SQL Server、Oracle数据库排序空值null问题及其解决办法
    查看>>
    mysql一个字段为空时使用另一个字段排序
    查看>>
    MySQL一个表A中多个字段关联了表B的ID,如何关联查询?
    查看>>
    MYSQL一直显示正在启动
    查看>>
    MySQL一站到底!华为首发MySQL进阶宝典,基础+优化+源码+架构+实战五飞
    查看>>
    MySQL万字总结!超详细!
    查看>>
    Mysql下载以及安装(新手入门,超详细)
    查看>>
    MySQL不会性能调优?看看这份清华架构师编写的MySQL性能优化手册吧
    查看>>
    MySQL不同字符集及排序规则详解:业务场景下的最佳选
    查看>>
    Mysql不同官方版本对比
    查看>>
    MySQL与Informix数据库中的同义表创建:深入解析与比较
    查看>>