恢復就簡單多了! 只要執行該備份檔案就行了,該備份檔案是sql哦!
恢復完全備份mysql
-uroot -p < backup.sql
就這麼簡單!
恢復增量備份mysqlbinlog
mysql-bin.000002 … | mysql -u root -p
注意此次恢復過程亦會寫入日誌檔案,如果資料量很大,建議先關閉日誌功能
增量恢復也是怎麼簡單的哦!
mysqlbinlog 這個工具是解析binlog二進位制 翻譯成sql語句,然後管道給mysql去執行。
有的時候你想精確恢復到,那麼下面就可以完成。
mysqlbinlog常見的選項有以下幾個:
--start-datetime:從二進位制日誌中讀取指定等於時間戳或者晚於本地計算機的時間
--stop-datetime:從二進位制日誌中讀取指定小於時間戳或者等於本地計算機的時間
取值和上述一樣
--start-position:從二進位制日誌中讀取指定position
事件位置作為開始。
--stop-position:從二進位制日誌中讀取指定position
事件位置作為事件截至
開始時間我們知道了,那結束怎麼知道呢?
方法一:使用mysqlbinlog讀取binlog日誌:
[root@vm-002
~]# cd var/lib/mysql/
[root@vm-002
mysql]# mysqlbinlog mysql-bin.000003
mysql> show
binlog events in 'mysql-bin.000003';
log_name | pos | event_type | server_id | end_log_pos | info |
mysql-bin.000003 | 4 | format_desc | 1 | 106 | server ver: 5.1.73-log, binlog
ver: 4 |
mysql-bin.000003 | 106 | query | 1 | 173 | begin |
mysql-bin.000003 | 173 | intvar | 1 | 201 | insert_id=3 |
mysql-bin.000003 | 201 | query | 1 | 444 | use `ops`; insert into
ops.member(`name`,`***`,`age`,`gsan','w',21,'cls5'),('lisi','m',20,'cls4'),('wangwu','w',26,'cls6')
mysql-bin.000003 | 444 | xid | 1 | 471 | commit * xid=66 */ |
mysql-bin.000003 | 471 | query | 1 | 538 | begin |
mysql-bin.000003 | 538 | query | 1 | 646 | use `ops`; update ops.member set
name='李四' where id= |
mysql-bin.000003 | 646 | xid | 1 | 673 | commit * xid=68 */ |
mysql-bin.000003 | 673 | query | 1 | 740 | begin |
mysql-bin.000003 | 740 | query | 1 | 848 | use `ops`; update ops.member set
name='小二' where id= |
mysql-bin.000003 | 848 | xid | 1 | 875 | commit * xid=69 */ |
mysql-bin.000003 | 875 |
query | 1 | 954 | drop
database ops |
mysql-bin.000003 | 954 | rotate | 1 | 997 | mysql-bin.000004;pos=4 |
通過分析,造成資料庫破壞的pos點區間是介於 875--954 之間(這是按照日誌區間的pos節點算的),只要恢復到875前就可。
mysqlbinlog --stop-position=875 --database=zyyshop mysql-bin.000002
| mysql -u root -p
--database=zyyshop 指定只恢復zyyshop資料庫(一台主機上往往有多個資料庫,只限本地log日誌)
方法一:使用mysqlbinlog讀取binlog日誌:
[root@vm-002 mysql]# mysqlbinlog mysql-bin.000003
begin
at 173
#160925
21:57:19 server id 1 end_log_pos 201 intvar
setinsert_id=3/*!*/;
at 201
#160925
21:57:19 server id 1 end_log_pos 444 query thread_id=3 exec_time=0
error_code=0
use`ops`/*!*/;
settimestamp=1474811839/*!*/;
insert
into ops.member(`name`,`***`,`age`,`classid`)
values('yiyi','w',20,'cls1'),('xiaoer','m',22,'cls3'),('zhangsan','w',21,'cls5'),('lisi','m',20,'cls4'),('wangwu','w',26,'cls6')
#執行的sql語句
at 444
#160925 21:57:19 server
id 1 end_log_pos 471 xid = 66 #開始執行的時間
commit/*!*/;
at 471
#160925 21:58:41 server
id 1 end_log_pos 538query thread_id=3 exec_time=0 error_code=0 #結束時間
恢復到更改「name='李四'」之前的資料
mysqlbinlog --start-datetime="2016-09-25 21:57:19"
--stop-datetime="2016-09-25 21:58:41" --database=zyyshop mysql-bin.000002| mysql -uroot -p
mysql冷恢復的方法 MYSQL冷備份 恢復
mysql冷備份恢復 1.show variables like data 檢視datadir目錄,這就是所有資料的備份目錄,好像只有innodb的可以直接覆蓋備份 2.停掉mysql服務,然後整個目錄打包 3.到另一台win電腦上,同樣的,找到那台電腦的data目錄,停掉mysql服務,然後覆蓋,...
MySQL 全備份與增量備份 全恢復與增量恢復
一,全備份 與 全恢復 1 vim root db backup mysqldump mraz.php,內容如下 date default timezone set prc d date ymd his exec usr local mysql bin mysqldump uroot p111111...
mysql配置資料恢復 MySQL 資料恢復
前言 前兩天因為沒注意的誤操作,直接把某個資料表清掉了,心慌慌.怪自己學藝不精,當時整了一下午也沒把資料找回來.當晚回來閉關研究,終於在凌晨1點多整出來了,特此記錄,以備不時之需.對於 mysql 資料的備份,主要有兩種 全量備份和增量備份.全量備份 將資料庫中的所有資料全部進行備份.相當於複製貼上...