PXC pxc_strict_mode-程序员宅基地

在Percona XtraDB Cluster集群架构中,为了避免多主节点导致的数据异常,或者说一些不被支持的特性引发的数据不一致的情形,PXC集群可以通过配置pxc_strict_mode这个变量来实现。该变量的设置影响还是蛮大的。下文针对这个参数的不同设置进行描述,以及列出相关的具体影响。

一、PXC严格模式描述

PXC严格模式旨在避免在Percona XtraDB群集中使用实验性和不受支持的功能。它在启动时和运行时执行一些验证。

根据您选择的实际模式,在遇到验证失败时,服务器将引发错误(停止启动或拒绝操作),或者记录警告并继续正常运行。以下模式可用:

DISABLED:不要执行严格的模式验证并正常运行。
PERMISSIVE:如果vaidation失败,请记录警告并继续正常运行。
ENFORCING:如果在启动期间验证失败,请停止服务器并发出错误。如果运行时验证失败,将拒绝操作并抛出错误。
MASTER:等同于ENFORCING,除了不执行显式表锁定的验证外 。此模式可以用于将写入操作隔离到单个节点的群集。

默认情况下,PXC严格模式设置为ENFORCING,除非节点充当独立服务器或节点为自举,则PXC严格模式默认为DISABLED。

建议将PXC严格模式设置为ENFORCING,因为在这种情况下,每当Percona XtraDB集群遇到实验性功能或不受支持的操作时,服务器都会拒绝。这将迫使您重新评估您的Percona XtraDB集群配置,而不会在数据一致性问题上冒险。

如果您打算将PXC严格模式设置为其他任何模式ENFORCING,则应该了解这可能会对数据完整性造成的限制和影响。有关更多信息,请参阅验证。

要设置模式,请使用pxc_strict_mode配置文件中的变量或启动mysqld时使用–pxc-strict-mode

注意

用必要的模式启动服务器会更好(默认ENFORCING是强烈推荐的)。但是,您可以在运行时动态更改它。例如,要将PXC严格模式设置为PERMISSIVE,请运行以下命令:

mysql > SET pxc_strict_mode = PERMISSIVE ;

注意

为了进一步确保数据的一致性,使群集中的所有节点都以相同的配置(包括pxc_strict_mode变量的值)运行非常重要。

二、验证

PXC严格模式验证旨在确保不需要实验功能的常见群集设置的最佳操作,并且不依赖Percona XtraDB群集不支持的操作。

警告

如果将某个节点pxc_strict_mode设置为DISABLED或PERMISSIVE,并且在该节点上执行不受支持的操作,则即使目标节点将pxc_strict_mode设置为ENFORCING,也不会在将其复制到的节点上进行验证。

以下介绍每次验证的目的和结果。

存储引擎 Storage engine
MyISAM复制 MyISAM replication
二进制日志格式 Binary log format
没有主键的表 Tables without primary keys
日志输出 Log output
显式表锁定 Explicit table locking
自动增量锁定模式 Auto-increment lock mode
将模式和数据更改组合在一个语句中 Combining schema and data changes in a single statement
放弃和导入表空间 Discarding and Importing Tablespaces

1、存储引擎

Percona XtraDB集群当前仅支持对使用事务性存储引擎(XtraDB或InnoDB)的表进行复制。为确保数据一致性,对于使用非事务性存储引擎(MyISAM,MEMORY,CSV等)的表,不应允许使用以下语句:

写入到表数据操作语句(例如,INSERT,UPDATE,DELETE,等等)
   相关管理语句: CHECK,OPTIMIZE,REPAIR,和ANALYZE
   TRUNCATE TABLE 和 ALTER TABLE

根据所选模式,会发生以下情况:

DISABLED

在启动时,不执行验证。
   在运行时,所有操作都是允许的。

PERMISSIVE

在启动时,不会进行验证。
   在运行时,所有操作都是允许的,但是当在不支持的表上执行不需要的操作时,将会记录一条警告。

