摘要: 出处:黑洞中的奇点 的博客 http://www.cnblogs.com/kelvin19840813/ 您的支持是对博主最大的鼓励,感谢您的认真阅读。本文版权归作者所有,欢迎转载,但请保留该声明。

3.3.1 Validations

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

警告:如果对 pxc_strict_mode 设置为DISABLED的节点执行不受支持的操作或 PERMISSIVE,
它将不会在复制到的节点上进行验证,即使目标节点具有 pxc_strict_mode 设置为ENFORCING。

本节介绍每个验证的目的和后果。

Storage engine
Percona XtraDB Cluster目前仅支持对使用事务存储引擎(XtraDB)的表进行复制或InnoDB)。
为了确保数据一致性,不应允许对使用非事务性存储引擎的表使用以下语句(MyISAM,MEMORY,CSV等):
• 执行写入表的数据操作语句(例如,INSERT,UPDATE,DELETE等)
• 以下管理语句:CHECK,OPTIMIZE,REPAIR和ANALYZE
• TRUNCATE TABLE and ALTER TABLE

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

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

PERMISSIVE
在启动时,不会验证。
在运行时,允许所有操作,但在执行不良操作时会记录警告
在不受支持的表上。

ENFORCING or MASTER
在启动时,不执行验证。
在运行时,拒绝对不支持的表执行的任何不希望的操作,并记录错误。

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

MyISAM replication
Percona XtraDB Cluster为使用MyISAM存储引擎的表的复制提供实验性支持。
由于MyISAM的非事务性质,它不太可能在Percona XtraDB群集中得到完全支持。
MyISAM复制使用wsrep_replicate_myisam变量控制,该变量在默认情况下设置为OFF。
如果要确保数据一致性,则不应启用MyISAM复制。

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

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

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

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

注意:wsrep_replicate_myisam变量控制MyISAM表的复制以及此验证只检查是否允许。
MyISAM表的不需要的操作使用存储引擎进行限制验证。

注意: Percona XtraDB Cluster仅支持基于行的二进制日志格式。

Binary log format
Percona XtraDB Cluster仅支持基于行的二进制日志格式。不允许在启动时将binlog_format任何变量除了ROW,因为这会改变全局范围,必须设置为ROW,验证仅在运行时和会话范围内执行。

根据所选模式,会发生以下情况:
DISABLED
在运行时,可以将binlog_format设置为任何值。

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

ENFORCING or MASTER
在运行时,任何尝试将binlog_format更改为除ROW之外的任何尝试都失败,并且错误是记录。

Tables without primary keys
Percona XtraDB群集无法正确地将某些写入操作传播到未定义主键的表。
不需要的操作包括执行写入表(特别是DELETE)的数据操作语句。

根据所选模式会发生以下情况:
DISABLED
在启动时,不执行验证。
在运行时,允许所有操作。

PERMISSIVE
在启动时,不会验证。
在运行时,允许所有操作,但在执行不良操作时会记录警告在没有定义显式主键的表上。

ENFORCING or MASTER
在启动时,不执行验证。
在运行时,对没有显式主键的表执行的任何不希望的操作被拒绝和将记录错误。

Log output
Percona XtraDB群集不支持MySQL数据库中的表作为日志输出的目标。
默认日志条目写入文件。此验证将检查log_output 变量的值。

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

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

PERMISSIVE
在启动时,如果log_output仅设置为TABLE,则将记录警告并继续启动。
在运行时,允许将log_output更改为任何值,但如果将它仅设置为TABLE,一个警告。

ENFORCING 或 MASTER
在启动时,如果log_output仅设置为TABLE,则会记录错误并中止启动。
在运行时,将log_output更改为TABLE的任何尝试都将失败,并记录错误。

Explicit table locking
Percona XtraDB Cluster只有对显式表锁定操作的实验性支持,以下不可取操作导致显式表锁定,并由此验证覆盖:
• LOCK TABLES
• GET_LOCK() and RELEASE_LOCK()
• FLUSH TABLES <tables> WITH READ LOCK
• Setting the SERIALIZABLE transaction level

根据所选模式,会发生以下情况:
DISABLED or MASTER
在启动时,不执行验证。
在运行时,允许所有操作。

PERMISSIVE
在启动时,不执行验证。
在运行时,允许所有操作,但在执行不良操作时会记录警告。

ENFORCING
在启动时,不执行验证。
在运行时,拒绝任何不需要的操作,并记录错误。

Auto-increment lock mode
用于生成auto-increment值的锁定模式必须交错,以确保每个节点生成唯一的(但非顺序)标识符。

此验证将检查innodb_autoinc_lock_mode变量的值。
默认情况下,设置变量到1(连续锁定模式),但应该设置为2(交错锁定模式)。

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

DISABLED
在启动时,不执行验证。

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

ENFORCING or MASTER
在启动时,如果innodb_autoinc_lock_mode未设置为2,则会记录错误并中止启动。

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

