我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Percona XtraDB Cluster高可用与状态快照传输PXC 5.7 的示例分析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Percona XtraDB Cluster高可用与状态快照传输PXC 5.7 的示例分析

这篇文章将为大家详细讲解有关Percona XtraDB Cluster高可用与状态快照传输PXC 5.7 的示例分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

Percona XtraDB Cluster(下称PXC)高可用集群支持任意节点在运行期间的重启,升级或者意外宕机,即它解决了单点故障问题。那在这个意外宕机或者重启期间,该节点丢失的数据如何再次进行同步呢?介绍了在节点故障和重启PXC如何实现高可用以及状态快照传输的几种方法优缺点。

一、高可用

在具有3个节点的基本设置中,如果您关闭任何节点,Percona XtraDB集群将继续运行。在任何时候,您都可以关闭任何节点来执行维护或进行配置更改。即使在非计划的情况下(如节点崩溃或者通过网络无法使用),Percona XtraDB集群将继续工作,您将能够在工作节点上运行查询。

如果在节点关闭期间数据发生更改,则节点在再次加入群集时可以使用两个选项:

  状态快照传输State Snapshot Transfer(SST),即将所有数据从一个节点复制到另一个时。

  通常在新节点加入集群并从现有节点接收所有数据时使用SST。Percona XtraDB集群中有三种可用的SST方法:

    mysqldump 
    rsync 
    xtrabackup

  mysqldump与rsync的缺点是,当数据正在被复制的时候,您的集群状态将变为只读(这2个SST方式使用了FLUSH TABLES WITH READ LOCK)

  使用SST xtrabackup方式,在整个同步过程中,不需要读锁(READ LOCK),仅用于同步.frm文件(与常规备份相同)。

  增量状态传输Incremental State Transfer(IST)是指仅将增量更改从一个节点复制到另一个节点时。

  即使没有将群集锁定在只读状态,SST可能会影响并干扰服务的正常运行。 IST可以避免这种情况。 如果某个节点短时间内关闭,它能够获取仅仅发生故障时刻的更改。 IST是在节点上使用缓存机制来实现。 每个节点都包含一个高速缓存,最后N次更改的环形缓冲区(大小可配置),并且该节点能够传输该高速缓存的一部分。 显然,只有当传输所需的变化量小于N时才能完成IST。如果它超过N,那么加入节点必须执行SST。

可以使用以下命令监视节点的当前状态:

SHOW STATUS LIKE ‘wsrep_local_state_comment’ ; 
当一个节点处于状态Synced (6)时,它是集群的一部分并可以对外提供服务

二、状态快照传输

状态快照传输(SST)是从一个节点(捐献者)到加入节点(加入者)的完整数据拷贝。当新节点加入群集时使用它。为了与群集同步,新节点必须从已经是群集一部分的节点接收数据。

Percona XtraDB集群中有三种可用的SST方法:

  mysqldump 
  rsync 
  xtrabackup

mysqldump和rsync缺点是捐献节点变为READ-ONLY当数据被复制时。另一方面,Xtrabackup SST使用备份锁定,这意味着Galera提供程序不会像FTWRL(带有读锁的刷新表)那样暂停。SST方法可以使用wsrep_sst_method变量进行配置。

注意

如果gcs.sync_donor变量设置为Yes (默认为No),那么如果捐献节点被SST阻塞,则整个集群将被阻塞。

1、选择SST捐献节点

如果没有可用的节点可以安全地执行增量状态传输(IST),则群集默认为SST。 
如果有可用的节点可以执行IST,则集群首选远程节点上的本地节点作为捐献节点。 
如果没有本地节点可用于执行IST,则群集将选择一个远程节点作为捐献节点。 
如果有多个本地和远程节点可以执行IST,则群集将选择最高seqno的节点作为捐献节点。

2、使用Percona Xtrabackup

默认的SST方法是使用Percona XtraBackup的xtrabackup-v2。这是利用备份锁的最少阻塞方法。XtraBackup在捐献节点上本地运行,因此在捐献节点上设置正确的用户凭证非常重要。为了让Percona XtraDB集群使用XtraBackup执行SST,需要在wsrep_sst_auth变量中设置用于连接到捐献节点的证书。除了凭证之外,还需要在服务器配置文件my.cnf中指定datadir,否则传输过程将失败。

有关所需凭据的更多信息,请参阅XtraBackup手册。

要测试凭据是否可用,请在捐献节点上使用wsrep_sst_auth变量中指定的用户名和密码运行innobackupex。例如,如果值wsrep_sst_auth是root:Passw0rd,在innobackupex命令应该是这样的:

innobackupex –user = root –password = Passw0rd /tmp/ 
Percona XtraBackup SST配置文档中提供了有关此方法的详细信息。

3、使用mysqldump

此方法使用标准mysqldump实用程序来转储来自捐献节点的所有数据库,并将其导入加入节点。要使此方法有效,wsrep_sst_auth需要使用根证书设置变量。这种方法是最慢的,它在SST期间执行全局锁定,这阻止了对捐献节点的写入。

用于此方法的脚本是/usr/bin/wsrep_sst_mysqldump ,它包含在Percona XtraDB Cluster二进制包中。

4、运用 rsync

此方法使用rsync将文件从捐献节点复制到加入节点。在某些情况下,这可能比使用XtraBackup更快,但它需要一个全局数据锁定,这将阻止写入到捐献节点。此方法不需要在wsrep_sst_auth变量中设置根凭证。

用于此方法的脚本是/usr/bin/wsrep_sst_rsync ,它包含在Percona XtraDB Cluster二进制包中。

5、表空间不在数据目录中的表的SST

例如:

CREATE TABLE t1 (c1 INT PRIMARY KEY ) DATA DIRECTORY = ‘/alternative/directory’ ;

结果取决于SST方法:

SST使用 rsync

SST会报告成功,但表格的数据不会被复制,因为rsync只是复制文件。您将无法访问joiner节点上的表: 
mysql> select * from t1; 
ERROR 1812 (HY000): Tablespace is missing for table sbtest.t1.

SST 使用mysqldump 
按预期工作。如果文件不存在,它将被创建。否则,它将尝试使用该文件(如果该文件没有预期的格式,则返回错误)。

使用Percona XtraBackup的SST

XtraBackup会将表格还原到joiner节点上的相同位置。如果目标目录不存在,它将被创建。如果目标文件已经存在,则会返回错误,因为XtraBackup无法清除不在数据目录中的表空间。

关于Percona XtraDB Cluster高可用与状态快照传输PXC 5.7 的示例分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Percona XtraDB Cluster高可用与状态快照传输PXC 5.7 的示例分析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Percona XtraDB Cluster高可用与状态快照传输PXC 5.7 的示例分析

这篇文章将为大家详细讲解有关Percona XtraDB Cluster高可用与状态快照传输PXC 5.7 的示例分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Percona XtraD
2023-06-06

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录