zoukankan      html  css  js  c++  java
  • PXC小结

    PXC使用到的端口号

    3306 数据库对外服务的端口号(视具体情况而定)
    4444 请求SST SST: 指数据一个镜象传输 xtrabackup , rsync ,mysqldump 
    4567 : 组成员之间进行沟通的一个端口号
    4568 : 传输IST用的。相对于SST来说的一个增量。
    9200:HA健康检查
     
    安装PXC过程中
    iptables 禁掉
    selinux 也禁掉
     
    PXC工作原理:
    节点接收sql 请求后,对于ddl 操作,在commit之前,由wsrep API 调用galera 库进行集群内广播,所有其他节点验证成功后事务在集群所有节点进行提交,反之roll back。pxc 保证整个集群所有数据的强一致性,满足CAP理论中满足:Consistency 和  Availability。
     
    特性如下:
    1.同步复制,事务要么在所有节点提交或不提交。
    2.多主复制,可以在任意节点进行写操作。
    3.在从服务器上并行应用事件,真正意义上的并行复制。
    4.节点自动配置。
    5.数据一致性,不再是异步复制。
     
     
    Percona XtraDB Cluster完全兼容MySQL和Percona Server,表现在:
    1.数据的兼容性
    2.应用程序的兼容性:无需更改应用程序
     
     
    1.集群是有节点组成的,推荐配置至少3个节点,但是也可以运行在2个节点上。
    2.每个节点都是普通的mysql/percona服务器,可以将现有的数据库服务器组成集群,反之,也可以将集群拆分成单独的服务器。
    3.每个节点都包含完整的数据副本。
     
     
     
    优点如下:
    1.当执行一个查询时,在本地节点上执行。因为所有数据都在本地,无需远程访问。
    2.无需集中管理。可以在任何时间点失去任何节点,但是集群将照常工作,不受影响。
    3.良好的读负载扩展,任意节点都可以查询。
     
     
    缺点如下:
    1.加入新节点,开销大。需要复制完整的数据。
    2.不能有效的解决写缩放问题,所有的写操作都将发生在所有节点上。
    3.有多少个节点就有多少重复的数据。
     
     
    最小集群点数
    建议的最小集群点数为3,虽然两个节点也能运行,但是无法保证数据的稳定,当两个节点时,任何一个节点处故障,将导致集群无法访问。
    最大是小于等于8个。
     
    故障恢复加入集群的过程分析
     
    如果数据不大,用SST传输就行了。
    如果数据很大,用rsync来传输。
     
     
    脑裂
    XtaDB Cluster需要使用3个或以上的节点来应对脑裂问题,否则当只有一个节点可用的情况下,将不能提供服务。
    假设在系统初始化的时候,一个有三个node节点a,b,c。
    假设a先启动(使用bootstrap-pxc方式启动),b然后启动,c再启动。这时候a就是整个系统的PC。并且这时候系统任何两个节点都是互相通信,保证数据的一致性。
    假设1. b或者c挂了,这个就很容易理解,因为数据都是一致性的,并不影响其他节点。
    假设2. PC挂了,就是a挂了,这个时候系统也能正常运行,虽然PC挂了,有会推荐算法在b,c中选出一个新的PC。
    假设3.B和C都挂了,系统为了防止“脑裂”的发生(超过1/2 的节点不能通行则会触发这种情况),会对节点1 降级。这时候A节点将表现为不能进行任何操作(show 这样的操作也是可以的是)。会报“unkown command”的错误。所以官方对系统的配置建议为3个节点以上。
     
    模拟脑裂
    kill掉两个节点即可出现。
     
    PCX的局限性
    1.仅仅工作再InnoDB引擎上,因此对MySQL库下的系统表的修改不能被复制,但是DDL操作时可以被复制的,所以可以通过creata user、grant等方式操作系统表。
    2.不支持在没有主键的表上DELETE操作,select ... limit也会在不同节点上返回不同的值(仅仅是在没有主键的情况下才会limit返回不同的结果集?)。
    3.不支持的操作:LOCL/UNLOCL TABLES、lock functings(GET_LOCK()、RELEASE_LOCK()...)。
    4.query log日志不能存放在表里面,必须存放在文件。
    5.最大的事务大小由wsrep_max_ws_rows、wsrep_max_ws_size定义,LOAD DATA INFILE每10K行提交一次,这种事务将被分割成熟个小的事务(XtraDB cluster自动分割?还是操作时手动分割?)。
    6.由于集群是基于乐观的并发控制(optimistic concurrency control),事务冲突的情况可能会在commit阶段发生,当多个节点修改同时同一行数据,只有其中一个节点能够成功,失败的节点将终止,并且返回死锁错误代码 Error:1213 SQLSTATE:40001。
    7.不支持XA事务,因为XA事务有可能在commit的时候出现异常发生rollback(参考 http://www.infoq.com/cn/articles/xa-transactions-handle)。
    8.整个集群的吞吐量/性能取决于最慢的那个节点,因为需要所有节点上做Certification,同时还取决于节点间的网络性能,因此需要所有节点都有相同的硬件配置,并且网络、磁盘等性能要尽可能的高,例如使用SSD。
    9.最小建议的集群节点数为3,为解决脑裂,最多8个节点。
    10.如果DDL语句有问题,很可能会破坏整个集群,需要非常特殊的对待DDL语句。
     
  • 相关阅读:
    java09 队列Queue与Deque
    java08 Set
    java07 map
    SNMP学习
    NPM
    windows主机资源Snmp OIDs CPU, Memory, Disk等
    servlet3.0 @webfilter 过滤顺序
    snmp v3的安全配置 snmp认证与加密配置(53)
    CentOS 7.2 (mini) 里iptables防火墙怎么关闭?
    ORA-00845 MEMORY_TARGET not supported on this system 的解决
  • 原文地址:https://www.cnblogs.com/liang545621/p/9400942.html
Copyright © 2011-2022 走看看