ENFORCING 或者 MASTER

在启动时,不执行验证。

在运行时,不受支持的表上执行的任何不受欢迎的操作都将被拒绝并记录一个错误。

注意

不支持的表可以转换为使用受支持的存储引擎。

2、MyISAM复制

Percona XtraDB集群为复制使用MyISAM存储引擎的表提供实验支持。由于MyISAM的非事务性质,Percona XtraDB集群不可能完全支持它。

MyISAM复制是使用默认wsrep_replicate_myisam设置的变量来控制,缺省设置为OFF。由于其不可靠性,如果要确保数据一致性,则不应启用MyISAM复制。

根据所选模式,会发生以下情况:

DISABLED

在启动时,不执行验证。
   在运行时,您可以设置wsrep_replicate_myisam任何值。

PERMISSIVE

在启动时,如果wsrep_replicate_myisam设置为ON,则会记录警告并继续启动。
   在运行时,允许更改wsrep_replicate_myisam 为任何值,但是如果将其设置为ON,则会记录警告。

ENFORCING 要么 MASTER

在启动时,如果wsrep_replicate_myisam设置为ON,则会记录一个错误并启动中止。
   在运行时,任何尝试更改wsrep_replicate_myisam 为ON失败并记录错误。

注意

该wsrep_replicate_myisam变量控制 MyISAM表的复制,而这个验证只检查它是否被允许。使用存储引擎验证来限制MyISAM表的不需要的操作。

3、二进制日志格式

Percona XtraDB集群仅支持默认的基于行的二进制日志记录格式。将binlog_format变量设置为除ROW之外启动时都是不允许的,因为这会改变全局范围,必须将其设置为ROW。验证只在运行时和会话范围内执行。

根据所选模式,会发生以下情况:

DISABLED

在运行时,您可以设置binlog_format任何值。

PERMISSIVE

在运行时,允许更改binlog_format 为任何值,但是如果将其设置为其他值,ROW则会记录警告。

ENFORCING 或 MASTER

在运行时,任何尝试更改binlog_format 为ROW失败以外的任何错误都会被记录下来。

4、没有主键的表

Percona XtraDB群集无法正确地将某些写入操作传播给没有定义主键的表。不需要的操作包括执行写入表(尤其是DELETE)的数据操作语句。

根据所选模式,会发生以下情况:

DISABLED

在启动时,不执行验证。
  在运行时,所有操作都是允许的。

PERMISSIVE

在启动时,不会进行验证。
  在运行时,所有操作都是允许的,但是如果在没有定义显式主键的情况下在表上执行不希望的操作,则会记录警告。

ENFORCING 或 MASTER

在启动时,不执行验证。

在运行时,任何在没有显式主键的表上执行的不受欢迎的操作都将被拒绝,并且会记录一个错误。

5、日志输出

Percona XtraDB集群不支持将MySQL数据库中的表作为日志输出的目的地。默认情况下,日志条目被写入文件。该验证检查log_output变量的值。

根据所选模式,会发生以下情况:

DISABLED

在启动时,不执行验证。
  在运行时,您可以设置log_output任何值。

PERMISSIVE

启动时,如果log_output仅设置为TABLE,则会记录警告并继续启动。
  在运行时,可以将其更改log_output 为任何值,但如果仅将其设置为TABLE,则会记录警告。

ENFORCING 或 MASTER

在启动时,如果log_output仅设置为TABLE,则会记录一个错误并启动中止。
  在运行时,任何尝试log_output只更改TABLE失败并记录错误。

6、显式表锁定

Percona XtraDB集群只有对显式表锁定操作的实验性支持。以下不需要的操作会导致显式表锁定,并由此验证涵盖:

LOCK TABLES
GET_LOCK() 和 RELEASE_LOCK()
FLUSH TABLES WITH READ LOCK
设置SERIALIZABLE事务级别

根据所选模式,会发生以下情况:

DISABLED 或 MASTER

在启动时,不执行验证。
  在运行时,所有操作都是允许的。

