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误操作恢复流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 直播安卓软件下载(直播安卓软件)
- 下一篇: 弱口令扫描工具mysql ftp_基于端