ITPub博客

首页 > 数据库 > 数据库开发技术 > MySQL Galera Cluster全解析 Part 3 状态快照传输(SST)

MySQL Galera Cluster全解析 Part 3 状态快照传输(SST)

原创 数据库开发技术 作者:ibsbforever 时间:2019-08-16 21:27:00 0 删除 编辑

 往期专题请查看
这是一个坚持Oracle,Python,MySQL原创内容的公众号


前期回顾

MySQL Galera Clusters全解析 Part 1 Galera Cluster 简介

MySQL Galera Clusters全解析 Part 2 基于认证的复制


前期回顾

上节我们说了基于认证的复制功能,这节的内容为状态快照传输

1.  捐赠者和加入者

当一个节点加入集群时,他需要同步集群中的数据

我们将提供完成数据的节点称为捐赠者(donor),其使用SST和IST方法进行传输

  • State Snapshot Transfer (SST)

  • Incremental State Transfer (IST)

IST即增量的状态传输,当第一次加入或者数据量很大时会采用SST方式

当节点退出重新加入集群时,如果数据量不大则采用IST方式

我们将接收数据的新加入的节点称为加入者(joiner)

你可以使用wsrep_sst_donor参数来设置哪个节点为donor,否则Group Communication会根据节点信息自动选择一个donor

一个节点可以在SYNCED状态时被选择为donor

如果有多个SYNCED状态的节点,joiner会优先选择有相同gmcast.segment值

wsrep_provider_options="gmcast.segment=0"

或者选择索引中的第一个

当一个节点被选择为donor时,其状态会立即变为DONOR,这时该节点将不再可用于请求

2.  SST 方法

Galera支持一些方法用来进行状态快照传输,可以分为2累

  • 逻辑状态传输

  • 物理状态传输


我们可以使用wsrep_sst_method参数来设置使用哪种方式

wsrep_sst_method = rsync
wsrep_sst_donor  = "node1, node2"

我们需要根据不同的需求来灵活的选择该用哪种方法

2.1 逻辑状态传输

逻辑状态传输使用的是mysqldump进行的

关系mysqldump可以看我前面的文章

http:///mysql/tutorial/

这里再简单的说下

优势

  • 该方法可以在运行的服务器上进行,事实上也必须在MySQL开启的时候进行

  • 该方法不要求双方有相同的配置,例如可以将文件格式从Antelope迁移到Barracuda等等

劣势

  • 该方法使用mysqldump所以速度会很慢

  • 需要额外的配置joiner可以被所有可能的donor连接

  • joiner必须是一个正常可用的数据库

对于逻辑状态传输来说mysqldump是唯一可选项,其只会在donor上运行,并且对双方的数据库版本有要求,最好使用相同的数据库版本

2.2 物理状态快照

优势

  • 该方法从物理上从一个节点拷贝数据到另一个节点,不需要和数据库进行交互

  • 该方法不要求数据库处于在线状态,而且donor会覆盖joiner的数据

  • 该方法非常快

劣势

  • 该方法要求双方具有相同的数据目录规划和存储引擎设置,如file-per-table, compression, log file size等参数和需要innodb引擎

  • joiner在传输过程中是不可用的,知道整个过程完成

物理状态快照有两种方法

  • rsync

  • xtrabackup

2.2.1 rsync

该方法是最快的方式,他拥有上述所说的所有优劣势,在传说过程中donor是被阻塞的,并且不需要额外的配置

对于TB级别的数据传输,他会比xtrabackup快1.5到2倍

我们也建议双方的数据库版本一致

rsync支持增量的传输,这点在广域网部署中可以使用

rsync在donor和joiner上运行

在joiner上他以rsync服务器端的形式启动来接收donor端的连接

在donor上他以rsync客户端的形式启动来发送数据的joiner端

同样使用如下参数设置使用rsync

wsrep_sst_method = rsync

2.2.2 xtrabackup

该方法是最受欢迎的方式,传输过程中他不会阻塞donor

它只会在拷贝非事务表(如MyISAM)时会短暂的阻塞donor(如一些系统表)

使用该方法还需要配置一些认证信息用来连接donor

[mysqld]
wsrep_sst_auth = <wsrep_sst_user>:<password>
wsrep_sst_method = xtrabackupdatadir = /path/to/datadir

[client]

socket = /path/to/socket

关于xtrabackup相关的内容可以查看我以前的文章

http:///mysql/xtrabackup/

3. 参考资料

https://galeracluster.com/library/documentation/sst-physical.html


点击阅读原文获得更好的阅读体验,推荐在PC端阅读

 

也可在公众号内的站内搜索  Galera  搜索相关内容


或直接打开个人网页搜索


http://


往期专题包括:


  • Python 自动化运维

  • 打造属于自己的监控系统

  • Python爬虫基础

  • Oracle awr报告全解析

  • Oracle ASM全解析

  • Oracle Data Guard全解析

  • Oracle ClusterWare全解析

  • Oracle常见参数解析

  • Oracle常见故障处理

  • Oracle SQL优化案例


觉得文章不错的欢迎转发,收藏~

原文作者:宅必备;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论
Oracle,MySQL DBA,Python自动化运维

注册时间:2019-01-29

  • 博文量
    245
  • 访问量
    243941