PERMISSIVE

在启动时,不执行验证。
  在运行时,所有的操作都是允许的,但是当执行一个不希望的操作时会记录一个警告。

ENFORCING

在启动时,不执行验证。
  在运行时,任何不受欢迎的操作都将被拒绝并记录一个错误。

7、自动增量锁定模式

用于生成自动递增值的锁定模式必须交错, 以确保每个节点生成唯一的(但是不连续的)标识符。
该验证检查innodb_autoinc_lock_mode变量的值。默认情况下,变量设置为1(连续锁定模式),但应该设置为2(交错锁定模式)。
根据所选的严格模式,会发生以下情况:

DISABLED

在启动时,不执行验证。

PERMISSIVE

在启动时,如果innodb_autoinc_lock_mode未设置2,则会记录警告并继续启动。

ENFORCING 或 MASTER

在启动时,如果innodb_autoinc_lock_mode没有设置2,则会记录一个错误并启动中止。
注意

此验证不会在运行时执行,因为该innodb_autoinc_lock_mode变量不能动态设置。

8、将模式和数据更改组合在一个语句中

Percona XtraDB集群不支持(CTAS CREATE TABLE … AS SELECT)语句,因为它们结合了模式和数据更改。
根据所选的严格模式,会发生以下情况:

DISABLED

在启动时,不执行验证。
  在运行时,所有操作都是允许的。

PERMISSIVE

在启动时,不会进行验证。
  在运行时,所有操作都是允许的,但在执行CTAS操作时会记录警告。

ENFORCING

在启动时,不执行验证。
  在运行时,任何CTAS操作都会被拒绝并记录一个错误。

注意

临时表的CTAS操作即使在严格模式下也是允许的。

9、放弃和导入表空间

DISCARD TABLESPACE并 使用TOI不被复制。如果只在一个节点上执行,可能会导致数据不一致。IMPORT TABLESPACE
根据所选的严格模式,会发生以下情况:

DISABLED

在启动时,不执行验证。
  在运行时,所有操作都是允许的。

PERMISSIVE

在启动时,不会进行验证。
  在运行时,所有操作都是允许的,但是当放弃或导入表空间时会记录一条警告。

ENFORCING

在启动时,不执行验证。
  在运行时,丢弃或导入表空间会被拒绝并记录错误。

三、参考链接

https://www.percona.com/doc/percona-xtradb-cluster/LATEST/features/pxc-strict-mode.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ss954773878/article/details/102528866

智能推荐

Java专题_git code java专题-程序员宅基地

文章浏览阅读100次。Java专题包含学习资源汇总、练手项目、Spring框架等等,持续更新~~~Java学习资源汇总项目名称项目链接mirrors/itwanger/JavaBookshttps://codechina.csdn.net/mirrors/itwanger/JavaBooksmirrors/Snailclimb/JavaGuidehttps://codechina.csdn.net/mirrors/Snailclimb/JavaGuideJava练手项目项目名称_git code java专题

内外网配置路由-程序员宅基地

文章浏览阅读3.1k次。内外网设置基本思路:网络访问默认走外网(外网配置网关、内网不配置网关),内网通过配置静态路由访问route print // 查看路由表route delete 0.0.0.0 //删除原有 默认路由route add -p 0.0.0.0 mask 0.0.0.0 192.168.88.8 //192.168.88.8 为外网网关地址; 这样网络访问默认走外网 -..._route add -p permanent

linux如何进入chroot环境?_如何进入 chroot环境-程序员宅基地

文章浏览阅读708次。本文参考自LFS手册1.假设要chroot的根目录为/mnt2.创建必要的目录mkdir /mnt/{dev,proc,sys,run}3.挂载和构建/devmount -v --bind /dev /mnt/dev4. 挂载虚拟内核文件系统mount -vt devpts devpts /mnt/dev/pts -o gid=5,mode=620mount -vt proc proc /mnt/procmount -vt sysfs sysfs /mnt/sy.._如何进入 chroot环境

