mysql的恢復 MYSQL的恢復

2021-10-17 22:20:41 字數 3301 閱讀 6813

恢復就簡單多了! 只要執行該備份檔案就行了,該備份檔案是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 資料的備份,主要有兩種 全量備份和增量備份.全量備份 將資料庫中的所有資料全部進行備份.相當於複製貼上...