阅读280 返回首页    go 技术社区[云栖]


MySQL 数据恢复方法(一)

数据库故障,需要恢复新实例

使用场景

主数据库故障,无法恢复,且没有容灾及高可用。需要通过备份文件进行恢复。

所需资源

  1. 数据库备份文件
  2. 备份点-故障点之间的binlog文件
  3. 机器资源

操作说明

mysqldump备份文件恢复

  1. 拷贝备份文件到目标机器
  2. 登录新建的目标数据库实例

    1. /opt/alisql/bin/mysql -uroot -p
        Enter password:
        Welcome to the MySQL monitor.  Commands end with ; or \g.
        Your MySQL connection id is 18
        Server version: 5.6.32-log Source distribution
      
        Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
      
        Oracle is a registered trademark of Oracle Corporation and/or its
        affiliates. Other names may be trademarks of their respective
        owners.
      
        Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
      
        root@(none) 01:57:16>
      
  1. 使用source命令导入备份文件 $mysqldump.sql
    1. root@(none) 01:57:16>source mysqldump.sql;

xtrabackup备份文件恢复(仅供全量备份参考)

  1. 拷贝备份文件到目标机器
  2. innobackupex prepare
    1. innobackupex --apply-log --defaults-file=$my.cnf --use-memory=2048M $backupdir
  1. innobackupex restore
    1. innobackupex --copy-back --defaults-file=$my.cnf --use-memory=2048M $backupdir (必须清空mysqldata目录)
  1. 修改文件权限
    1. chown -R mysql:mysql $mysqldata
  1. 启动新的数据库实例
    1. cd $mysql_bin_dir; ./bin/mysqld_safe --defaults-file=$my.cnf &

数据误操作(INSERT、DELETE、UPDATE)

使用场景

数据被错误变更,需要恢复记录到正确状态

所需资源

  1. 可以连接目标数据库的机器
  2. binlog日志
  3. binlog2sql工具

操作说明

  1. 环境准备
    1. 部署binlog2sql工具
    2. 调试目标数据库连接
  2. 明确最初误操作开始的binlog文件名$first_binlog_file
  3. 使用binlog2sql工具生成rollback SQL
    1. python binlog2sql/binlog2sql.py --flashback -h$db_host -P3306 -u$user -p'$pass' -d$database --start-file='$first_binlog_file' > /tmp/rollback.sql
  1. 对rollback SQL进行审核整理
  2. 登录数据库进行rollback操作
    1. root@(none) 01:57:16>source rollback.sql;
  1. 验证数据

数据库误操作(DROP TABLE)

使用场景

数据整张表被误删除,需要恢复到正确状态

所需资源

  1. 被误删除表的数据库$dst_db
  2. 数据库备份文件(误删除之前)
  3. 备份点-误操作之间的binlog文件
  4. 可以连接目标数据库的机器
  5. 恢复用机器资源$backup_host
  6. binlog2sql工具

操作说明

  1. 在$backup_host上使用备份文件恢复数据库,参照第一部分《数据库故障,需要恢复新实例》
  2. 在$dst_db数据库上,使用binlog2sql工具生成误删除表有关的SQL(备份点-误删除点之间的操作记录)
    1. python binlog2sql/binlog2sql.py --flashback -h$db_host -P3306 -u$user -p'$pass' -d$database -t$误删除的表名 --start-file='$备份点所在的binlog文件' > /tmp/execute.sql
  1. 登录到$backup_host数据库,进行恢复execute.sql数据操作
    1. root@(none) 01:57:16>source execute.sql;
  1. 在$backup_host上使用mysqldump备份被误删除的表
    1. mysqldump -h$backup_host -u $user -p $pass $table > $table.sql
  1. 登录到$dst_db数据库,将mysqldump出的文件数据导入到目标数据库
    1. root@(none) 01:57:16>source $table.sql;
  1. 验证数据

最后更新:2017-09-16 16:03:51

  上一篇:go  大数据时代 如何让用户上网更放心
  下一篇:go  vue工具