Gravel ore raymond mill price in Ghana-程序员宅基地

文章浏览阅读152次。Raymond Mill Zimbabwe Gold Stamp Mill Price Vertical Roller Mill For …Ghana Crusher | Mobile Crusher Philip..._washing machine priceinghana

四个让您保持健康的Android Wear应用-程序员宅基地

文章浏览阅读421次。Android Wear has been around for a couple of years now, and it’s honestly one of those things that you don’t know how much you’ll use it until you actually have it. There are some really good, useful ..._andioiwear

为什么以及如何在WordPress网站上进行比赛-程序员宅基地

文章浏览阅读528次。Competitions and giveaways are a great way to improve user engagement, increase traffic and promote your business. The other good news is that with WordPress, it’s very easy to set them up. In this po..._wordpress 怎么制作比赛赛程网页

随便推点

常见英文缩写_vdpkcc-程序员宅基地

文章浏览阅读1k次。“鸡肋”【A】A/D/VAnalysis/Development/Validation分析/发展/验证AAApprove Architecture审批体系ACDActual Completion Date实际完成日期ALBSAssembly Line Balance System装配线平衡系统APAdvanced Purchasing提前采购APIAdvanced Product Information先进..._vdpkcc

E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: : open failed: ENOENT (No s_bitmapfactory: unable to decode stream: open faile-程序员宅基地

文章浏览阅读4.5k次。D/AppEnv: zhD/GoodsDBHelper: query_sql:select rowid,_id,name,desc,price,thumb_path,pic_path from goods_info where rowid='1';E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: :..._bitmapfactory: unable to decode stream: open failed: enoent (no such file or

嵌入式平台 STM32 libqrencode 移植 二维码生成_stm32 qrencode移植-程序员宅基地

文章浏览阅读8.9k次,点赞4次,收藏15次。嵌入式平台 STM32 libqrencode 移植,移植二维码生成。移植简单方便,Keil MDK5.12 开发环境 串口打印_stm32 qrencode移植

白鹭引擎正式支持微信小游戏开发-程序员宅基地

文章浏览阅读2.1k次。12月28日微信迎来更新,正式上线小游戏,并开放了小游戏开发文档和开发者工具。在微信发布新版本后,白鹭引擎立即添加了对于微信小游戏开发的支持,开发者只需要使用白鹭引擎的最新版本,通过使用白鹭引擎完整工具流,就可以快速创建、开发与发布微信小游戏,而无需过多的关注底层技术细节。1.如何创建微信小游戏项目(1)创建微信小游戏项目需要您需要下载白鹭引擎最新版本,首先创建一个新的白鹭引擎项目。(2)创建项目..._下载白鹭引擎提供的qq小游戏支持库

进阶实验 二层交换机+路由器实现VLAN间通信_同二层交换机&同路由器-单链路vlan间通信-程序员宅基地

文章浏览阅读9.6k次,点赞4次,收藏23次。【实验目的】进一步理解VLAN概念,掌握解决VLAN间通信的方法。【实验任务】1、按照给出的参考拓扑图构建逻辑拓扑图。2、按照给出的配置参数表配置各个设备。3、在路由器上创建子接口,选择VLAN包封装格式,并激活路由选择协议。4、在交换机中创建VLAN,向VLAN中添加交换机端口,配置Trunk端口。5.、测试VLAN间相互通信。【实验设备】交换机2950 1..._同二层交换机&同路由器-单链路vlan间通信

ios 禁用滑动手势_如何禁用笔记本电脑上的Windows 8滑动手势?-程序员宅基地

文章浏览阅读196次。ios 禁用滑动手势If you’re not a fan of the touchpad-based swipe gestures in Windows 8 there is a way to completely disable them and reclaim your touchpad.如果您不喜欢Windows 8中基于触摸板的滑动手势,可以使用一种方法来完全禁用它们并收回您的触摸板。..._swipe gestures

推荐文章

热门文章

相关标签