閱讀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工具