日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql+误操作怎么恢复_Mysql误操作恢复流程

發布時間:2023/12/2 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql+误操作怎么恢复_Mysql误操作恢复流程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、開啟binlog。

show?variables?like?'log_bin';

#vim??/etc/my.cnf

在[mysqld]中加入

log-bin?????????????????=?mysql-bin

log-bin?????????????????=?/usr/local/mysql/log/mysql-bin.log

重啟mysql服務

#service mysqld stop

#service mysqld start

二、數據寫入

建庫

create?database?backup;

建表

CREATE?TABLE?`number`?(

`id`?int(11)?NOT?NULL?AUTO_INCREMENT?COMMENT?'編號',

`updatetime`?timestamp?NOT?NULL?DEFAULT?'0000-00-00?00:00:00',

PRIMARY?KEY?(`id`)

)?ENGINE=InnoDB?DEFAULT?CHARSET=utf8;

寫入數據

程序2-1

#coding:utf8

#python2.7

import MySQLdb

import time

def connect_mysql(db_host="192.168.11.169",user="martin",passwd="martin",db="backup",charset="utf8"):

conn = MySQLdb.connect(host=db_host,user=user,passwd=passwd,db=db,charset=charset)

conn.autocommit(True)

return conn.cursor()

#數據插入

for i in range(0,10):

#time=time.strftime("%Y-%m-%d %H:%M:%S")

sql = 'insert into number(updatetime) values(%s)'

values = [(time.strftime("%Y-%m-%d %H:%M:%S"))]

db1 = connect_mysql()

print db1.executemany(sql,values)

#初始化數據游標,并將游標作為數據返回

查詢數據

mysql>?select?*?from?number;

+-------+------------------------+

|?id??|?updatetime

+--------------------------------+

|??1?|?2016-06-29?23:27:15?|

|??2?|?2016-06-29?23:27:15?|

|??3?|?2016-06-29?23:27:15?|

|??4?|?2016-06-29?23:27:15?|

|??5?|?2016-06-29?23:27:15?|

|??6?|?2016-06-29?23:27:15?|

|??7?|?2016-06-29?23:27:15?|

|??8?|?2016-06-29?23:27:15?|

|??9?|?2016-06-29?23:27:15?|

|??10?|?2016-06-29?23:27:15??|

+-------+------------------------+

10?rows?in?set?(0.00?sec)

三、全量備份

mysqldump?-uroot?-p?-F?--master-data=2??backup?number|gzip>?/martin/data/number_$(date?+%F).sql.gz

注:加-F能刷新binlog,方便恢復時操作。

或者

#innobackupex?--user=root?--password='martin'?--include=backup.number?/data/mysql_backup/number/?2>/data/mysql_backup/number.log

四、寫入增量數據

繼續執行程序2-1。

查詢數據

mysql>?select?*?from?number;

+----+---------------------------+

|?id??|?updatetime??????????|

+----+---------------------------+

|??1??|?2016-06-29?23:27:15?|

|??2??|?2016-06-29?23:27:15?|

|??3??|?2016-06-29?23:27:15?|

|??4??|?2016-06-29?23:27:15?|

|??5??|?2016-06-29?23:27:15?|

|??6??|?2016-06-29?23:27:15?|

|??7??|?2016-06-29?23:27:15?|

|??8??|?2016-06-29?23:27:15?|

|??9??|?2016-06-29?23:27:15?|

|??10?|?2016-06-29?23:27:15?|

|??11?|?2016-06-29?23:31:03?|

|??12?|?2016-06-29?23:31:03?|

|??13?|?2016-06-29?23:31:03?|

|??14?|?2016-06-29?23:31:03?|

|??15?|?2016-06-29?23:31:03?|

|??16?|?2016-06-29?23:31:03?|

|??17?|?2016-06-29?23:31:03?|

|??18?|?2016-06-29?23:31:03?|

|??19?|?2016-06-29?23:31:03?|

|??20?|?2016-06-29?23:31:03?|

+-------+---------------------+

