数据库
首页 > 数据库> > 高性能MySql学习笔记-第十章:复制

高性能MySql学习笔记-第十章:复制

作者:互联网

1. 复制概述

复制解决的问题

复制如何工作

2. 配置复制

创建复制账号

配置主库和备库

启动复制

从另一个服务器开始复制

其他推荐的复制配置

3. 复制的原理

基于语句的复制

基于行的复制

复制文件

发送复制事件到其他备库

复制过滤器

4. 复制拓扑

一主库多备库

主 - 主复制

环形复制

主库、分发主库、以及备库

树或金字塔型

定制的复制方案

5. 复制和容量规划

6. 复制管理和维护

监控复制

测量备库延迟

确定主备是否一致

从主库重新同步备库

改变主库

  1. 客户端停止当前主库的写操作。
  2. 通过FLUSH TABLES WITH READ LOCK在主库上停止所有活跃地写入。或者在主库上设置 read_only 选项。从这一刻开始应该禁止向即将被替换的主库做任何写入。
  3. 选择一个备库作为新的主库,并确保它已经完全跟上主库。
  4. 确保新主库和旧主库数据是一致的。
  5. 在新主库上执行STOP SLAVE
  6. 在新主库上执行CHANGE MASTER TO MASTER_HOST='',然后再执行RESET SLAVE,使其断开与主库的链接,并丢弃 master.info 里的信息。
  7. 执行SHOW MASTER STATUS记录新主库的二进制日志坐标。
  8. 确保其他备库已经追上。
  9. 关闭旧主库。
  10. 激活新主库上事件。
  11. 将客户端链接到新主库。
  12. 在每台备库上执行CHANGE MASTER TO语句,使用第7步中获得的二进制日志坐标,来指向新的主库。
  1. 确定哪台备库的数据最新,检查每台备库上SHOW SLAVE STATUS命令输出。选择其中 Master_Log_File/Read_Master_Log_Pos 的值最新的那个。
  2. 让所有备库执行完其从崩溃前的旧日志那获得的中继日志。
  3. 执行前一小节的5~7步。
  4. 比较每台备库和新主库上的Master_Log_File/Read_Master_Log_Pos 的值。
  5. 执行前一小节的10~12步。
    • 假如已经在所有的备库上开启了 log_bin 和 log_slave_updates,可以帮助将所有的备库恢复到一个一致的时间点。

在一个主 - 主配置中交换角色

  1. 停止主动服务器上的所有写入。
  2. 在主动服务器上设置 read_only。
  3. 在主动服务器上执行SHOW MASTER STATUS并记录二进制日志坐标。
  4. 使用主动服务器上的二进制日志坐标在被动服务器上执行SELECT MASTER_POS_WAIT()该语句将阻塞住,直到复制跟上主动服务器。
  5. 在被动服务器上关闭 read_only。
  6. 修改应用程序,使其写入到新的主动服务器中。

7. 复制的问题和解决方案

数据损坏或丢失的错误

MySQL的复制并不能很好地从服务器崩溃、掉电、磁盘损坏、内存或网络错误中恢复。遇到这些问题时几乎可以肯定都需要从某个点开始重启复制。

使用非事务型表

混合事务型表和非事务型表

不确定的语句

主库和备库使用不同的存储引擎

备库发生数据改变

不唯一的服务器ID

未定义的服务器ID

对未复制数据的依赖性

丢失的临时表

InnoDB加锁读引起的锁争用

在主 - 主复制结构中写入两台主库

过大的复制延迟

来自主库过大的包

受限制的复制带宽

8. MySQL复制的高级特性

标签:主库,备库,二进制,第十章,高性能,复制,MySql,服务器,日志
来源: https://www.cnblogs.com/lianggx6/p/15631505.html