zoukankan      html  css  js  c++  java
  • MySQL学习笔记(28):复制

    本文更新于2020-05-04,使用MySQL 5.7,操作系统为Deepin 15.4。

    复制是指将主库的DDL和DML操作通过二进制日志传到从库上,然后从库对这些日志重做,从而使得主库和从库的数据保持同步。

    复制的优点有:

    • 如果主库出现问题,可以快速切换到从库提供服务。
    • 可以在从库上执行查询操作,降低主库的访问压力。由于MySQL实现的是异步复制,在从库进行查询需考虑到数据的差异。
    • 可以在从库上执行备份,以避免备份期间影响主库的服务。

    MySQL通过3个线程来完成主从库间的数据复制:其中Binlog Dump线程跑在主库上,I/O线程和SQL线程跑在从库上。可通过SHOW PROCESSLIST查看线程的状态。

    MySQL的复制是主库主动推送日志到从库去的。复制过程涉及两类非常重要的日志文件:二进制日志文件(Binlog)和中继日志文件(Relay Log)。中继日志文件的文件格式、内容和二进制日志文件一样,区别在于其在执行完后会自动删除。

    为了保证从库崩溃后,从库的I/O线程和SQL线程仍能知道从哪里开始复制,从库默认还会创建两个日志文件master.info和relay-log.info,分别记录了I/O线程当前读取主库二进制日志的进度和SQL线程应用中继日志的进度。通过SHOW SLAVE STATUS可查看当前从库复制的状态。

    MySQL支持4种复制模式:基于SQL语句的复制(SBR)、基于行数据的复制(RBR)、混合复制(对安全的SQL采用SBR,对非安全的SQL使用RBR)、使用全局事务ID(GTIDs)的复制。

    MySQL支持3种日志格式:基于SQL语句的日志格式(SBL)、基于行数据的日志格式(RBL)、混合格式。

    复制的常见架构有:

    • 一主多从复制架构
    • 多级复制架构:可将二级主库存储引擎设为BLACKHOLE
    • 双主复制/Dual Master架构:适用于需要主从切换的场景,可在此基础上做双主多级复制架构。

    复制方式有两种:异步复制、半同步复制。

    启动选项

    • --log-slave-updates:设置从库的更新操作是否写二进制日志。如果该从库同时也作为主库,就需要打开这个选项。其需要和--log-bin一起使用。
    • --master-connect-retry:设置在和主库的连接丢失时重试的时间间隔。
    • --read-only:设置从库只能接受root的更新操作。
    • --replicate-do-db:指定从库复制的数据库。
    • --replicate-do-table:指定从库复制的表。
    • --replicate-ignore-db:指定从库忽略复制的数据库。
    • --replicate-ignore-table:指定从库忽略复制的表。
    • --replicate-wild-go-table:以通配符方式指定从库复制的表。
    • --replicate-wild-ignore-table:以通配符方式指定从库忽略复制的表。
    • --slave-skip-errors:定义复制过程中从库可以自动跳过的错误号。

    管理维护

    暂略。

  • 相关阅读:
    Does Oracle Goldengate support Parallel DML?
    Error accessing PRODUCT_USER_PROFILE?
    数据库基础服务SLA模板
    SQL脚本:监控当前重做日志文件使用情况
    Mysql:mysql 控制台程序的提示符 prompt 字符串设置
    Mysql:开启了二进制日志功能 logbin 的mysql数据库, 如何故障恢复?
    Mysql:datetime,time,timestamp精确度只能到 秒(second),毫秒\微秒 只存在于 "文字值\某些函数 参数or返回值"中!
    Sqlserver 2005 配置 数据库镜像:强制服务(可能造成数据丢失):使镜像数据库 强制成为 主数据库
    Sqlserver 2005 配置 数据库镜像:Mirror 的注意事项!!!!!!!!!
    C++ GetTickCount函数
  • 原文地址:https://www.cnblogs.com/garvenc/p/mysql_learning_28_replicate.html
Copyright © 2011-2022 走看看