最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解MySQL誤操作后怎樣進(jìn)行數(shù)據(jù)恢復(fù)

 更新時間:2016年08月09日 17:45:22   作者:Martin  
在大家日常操作數(shù)據(jù)庫時候難免會因?yàn)椤按笠狻倍`操作,那么誤操作后怎樣進(jìn)行數(shù)據(jù)恢復(fù)呢,下面跟著小編一起來學(xué)習(xí)學(xué)習(xí)。

一、開啟binlog。

首先查看binlog是否開啟

mysql> show variables like "log_bin";
+---------------+-------+
|Variable_name | Value 
+---------------+-------+
| log_bin  OFF 
+---------------+-------+
1 row in set (0.00 sec)

值為OFF,需開啟,開啟binlog方式如下:

#vim /etc/my.cnf

在[mysqld]中加入

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

重啟mysql服務(wù)

#service mysqld stop
#service mysqld start

二、模擬數(shù)據(jù)寫入

建庫

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;

寫入數(shù)據(jù)

程序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()
#數(shù)據(jù)插入
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)

查詢數(shù)據(jù)

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 |gzip> /martin/data/backup_$(date +%F).sql.gz

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

四、模擬寫入增量數(shù)據(jù)

繼續(xù)執(zhí)行程序2-1。

查詢數(shù)據(jù)

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;

七、再次寫入增量數(shù)據(jù)

執(zhí)行程序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)

八、恢復(fù)

此時發(fā)現(xiàn)之前的delete操作為誤操作,急需恢復(fù),恢復(fù)過程如下

給該表加上讀鎖

lock table number read;

將全量備份的數(shù)據(jù)導(dǎo)入

#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為增量數(shù)據(jù)binlog

導(dǎo)入全量備份

#cd /martin/data/
#mysql -uroot -p backup < number_2016-06-29.sql
#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 <bin.sql

九、確認(rèn)已恢復(fù)數(shù)據(jù)

登錄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 |
+----+---------------------+
30 rows in set (0.00 sec)

恢復(fù)完成!以上就是本文的全部內(nèi)容,在操作數(shù)據(jù)庫時候要多加小心盡量避免誤操作,如果萬一遇到了,希望本文能夠幫助大家。

相關(guān)文章

  • MySQL中查詢?nèi)罩九c慢查詢?nèi)罩镜幕緦W(xué)習(xí)教程

    MySQL中查詢?nèi)罩九c慢查詢?nèi)罩镜幕緦W(xué)習(xí)教程

    這篇文章主要介紹了MySQL中查詢?nèi)罩九c慢查詢?nèi)罩镜幕緦W(xué)習(xí)教程,文中還提到了MySQL自帶的Mysqldumpslow日志分析工具的使用,需要的朋友可以參考下
    2015-12-12
  • QT連接Mysql數(shù)據(jù)庫的詳細(xì)教程(親測成功版)

    QT連接Mysql數(shù)據(jù)庫的詳細(xì)教程(親測成功版)

    被Qt連接數(shù)據(jù)庫折磨了三天之后終于連接成功了,記錄一下希望對看到的人有所幫助,下面這篇文章主要給大家介紹了關(guān)于QT連接Mysql數(shù)據(jù)庫的詳細(xì)教程,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • Sql在單一表中檢索數(shù)據(jù)的方法詳解

    Sql在單一表中檢索數(shù)據(jù)的方法詳解

    這篇文章主要介紹了Sql在單一表中檢索數(shù)據(jù)的方法,SELECT語句是SQL中最常用的語句。它的用途是從一個或多個表中檢索信息。為了使用SELECT檢索表數(shù)據(jù),必須至少給出兩條信息:想選擇什么、從什么地方選擇
    2023-02-02
  • 一文深入探討MySQL是如何解決幻讀問題

    一文深入探討MySQL是如何解決幻讀問題

    SQL標(biāo)準(zhǔn)中定義了4種隔離級別,分別是讀未提交、讀已提交、可重復(fù)讀以及序列化。不同的隔離級別下,本文將重點(diǎn)探討下MySQL是如何解決幻讀問題的,需要的朋友可以跟著小編一起來探討一下
    2023-07-07
  • 允許遠(yuǎn)程訪問MySQL的實(shí)現(xiàn)方式

    允許遠(yuǎn)程訪問MySQL的實(shí)現(xiàn)方式

    這篇文章主要介紹了允許遠(yuǎn)程訪問MySQL的實(shí)現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • mac 裝5.6版本mysql 設(shè)置密碼的簡易方法

    mac 裝5.6版本mysql 設(shè)置密碼的簡易方法

    這篇文章主要介紹了mac 裝5.6版本mysql 設(shè)置密碼的簡易方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-05-05
  • MYSQL數(shù)字函數(shù)詳解及實(shí)戰(zhàn)記錄(數(shù)字函數(shù)大全,內(nèi)含示例)

    MYSQL數(shù)字函數(shù)詳解及實(shí)戰(zhàn)記錄(數(shù)字函數(shù)大全,內(nèi)含示例)

    數(shù)學(xué)運(yùn)算函數(shù)可以實(shí)現(xiàn)常見的數(shù)學(xué)運(yùn)算,這篇文章主要給大家介紹了關(guān)于MYSQL數(shù)字函數(shù)詳解及實(shí)戰(zhàn)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • mysql數(shù)據(jù)庫row_number函數(shù)舉例介紹

    mysql數(shù)據(jù)庫row_number函數(shù)舉例介紹

    在MySQL中ROW_NUMBER()是一種用來生成行號的功能函數(shù),通常情況下它用于對查詢結(jié)果進(jìn)行編號,以便方便地查看每行的位置,下面這篇文章主要給大家介紹了關(guān)于mysql數(shù)據(jù)庫row_number函數(shù)舉例介紹的相關(guān)資料,需要的朋友可以參考下
    2024-02-02
  • 詳解關(guān)于MySQL 8.0走過的坑

    詳解關(guān)于MySQL 8.0走過的坑

    這篇文章主要介紹了詳解關(guān)于MySQL 8.0走過的坑,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • MySQL視圖的概念和操作函數(shù)詳解

    MySQL視圖的概念和操作函數(shù)詳解

    對MySQL數(shù)據(jù)庫的查詢,除了基本的查詢外,有時候需要對查詢的結(jié)果集進(jìn)行處理,下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫基本SQL語句教程之高級操作中視圖的相關(guān)資料,需要的朋友可以參考下
    2023-03-03

最新評論

喀喇沁旗| 天祝| 中宁县| 临江市| 大宁县| 龙里县| 蒙城县| 集贤县| 锦屏县| 吉首市| 乐山市| 昔阳县| 东乡族自治县| 马关县| 宣恩县| 资讯 | 赤水市| 横峰县| 香格里拉县| 上虞市| 兴隆县| 东光县| 宣威市| 江油市| 武威市| 英超| 康定县| 栾川县| 永安市| 公主岭市| 台东县| 邻水| 通榆县| 木兰县| 同德县| 陆丰市| 浪卡子县| 阜城县| 广元市| 安龙县| 潞城市|