亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > 文庫 > 正文

利用binlog進行數據庫的還原

2024-09-07 22:12:50
字體:
來源:轉載
供稿:網友
  前言:在學習mysql備份的時候,深深的感受到mysql的備份還原功能沒有oracle強大;比如一個很常見的恢復場景:基于時間點的恢復,oracle通過rman工具就能夠很快的實現數據庫的恢復,但是mysql在進行不完全恢復的時候很大的一部分要依賴于mysqlbinlog這個工具運行binlog語句來實現,本文檔介紹通過mysqlbinlog實現各種場景的恢復;
  一、測試環境說明:使用mysqlbinlog工具的前提需要一個數據庫的完整性備份,所以需要事先對數據庫做一個完整的備份,本文檔通過mysqlbackup進行數據庫的全備(mysqlbackup的使用:http://blog.itpub.net/12679300/viewspace-1329578/);
 
  二、測試步驟說明:
  數據庫的插入準備工作
  2.1 在時間點A進行一個數據庫的完整備份;
  2.2 在時間點B創建一個數據庫BKT,并在BKT下面創建一個表JOHN,并插入5條數據;
  2.3 在時間點C往表JOHN繼續插入數據到10條;
 
  數據庫的恢復工作
  2.4 恢復數據庫到時間點A,然后檢查數據庫表的狀態;
  2.5 恢復數據庫到時間點B,檢查相應的系統狀態;
  2.6 恢復數據庫到時間點C,并檢查恢復的狀態;
  三、場景模擬測試步驟(備份恢復是一件很重要的事情)
  3.1 執行數據庫的全備份;
 
  點擊(此處)折疊或打開
 
  [root@mysql01 backup]# mysqlbackup --user=root --password --backup-dir=/backup backup-and-apply-log //運行數據庫的完整備份
  3.2 創建數據庫、表并插入數據
  點擊(此處)折疊或打開
 
  mysql> SELECT CURRENT_TIMESTAMP;
  +---------------------+
  | CURRENT_TIMESTAMP |
  +---------------------+
  | 2014-11-26 17:51:27 |
  +---------------------+
  1 row in set (0.01 sec)
 
  mysql> show databases; //尚未創建數據庫BKT
  +--------------------+
  | Database |
  +--------------------+
  | information_schema |
  | john |
  | mysql |
  | performance_schema |
  +--------------------+
  4 rows in set (0.03 sec)
 
  mysql> Ctrl-C --
  Aborted
  [root@mysql02 data]# mysql -uroot -p
  Enter password:
  Welcome to the MySQL monitor. Commands end with ; or //g.
  Your MySQL connection id is 2
  Server version: 5.5.36-log Source distribution
  Copyright (c) 2000, 2014, 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.
  mysql> show master status;
  +------------------+----------+--------------+------------------+
  | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
  +------------------+----------+--------------+------------------+
  | mysql-bin.000001 | 107 | | | //當前數據庫log的pos狀態
  +------------------+----------+--------------+------------------+
  1 row in set (0.00 sec)
  mysql> SELECT CURRENT_TIMESTAMP; //當前的時間戳 當前時間點A
  +---------------------+
  | CURRENT_TIMESTAMP |
  +---------------------+
  | 2014-11-26 17:54:12 |
  +---------------------+
  1 row in set (0.00 sec)
  mysql> create database BKT; //創建數據庫BKT
  Query OK, 1 row affected (0.01 sec)
  mysql> create table john (id varchar(32));
  ERROR 1046 (3D000): No database selected
  mysql> use bkt;
  ERROR 1049 (42000): Unknown database /'bkt/'
  mysql> use BKT;
  Database changed
  mysql> create table john (id varchar(32));
  Query OK, 0 rows affected (0.02 sec)
  mysql> insert into john values(/'1/');
  Query OK, 1 row affected (0.01 sec)
  mysql> insert into john values(/'2/');
  Query OK, 1 row affected (0.01 sec)
  mysql> insert into john values(/'3/');
  Query OK, 1 row affected (0.00 sec)
  mysql> insert into john values(/'4/');
  Query OK, 1 row affected (0.01 sec)
  mysql> insert into john values(/'5/');
  Query OK, 1 row affected (0.01 sec)
  mysql> SELECT CURRENT_TIMESTAMP; //插入5條數據后數據庫的時間點B,記錄該點便于數據庫的恢復
  +---------------------+
  | CURRENT_TIMESTAMP |
  +---------------------+
  | 2014-11-26 17:55:53 |
  +---------------------+
  1 row in set (0.00 sec)
  
  mysql> show master status;
  +------------------+----------+--------------+------------------+
  | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
  +------------------+----------+--------------+------------------+
  | mysql-bin.000001 | 1204 | | | //當前binlog的pos位置
  +------------------+----------+--------------+------------------+
  1 row in set (0.00 sec)
   3.3 設置時間點C的測試
 
  點擊(此處)折疊或打開
 
  mysql> insert into john values(/'6/');
  Query OK, 1 row affected (0.02 sec)
  mysql> insert into john values(/'7/');
  Query OK, 1 row affected (0.01 sec)
  mysql> insert into john values(/'8/');
  Query OK, 1 row affected (0.01 sec)
  mysql> insert into john values(/'9/');
  Query OK, 1 row affected (0.01 sec)
  mysql> insert into john values(/'10/');
  Query OK, 1 row affected (0.03 sec)
  mysql> show master status;
  +------------------+----------+--------------+------------------+
  | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
  +------------------+----------+--------------+------------------+
  | mysql-bin.000001 | 2125 | | |
  +------------------+----------+--------------+------------------+
  1 row in set (0.00 sec)
  mysql> SELECT CURRENT_TIMESTAMP;
  +---------------------+
  | CURRENT_TIMESTAMP |
  +---------------------+
  | 2014-11-26 17:58:08 |
  +---------------------+
  1 row in set (0.00 sec)
   3.4 以上的操作完成之后,便可以執行數據庫的恢復測試
 
  點擊(此處)折疊或打開
 
  [root@mysql02 data]# mysqlbackup --defaults-file=/backup/server-my.cnf --datadir=/data/mysql --backup-dir=/backup/ copy-back
  MySQL Enterprise Backup version 3.11.0 Linux-3.8.13-16.2.1.el6uek.x86_64-x86_64 [2014/08/26]
  Copyright (c) 2003, 2014, Oracle and/or its affiliates. All Rights Reserved.
   mysqlbackup: INFO: Starting with following command line ...
   mysqlbackup --defaults-file=/backup/server-my.cnf --datadir=/data/mysql
          --backup-dir=/backup/ copy-back
   mysqlbackup: INFO:
  IMPORTANT: Please check that mysqlbackup run completes successfully.
             At the end of a successful /'copy-back/' run mysqlbackup
             prints /"mysqlbackup completed OK!/".
  141126 17:59:58 mysqlbackup: INFO: MEB logfile created at /backup/meta/MEB_2014-11-26.17-59-58_copy_back.log
  --------------------------------------------------------------------
                         Server Repository Options:
  --------------------------------------------------------------------
    datadir = /data/mysql
    innodb_data_home_dir = /data/mysql
    innodb_data_file_path = ibdata1:10M:autoextend
    innodb_log_group_home_dir = /data/mysql/
    innodb_log_files_in_group = 2
    innodb_log_file_size = 5242880
    innodb_page_size = Null
    innodb_checksum_algorithm = none
  --------------------------------------------------------------------
                         Backup Config Options:
  --------------------------------------------------------------------
    datadir = /backup/datadir
    innodb_data_home_dir = /backup/datadir
    innodb_data_file_path = ibdata1:10M:autoextend
    innodb_log_group_home_dir = /backup/datadir
    innodb_log_files_in_group = 2
    innodb_log_file_size = 5242880
    innodb_page_size = 16384
    innodb_checksum_algorithm = none
   mysqlbackup: INFO: Creating 14 buffers each of size 16777216.
  141126 17:59:58 mysqlbackup: INFO: Copy-back operation starts with following threads
          1 read-threads 1 write-threads
   mysqlbackup: INFO: Could not find binlog index file. If this is online backup then server may not have started with --log-bin.
          Hence, binlogs will not be copied for this backup. Point-In-Time-Recovery will not be possible.
  141126 17:59:58 mysqlbackup: INFO: Copying /backup/datadir/ibdata1.
   mysqlbackup: Progress in MB: 200 400 600
  141126 18:00:22 mysqlbackup: INFO: Copying the database directory /'john/'
  141126 18:00:23 mysqlbackup: INFO: Copying the database directory /'mysql/'
  141126 18:00:23 mysqlbackup: INFO: Copying the database directory /'performance_schema/'
  141126 18:00:23 mysqlbackup: INFO: Completing the copy of all non-innodb files.
  141126 18:00:23 mysqlbackup: INFO: Copying the log file /'ib_logfile0/'
  141126 18:00:23 mysqlbackup: INFO: Copying the log file /'ib_logfile1/'
  141126 18:00:24 mysqlbackup: INFO: Creating server config files server-my.cnf and server-all.cnf in /data/mysql
  141126 18:00:24 mysqlbackup: INFO: Copy-back operation completed successfully.
  141126 18:00:24 mysqlbackup: INFO: Finished copying backup files to /'/data/mysql/'
  mysqlbackup completed //數據庫恢復完成
   授權并打開數據庫
 
  點擊(此處)折疊或打開
 
  [root@mysql02 data]# chmod -R 777 mysql //需要授權后才能打開
  [root@mysql02 data]# cd mysql
  [root@mysql02 mysql]# ll
  總用量 733220
  -rwxrwxrwx. 1 root root 305 11月 26 18:00 backup_variables.txt
  -rwxrwxrwx. 1 root root 740294656 11月 26 18:00 ibdata1
  -rwxrwxrwx. 1 root root 5242880 11月 26 18:00 ib_logfile0
  -rwxrwxrwx. 1 root root 5242880 11月 26 18:00 ib_logfile1
  drwxrwxrwx. 2 root root 4096 11月 26 18:00 john
  drwxrwxrwx. 2 root root 4096 11月 26 18:00 mysql
  drwxrwxrwx. 2 root root 4096 11月 26 18:00 performance_schema
  -rwxrwxrwx. 1 root root 8488 11月 26 18:00 server-all.cnf
  -rwxrwxrwx. 1 root root 1815 11月 26 18:00 server-my.cnf //沒有BKT數據庫
  [root@mysql02 mysql]# service mysqld start //啟動數據庫
   3.5 進行數據庫的恢復到時間點B
 
  點擊(此處)折疊或打開
 
  [root@mysql02 mysql2]# pwd //備份的時候,需要備份binlog日志,之前的binlog目錄為/data/mysql2
  /data/mysql2
  [root@mysql02 mysql2]# mysqlbinlog --start-position=107 --stop-position=1203 mysql-bin.000001| mysql -uroot -p //根據post的位置進行恢復,當前的pos位置為107,恢復到pos位置到1203
  Enter password:
  [root@mysql02 mysql2]# mysql -uroot -p
  Enter password:
  Welcome to the MySQL monitor. Commands end with ; or //g.
  Your MySQL connection id is 3
  Server version: 5.5.36-log Source distribution
  Copyright (c) 2000, 2014, 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.
  mysql> show databases;
  +--------------------+
  | Database |
  +--------------------+
  | information_schema |
  | BKT |
  | john |
  | mysql |
  | performance_schema |
  +--------------------+
  5 rows in set (0.02 sec)
  mysql> use BKT
  Database changed
  mysql> show tables;
  +---------------+
  | Tables_in_BKT |
  +---------------+
  | john |
  +---------------+
  1 row in set (0.00 sec)
  mysql> select * from john;
  +------+
  | id |
  +------+
  | 1 |
  | 2 |
  | 3 |
  | 4 |
  | 5 |
  +------+
  5 rows in set (0.01 sec) //查看數據庫恢復成功
   3.6 恢復數據庫到時間點C
 
  點擊(此處)折疊或打開
 
  [root@mysql02 mysql2]# mysqlbinlog --start-date=/"2014-11-27 09:21:56/" --stop-date=/"2014-11-27 09:22:33/" mysql-bin.000001| mysql -uroot -p123456 //本次通過基于時間點的恢復,恢復到時間點C
  Warning: Using unique option prefix start-date instead of start-datetime is deprecated and will be removed in a future release. Please use the full name instead.
  Warning: Using unique option prefix stop-date instead of stop-datetime is deprecated and will be removed in a future release. Please use the full name instead.
  [root@mysql02 mysql2]# mysql -uroot -p
  Enter password:
  Welcome to the MySQL monitor. Commands end with ; or //g.
  Your MySQL connection id is 6
  Server version: 5.5.36-log Source distribution
  Copyright (c) 2000, 2014, 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.
  mysql> show databases;
  +--------------------+
  | Database |
  +--------------------+
  | information_schema |
  | BKT |
  | john |
  | mysql |
  | performance_schema |
  +--------------------+
  5 rows in set (0.00 sec)
  mysql> use BKT
  Database changed
  mysql> select * from john;
  +------+
  | id |
  +------+
  | 1 |
  | 2 |
  | 3 |
  | 4 |
  | 5 |
  | 6 |
  | 7 |
  | 8 |
  | 9 |
  | 10 |
  +------+
  10 rows in set (0.00 sec) //經過檢查成功恢復到時間點C
  
  四、mysqlbinlog的其他總結:以上是利用binlog文件進行基于時間點和binlog的POS位置恢復的測試,mysqlbinlog的使用還有很多功能,運行mysqlbinlog --help可以查看相應參數;
  4.1 查看binlog的內容:[root@mysql02 mysql2]# mysqlbinlog mysql-bin.000001
  4.2 mysqlbinlog的其他常用參數:
  -h  根據數據庫的IP
  -P  根據數據庫所占用的端口來分
  -server-id 根據數據庫serverid來還原(在集群中很有用)
  -d  根據數據庫名稱
 
  例如: [root@mysql02 mysql2]# mysqlbinlog -d BKT mysql-bin.000001//還原BKT數據庫的信息
 
  參數的組合使用:
  點擊(此處)折疊或打開
 
  [root@mysql02 mysql2]# mysqlbinlog --start-date=/"2014-11-27 09:21:56/" --stop-date=/"2014-11-27 09:22:33/" -d BKT -h 127.0.0.1 /var/lib/mysql/mysql-bin.000001 |mysql -u root -p
  #如果有多個binlog文件,用逗號隔開;
  
  4.4 恢復是一件很重要的事情,如果不知道具體要恢復的時間點,請把binlog文件先轉換成文本文件,詳細查看完相應的內容再進行恢復;
  [root@mysql02 mysql2]# mysqlbinlog mysql-bin.000001 > /tmp/00001.sql
 
  總結:備份有時候永遠都用不上,但是你永遠也不知道什么時候會用上,正所謂養兵千日用兵一時,作為一個合格的DBA有個可用的備份,就可以做到胸有成竹。

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
另类天堂视频在线观看| 国产精品丝袜白浆摸在线| 久久久噜噜噜久久久| 最新国产成人av网站网址麻豆| 色综合天天狠天天透天天伊人| 97超碰蝌蚪网人人做人人爽| 国产精品欧美日韩一区二区| 欧美二区在线播放| 亚洲激情视频在线观看| 97视频在线免费观看| 国产欧美va欧美va香蕉在线| 亚洲欧美日韩图片| 日韩精品在线播放| 国产午夜一区二区| 日韩欧美在线观看| 国产精品日日做人人爱| 97人人爽人人喊人人模波多| 色综合久久久888| 日韩av一区二区在线观看| 亚洲精品国产精品乱码不99按摩| 国产精品综合久久久| 日韩精品高清视频| 国产亚洲欧美视频| 久久综合伊人77777蜜臀| 成人精品久久一区二区三区| 亚洲黄页网在线观看| 成人激情视频在线观看| 日韩av免费网站| 亚洲奶大毛多的老太婆| 精品日韩视频在线观看| 狠狠爱在线视频一区| 97不卡在线视频| 日本最新高清不卡中文字幕| 欧美大片第1页| 亚洲精品久久久久中文字幕二区| 91综合免费在线| 97超碰国产精品女人人人爽| 久久久久久久亚洲精品| 国产日本欧美一区| 久久中文字幕视频| 奇门遁甲1982国语版免费观看高清| 亚洲人在线视频| 91热精品视频| 久久精品99久久久香蕉| 亚洲成人亚洲激情| 久久精品亚洲热| 欧美亚洲另类激情另类| 亚洲综合成人婷婷小说| 亚洲国产精品久久91精品| 国产精品久久久久久av| 91亚洲精华国产精华| 亚洲精品美女网站| 91精品视频在线看| 国产精品视频资源| 欲色天天网综合久久| 日韩精品欧美国产精品忘忧草| 伊人青青综合网站| 最近2019好看的中文字幕免费| 成人国产精品色哟哟| 午夜精品久久久久久99热软件| 久久深夜福利免费观看| 精品久久久91| 国产精品青青在线观看爽香蕉| 欧美裸体xxxx极品少妇| 亚洲少妇激情视频| 久久久久久久影院| 色99之美女主播在线视频| 久久91超碰青草是什么| www.日韩不卡电影av| 91久久精品美女高潮| 久久精品国产一区二区电影| 日韩欧美在线视频| 91在线观看免费| 91精品国产91久久久久久久久| 国产亚洲精品久久久优势| 成人免费激情视频| 日韩精品中文字幕久久臀| 欧美激情一区二区三区久久久| 永久免费精品影视网站| 欧美另类第一页| 国产精品一区二区久久| 精品亚洲一区二区三区在线观看| 欧美大全免费观看电视剧大泉洋| 国产一区二区三区中文| 久久久久一本一区二区青青蜜月| 8x海外华人永久免费日韩内陆视频| 亚洲图片欧洲图片av| 欧美电影免费在线观看| 欧美精品福利视频| 91美女片黄在线观看游戏| 日韩经典中文字幕| 亚洲精品福利视频| 欧美在线亚洲在线| 久久av.com| 欧美孕妇毛茸茸xxxx| 亚洲第一网站免费视频| 久久久成人精品| 91精品国产网站| 日韩大陆欧美高清视频区| 久久久久久久久久亚洲| 91在线免费看网站| 一区二区欧美激情| 啪一啪鲁一鲁2019在线视频| 国外成人免费在线播放| 97国产精品人人爽人人做| 日韩精品中文字幕在线观看| 国模极品一区二区三区| 成人亚洲激情网| 国产精品一区二区三区成人| 国内精品久久久久伊人av| 亚洲第一综合天堂另类专| 成人av在线网址| 欧洲美女免费图片一区| 亚洲国产精品电影在线观看| 亚洲精品国产品国语在线| 久久69精品久久久久久国产越南| 亚洲欧美在线看| 欧美激情在线观看视频| 欧美视频二区36p| 精品久久久国产| 久久久在线免费观看| 亚洲色图校园春色| 久久久国产一区二区三区| 欧美色道久久88综合亚洲精品| 国产精品福利小视频| 亚洲第一天堂av| 亚洲精品电影网| 国产成人jvid在线播放| 亚洲字幕在线观看| 欧美激情精品久久久久久免费印度| 日本一区二区不卡| 国产精品久久久久久久久久久不卡| 欧美电影在线观看| www.99久久热国产日韩欧美.com| 日韩天堂在线视频| 日韩精品www| 国产成人福利夜色影视| 国产精品黄色av| 美女性感视频久久久| 亚洲第一中文字幕在线观看| 丝袜亚洲另类欧美重口| 亚洲成人激情在线观看| 欧美华人在线视频| 国内精品久久久久| 亚洲欧美在线播放| 91免费在线视频| 精品久久久久久久久久ntr影视| 亚洲精品一区二区在线| 国产精品自产拍在线观看中文| 91久热免费在线视频| 日韩精品亚洲精品| 92看片淫黄大片欧美看国产片| 亚洲欧美中文字幕| 伊人男人综合视频网| 久久91亚洲人成电影网站| 国产啪精品视频网站| 日韩精品亚洲视频| 91国内免费在线视频| 97在线日本国产| 久久成人av网站| 欧美视频免费在线观看| 久久人人爽亚洲精品天堂| 亚洲另类xxxx| 国产精品 欧美在线|