zoukankan      html  css  js  c++  java
  • Mysql Cluster居于时间点的恢复


    ndb居于时间点的恢复

     

     

    ndb居于时间点的恢复的原理是根据mysql cluster的备份和mysql的二进制日志相结合起来,恢复到最近的一次备份,然后用二进制日志进行最近备份到出问题的时间点的恢复!

    注意这个恢复一定要在单用户模式下完成,避免因为用户访问造成数据的不一致!下面是恢复测试的详细过程!

     

    建立测试的数据库和表

    CREATE DATABASE zhang;

    CREATE TABLE zhang (id INT,`name` VARCHAR(20),PRIMARY KEY(`id`))ENGINE=NDBCLUSTER;

     

    插入测试数据

    INSERT INTO zhang VALUES(1,'zhang1'),(2,'zhang2'),(3,'zhang3'),(4,'zhang4');

     

    执行备份

    start backup

    再次插入几条数据(为了保持和正式环境尽可能接近,在插入数据中间穿插了flush logs操作!)

    INSERT INTO zhang VALUES(5,'zhang5'),(6,'zhang6');

    flush logs;

    INSERT INTO zhang VALUES(7,'zhang7'),(8,'zhang8');

     

    此时假设数据库挂掉了,需要进行恢复(恢复的时候只启动设置成单用户的mysqld节点)

    采用初始化方式启动ndbd,ndbd --initial,注意如果用到表空间和undo日志文件,需要手工清除,因为初始化不会删除这些文件!

    删除或者清空mysql.ndb_binlog_index表


    恢复表结构

    /usr/local/mysql/bin/ndb_restore -e  -c 192.168.3.221 -n 11 -b 1 -m --backup_path=/data/dbdata/BACKUP/BACKUP-1/

    恢复ndb节点1112上的数据

    /usr/local/mysql/bin/ndb_restore -e  -c 192.168.3.221 -n 11 -b 1 -r --backup_path=/data/dbdata/BACKUP/BACKUP-1/

    /usr/local/mysql/bin/ndb_restore -e  -c 192.168.3.221 -n 12 -b 1 -r --backup_path=/data/dbdata/BACKUP/BACKUP-1/

     

    找一个mysqld节点,进入单用户模式

    ENTER SINGLE USER MODE 21;

     

    启动该mysqld节点,并登陆

    找到最大的epoch的值

    SELECT @LASTEPOCH:=MAX(epoch) FROM mysql.ndb_apply_status;

     

    根据epoch的值,找到二进制日志的位置以及文件名

    SELECT POSITION, @FIRSTFILE:=FILE

    FROM mysql.ndb_binlog_index

    WHERE epoch > @LASTEPOCH

    ORDER BY epoch ASC

    LIMIT 1;

    结果为:

    829 ./mysql-bin.000012

     

    找出恢复的时候需要用到的除第一个日志文件以外的其他的二进制日志文件

    SELECT DISTINCT File

    FROM mysql.ndb_binlog_index

    WHERE epoch > @LASTEPOCH

    AND File <> @FIRSTFILE

    ORDER BY File;

    结果为:

    ./mysql-bin.000013

     

    然后进行二进制日志的恢复:

    mysqlbinlog -H --set-charset="utf8" -D --start-position=829 ./mysql-bin.000012 | grep -v "RELOAD DATABASE" |mysql -uroot -p123456 zhang

    mysqlbinlog -H --set-charset="utf8" -D --stop-datetime="2011-07-04 10:30:00" ./mysql-bin.0000013 | grep -v "RELOAD DATABASE" |mysql -uroot -p123456 zhang

    恢复完成后,退出单用户模式,并启动另外一个sql节点

     

     

    参考链接:

    http://dev.mysql.com/doc/mysql-cluster-excerpt/5.1/en/mysql-cluster-replication-pitr.html

    http://www.mysqlab.net/knowledge/kb/detail/topic/backup/id/8309

  • 相关阅读:
    7、css基本选择器、层叠样式
    6、表格标签及表单标签
    5、head内常用标签
    4、body内常用符号
    3、HTML简介
    2、HTTP协议
    Mbedtls和Opesnssl 解码x509Certificate
    Django 学习5--DetailView
    Django 学习四--bootstrap
    Django 学习3--CreateView
  • 原文地址:https://www.cnblogs.com/feihongwuhen/p/7169966.html
Copyright © 2011-2022 走看看