zoukankan      html  css  js  c++  java
  • PXC(percona xtradb cluster)新加节点避免SST的方法

    环境:

    node1:192.168.0.100  pxc节点

    node2:192.168.0.101  新节点

    把新加入的节点先建立为node1的从库,可以使用mysqldump或innobackupex来备份出数据,如果数据量不大,那么就使用mysqldump来备份(dump之前先建立复制帐号,这里只需要replication slave权限即可)。

    mysqldump --master-data=2 --single-transaction -A > node1_db.sql

     

    把新节点mysqld初始化一下,并导入node1 dump出的数据。注意:新节点配置从库时不要在my.cnf中配置PXC的参数。

     

    导入数据后,把db.sql文件中的CHANGE MASTER语句找出来补全用户帐号,密码,IP,并在新节点上执行连接到node1上。等待mysql正常同步之后,show slave status查看到主从复制到了什么位置relay_master_log_file和exec_master_log_pos,记下来,然后把mysql的同步停掉,然后快速把mysqld停掉。然后在my.cnf中把PXC的配置全部加上。

    然后找到从gcache的什么位置开始同步数据(根据前面show slave stauts记录的位置,假设binlog为003,position为4235),到从库的binlog目录下查看记录的binlog中的最后一个位置:

    然后到node1节点上flush logs一下,然后找和从库同样的binlog file和position,通过从库的show slave status输出的position去主库找xid(也可以从从库的中继日志中找这个position中查找xid):

     

    xid是mysql内部分布式XA事务的ID。xid是一个8字节的有序增长。

    此时,查看主库的如下图文件:

    然后把这个文件复制到从库,把seqno改为23(为上上图中4035对应的xid),注意修改文件权限为mysql用户可访问。

     

    注意:要先从status中确认这个xid在不在gcache中:

    上图中看到是从1开始,说明23在gcache里面。

     

    此时,启动新节点的mysqld。如果启动输出没有报错,那就查看下错误日志。如果错误日志中没有错误,那么就表示PXC节点加入集群同步成功。

     

    注意:启动新节点的时候最好是使用如下命令指定donor节点,指定新节点从哪里同步数据:

    mysql_safe --wsrep-donor=node1

     

    此时,之前建立的主从架构可以不需要了,可以直接reset slave all掉(已经没用了,PXC节点开始同步之后,主从复制已经无用了)。

     

    注:

    1.PXC节点对于同一张表的自增多节点insert,会自动根据节点数来设置自增步长和自增初始值。是为了防止并发insert造成数据冲突。

    2.PXC环境一般用于对数据一致性比较高的环境。比如交易类的。

     

  • 相关阅读:
    sed 练习
    正则表达式
    字符转换命令
    命令执行判断依据
    shell 操作环境
    选取命令
    排序命令
    命令别名与历史命令
    变量的学习
    防止恶意跳转
  • 原文地址:https://www.cnblogs.com/xiaoboluo768/p/5315939.html
Copyright © 2011-2022 走看看