Combining schema and data changes in a single statement
Percona XtraDB群集不支持CREATE TABLE ... AS SELECT(CTAS)语句,因为它们结合模式和数据更改。
根据所选模式,会发生以下情况:

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

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

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

3.3.1 Validations的更多相关文章

  1. JSF教程(9)——生命周期之Process Validations Phase

    在这个过程其中JSF的实现者使用processValidators方法处理全部在tree中的组件中注冊的验证器.验证的过程就是通过每一个组件已有的规则对其已经保存的值进行校验,同一时候也对输入的值进行 ...

  2. sencha touch Model validations 自定义验证 二选一输入验证、重复验证、时间验证、比较验证、条件验证(2015-1-14)

    项目初始化时执行以下代码 //重写模型,方便进行自定义验证 Ext.define("Ext.zh.data.Model", { override: "Ext.data.M ...

  3. sencha touch Model validations(模型验证,自定义验证)

    model Ext.define('app.model.Register', { extend: 'Ext.data.Model', requires: ['Ext.data.JsonP'], con ...

  4. 微软企业库验证 Validations

    using System; using System.Collections; using System.Collections.Generic; using System.Linq; using S ...

  5. Yii2系列教程七:Behaviors And Validations

    这一篇文章的开头就无需多言了,紧接着上一篇的内容和计划,这一篇我们来说说Yii2的Behavior和Validations. Behavior 首先我们来说说Behavior,在Yii2中Behavi ...

  6. [Vue] Props Validations

    Components can specify requirements for its props, such as the types you’ve already seen. If a requi ...

  7. 菜鸟学Struts2——零配置(Convention )

    又是周末,继续Struts2的学习,之前学习了,Struts的原理,Actions以及Results,今天对对Struts的Convention Plugin进行学习,如下图: Struts Conv ...

  8. Web测试介绍2一 安全测试

            安全测试是在IT软件产品的生命周期中,特别是产品开发基本完成到发布阶段,对产品进行检验以验证产品符合安全需求定义和产品质量标准的过程. 主要安全需求包括: (i) 认证 Authent ...

  9. Oracle导出excel

    oracle导出excel(非csv)的方法有两种,1.使用sqlplus  spool,2.使用包体 现将网上相关代码整理后贴出以备不时之需: 使用sqlplus: 使用sqlplus需要两个文件: ...

随机推荐

  1. Region在connection前后进行“交并差”等操作的异同

    connection直译为“连接”.其实它的功能不是连接,它的功能是确定区域之间的连接关系,如果简单粗暴地解释的话,可以认为:connection的意思是“打散”,将不连接的区域打散成一个一个的区域. ...

  2. Linux System V Semaphore semget多进程同时创建缺陷解决方法

    System V Semaphore的创建过程缺陷是创建与赋初值由两个函数完成,这会导致两个进程同时创建的话会出现竞争和不一致状态,即使是使用了IPC-EXCL标记. 示例: oflag = IPC- ...

  3. code1135 选择客栈

    首先,预处理三个数组. pre[x]表示在此之前颜色为x的客栈有多少个. f[x]表示在此之前的客栈中,某个点c,c的颜色为x,并且从c点到已经读入的点之间有费用小于p的客栈,这样的c点的个数 las ...

  4. 想成为一名成功的UX设计师吗?做好这13件事情吧

    以下内容由Mockplus团队翻译整理,仅供学习交流,Mockplus是更快更简单的原型设计工具. 丢掉那些阻碍你前进的东西 每个人对成功的定义都不同.如果想在重要事情上取得成功,学会给予才是关键.只 ...

  5. svn建立分支和svn代码合并的操作方法

    首先说下为什么我们需要用到分支-合并.比如项目demo下有两个小组,svn下有一个trunk版.由于客户需求突然变化,导致项目需要做较大改动,此时项目组决定由小组1继续完成原来正进行到一半的工作[某个 ...

  6. JSP中的一个树型结构

    看方力勋的javaWeb,采用左右值来表示树型结构(就是俺门的多级分类)表结构 页面代码 <%@ page language="java" import="java ...

  7. 三大语言实例 (python,C/C++,Java)

    Python3.5语言实例: #coding = utf-8 import sys def Sub_string(a,b): c=[0]*len(b) for i in range(len(a)): ...

  8. [转]Newtonsoft.Json 序列化和反序列化 时间格式

    本文转自:http://www.cnblogs.com/litian/p/3870975.html 1.JSON序列化 string JsonStr= JsonConvert.SerializeObj ...

  9. Ubuntu的常识使用了解4

    寻找文件的「名称」 在Linux系统当中,文件的数量非常非常的多, 需要使用查找工具来高效查找指定文件位置:

  10. 自我介绍和Github初次使用心得

    姓名:许洪科 班级:网络工程142 学号:1413042047 爱好:足球 编写过的程序:0 编写过的代码:几乎为0(大多数为网上直接复制的) Github注册过程:. 1:进入Github网站后点击 ...