20?rows?in?set?(0.00?sec)

五、增量備份

保留mysql-bin.000002及之后的binlog即可。

六、模擬誤操作

delete?from?number;

七、再次寫入增量數據

執行程序2-1

select * from bumber;

+------+------------------------+

|?id?|?updatetime??????????|

+------+------------------------+

|?21?|?2016-06-29?23:41:06?|

|?22?|?2016-06-29?23:41:06?|

|?23?|?2016-06-29?23:41:06?|

|?24?|?2016-06-29?23:41:06?|

|?25?|?2016-06-29?23:41:06?|

|?26?|?2016-06-29?23:41:06?|

|?27?|?2016-06-29?23:41:06?|

|?28?|?2016-06-29?23:41:06?|

|?29?|?2016-06-29?23:41:06?|

|?30?|?2016-06-29?23:41:06?|

+------+------------------------+

10?rows?in?set?(0.00?sec)

八、恢復

此時發現之前的delete操作為誤操作,急需恢復,恢復過程如下

給該表加上讀鎖

lock?table?number?read;

將全量備份的數據導入

#cd?/martin/data/

#gzip?-d?number_2016-06-29.sql.gz

#grep?-i?"change"?*.sql

--?CHANGE?MASTER?TO?MASTER_LOG_FILE='mysql-bin.000002',?MASTER_LOG_POS=107;

刷新日志

#mysqladmin?-uroot?-p'martin'?flush-logs

#cd?/usr/local/mysql/log

#ls|grep?mysql-bin|grep?-v?index

mysql-bin.000001

mysql-bin.000002

mysql-bin.000003

可確定mysql-bin.000002為增量數據binlog

導入全量備份

#cd?/martin/data/

#mysql?-uroot?-p?backup?

#cp?/usr/local/mysql/log/mysql-bin.000002?/martin/data/

#mysqlbinlog??mysql-bin.000002?>bin.sql

#vim?bin.sql

在bin.sql找到之前的delete語句,刪除

mysql?-uroot?-p?

九、確認已恢復數據

登錄mysql

#mysql?-uroot?-p'martin'?backup

select?*?from?number;

+----+---------------------+

|?id?|?updatetime??????????|

+----+---------------------+

|?1??|?2016-06-29?23:27:15?|

|?2??|?2016-06-29?23:27:15?|

|?3??|?2016-06-29?23:27:15?|

|?4??|?2016-06-29?23:27:15?|

|?5??|?2016-06-29?23:27:15?|

|?6??|?2016-06-29?23:27:15?|

|?7??|?2016-06-29?23:27:15?|

|?8??|?2016-06-29?23:27:15?|

|?9??|?2016-06-29?23:27:15?|

|?10?|?2016-06-29?23:27:15?|

|?11?|?2016-06-29?23:31:03?|

|?12?|?2016-06-29?23:31:03?|

|?13?|?2016-06-29?23:31:03?|

|?14?|?2016-06-29?23:31:03?|

|?15?|?2016-06-29?23:31:03?|

|?16?|?2016-06-29?23:31:03?|

|?17?|?2016-06-29?23:31:03?|

|?18?|?2016-06-29?23:31:03?|

|?19?|?2016-06-29?23:31:03?|

|?20?|?2016-06-29?23:31:03?|

|?21?|?2016-06-29?23:41:06?|

|?22?|?2016-06-29?23:41:06?|

|?23?|?2016-06-29?23:41:06?|

|?24?|?2016-06-29?23:41:06?|

|?25?|?2016-06-29?23:41:06?|

|?26?|?2016-06-29?23:41:06?|

|?27?|?2016-06-29?23:41:06?|

|?28?|?2016-06-29?23:41:06?|

|?29?|?2016-06-29?23:41:06?|

|?30?|?2016-06-29?23:41:06?|

|?31?|?2016-06-29?23:43:05?|

+----+---------------------+

31?rows?in?set?(0.00?sec)

恢復正常

總結

以上是生活随笔為你收集整理的mysql+误操作怎么恢复_Mysql误操作恢复流程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。