日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 智能硬件 > 人工智能AI
[導(dǎo)讀]   MySQL利用binlog恢復(fù)誤操作數(shù)據(jù)   在人工手動進行一些數(shù)據(jù)庫寫操作的時候(比方說數(shù)據(jù)訂正),尤其是一些不可控的批量更新或刪除,通常都建議備份后操作。不過不怕萬一,就怕一萬,

  MySQL利用binlog恢復(fù)誤操作數(shù)據(jù)

  在人工手動進行一些數(shù)據(jù)庫寫操作的時候(比方說數(shù)據(jù)訂正),尤其是一些不可控的批量更新或刪除,通常都建議備份后操作。不過不怕萬一,就怕一萬,有備無患總是好的。在線上或者測試環(huán)境誤操作導(dǎo)致數(shù)據(jù)被刪除或者更新后,想要恢復(fù),一般有兩種方法。

  方法一、利用最近的全量備份+增量binlog備份,恢復(fù)到誤操作之前的狀態(tài),但是隨著數(shù)據(jù)量的增大,binlog的增多,恢復(fù)起來很費時。

  方法二、如果binlog的格式為row,那么就可以將binlog解析出來生成反向的原始SQL

  以下是利用方法二寫的一個python腳本binlog_rollback.py,可利用此腳本生成反向的原始SQL。

  說明:

  0、前提是binlog的格式為row

  1、要恢復(fù)的表操作前后表結(jié)構(gòu)沒有發(fā)生變更,否則腳本無法解析

  2、只生成DML(insert/update/delete)的rollback語句

  3、最終生成的SQL是逆序的,所以最新的DML會生成在輸入文件的最前面,并且?guī)狭藭r間戳和偏移點,方便查找目標(biāo)

  4、需要提供一個連接MySQL的只讀用戶,主要是為了獲取表結(jié)構(gòu)

  5、如果binlog過大,建議帶上時間范圍,也可以指定只恢復(fù)某個庫的SQL

  6、SQL生成后,請務(wù)必在測試環(huán)境上測試恢復(fù)后再應(yīng)用到線上

  腳本代碼

  #!/bin/env python

  # -*- coding:utf-8 -*-

  import os,sys,re,getopt

  import MySQLdb

  host = ‘127.0.0.1’

  user = ‘’

  password = ‘’

  port = 3306

  start_dateTIme = ‘1971-01-01 00:00:00’

  stop_dateTIme = ‘2037-01-01 00:00:00’

  start_posiTIon = ‘4’

  stop_posiTIon = ‘18446744073709551615’

  database = ‘’

  mysqlbinlog_bin = ‘mysqlbinlog -v’

  binlog = ‘’

  fileContent = ‘’

  output=‘rollback.sql’

  only_primary = 0

  # ----------------------------------------------------------------------------------------

  # 功能:獲取參數(shù),生成相應(yīng)的binlog解析文件

  # ----------------------------------------------------------------------------------------

  def getopts_parse_binlog():

  global host

  global user

  global password

  global port

  global fileContent

  global output

  global binlog

  global start_datetime

  global stop_datetime

  global start_position

  global stop_position

  global database

  global only_primary

  try:

  options, args = getopt.getopt(sys.argv[1:], “f:o:h:u:p:P:d:”, [“help”,“binlog=”,“output=”,“host=”,“user=”,“password=”,“port=”,“start-datetime=”,

  “stop-datetime=”,“start-position=”,“stop-position=”,“database=”,“only-primary=”])

  except getopt.GetoptError:

  print “參數(shù)輸入有誤?。。。?!”

  options = []

  if options == [] or options[0][0] in (“--help”):

  usage()

  sys.exit()

  print “正在獲取參數(shù)。..。.”

  for name, value in options:

  if name == “-f” or name == “--binlog”:

  binlog = value

  if name == “-o” or name == “--output”:

  output = value

  if name == “-h” or name == “--host”:

  host = value

  if name == “-u” or name == “--user”:

  user = value

  if name == “-p” or name == “--password”:

  password = value

  if name == “-P” or name == “--port”:

  port = value

  if name == “--start-datetime”:

  start_datetime = value

  if name == “--stop-datetime”:

  stop_datetime = value

  if name == “--start-position”:

  start_position = value

  if name == “--stop-position”:

  stop_position = value

  if name == “-d” or name == “--database”:

  database = value

  if name == “--only-primary” :

  only_primary = value

  if binlog == ‘’ :

  print “錯誤:請指定binlog文件名!”

  usage()

  if user == ‘’ :

  print “錯誤:請指定用戶名!”

  usage()

  if password == ‘’ :

  print “錯誤:請指定密碼!”

  usage()

  if database 《》 ‘’ :

  condition_database = “--database=” + “‘” + database + “’”

  else:

  condition_database = ‘’

  print “正在解析binlog.。..。”

  fileContent=os.popen(“%s %s --base64-output=DECODE-ROWS --start-datetime=‘%s’ --stop-datetime=‘%s’ --start-position=‘%s’ --stop-position=‘%s’ %s

  |grep ‘###’ -B 2|sed -e ‘s/### //g’ -e ‘s/^INSERT/##INSERT/g’ -e ‘s/^UPDATE/##UPDATE/g’ -e ‘s/^DELETE/##DELETE/g’ ”

  %(mysqlbinlog_bin,binlog,start_datetime,stop_datetime,start_position,stop_position,condition_database)).read()

  #print fileContent

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀

前 Amazon Robotics 高管出任全球生產(chǎn)戰(zhàn)略部負責(zé)人,助力公司擴張 休斯敦, April 01, 2026 (GLOBE NEWSWIRE) -- 具身 AI 領(lǐng)域新一代領(lǐng)軍企業(yè)?Persona AI 今...

關(guān)鍵字: VI RS AN AI

可持續(xù)發(fā)展與企業(yè)責(zé)任實踐再獲國際資本市場認可 香港2026年3月31日 /美通社/ -- 全球領(lǐng)先的互聯(lián)網(wǎng)社區(qū)創(chuàng)建者 - 網(wǎng)龍網(wǎng)絡(luò)控股有限公司 ("網(wǎng)龍"...

關(guān)鍵字: MSC AI 可持續(xù)發(fā)展 網(wǎng)絡(luò)游戲

2026 年 3 月 31 日,華為投資控股有限公司正式發(fā)布 2025 年年度報告。

關(guān)鍵字: 華為 2025年年報 AI 云計算

當(dāng)?shù)貢r間 3 月 30 日,專注在軌 AI 數(shù)據(jù)中心建設(shè)的美國初創(chuàng)企業(yè) Starcloud 宣布完成 1.7 億美元融資,投后估值 11 億美元,正式躋身獨角獸行列。

關(guān)鍵字: 太空數(shù)據(jù)中心 Starcloud AI 數(shù)據(jù)中心

安森美將上海設(shè)立為大中華區(qū)總部,并公布任命中國區(qū)總經(jīng)理的計劃

關(guān)鍵字: 氮化鎵 人工智能 數(shù)據(jù)中心

加利福尼亞州庫比蒂諾2026年3月27日 /美通社/ -- 全球領(lǐng)先的AI驅(qū)動型網(wǎng)絡(luò)安全解決方案提供商Cyble宣布,在兩項業(yè)內(nèi)最具聲望的獎項評選中榮獲重要表彰。 該公司榮獲...

關(guān)鍵字: 信息安全 網(wǎng)絡(luò)安全 BLE AI

深圳2026年3月27日 /美通社/ -- 2026年3月27日,CFM | MemoryS 2026在深圳盛大啟幕,全球存儲產(chǎn)業(yè)鏈精英齊聚,共探AI時代存儲產(chǎn)業(yè)的變革與未來。江波龍董事長、總經(jīng)理蔡華波先生受邀出席并發(fā)表...

關(guān)鍵字: MEMORY AI SSD 集成

北京2026年3月29日 /美通社/ -- 3月26日至29日,中國醫(yī)學(xué)裝備大會暨醫(yī)學(xué)裝備展覽會(CCDLM)在重慶悅來國際會議中心舉行。作為體外診斷領(lǐng)域的代表企業(yè)之一,萬泰生物攜"智慧健康生態(tài)展"亮...

關(guān)鍵字: CCD LM 人工智能 自動化

交易總額最高可達約27.5億美元,包括1.15億美元首付款。 這項由人工智能驅(qū)動的合作包含一項全球獨家許可,涵蓋涉及多個治療領(lǐng)域的系列項目。 上海2026年3月30日 /美通社/ -- 由生成式人工智能(...

關(guān)鍵字: 人工智能 ARMA 自動化技術(shù) SI

香港2026年3月30日 /美通社/ -- 諾亞控股有限公司("NOAH"或"公司")(紐約證券交易所代碼:NOAH;香港交易所代碼:6686)與旗下全球資產(chǎn)配置平臺 Olive...

關(guān)鍵字: AI OUTLOOK MANAGEMENT SE
關(guān)閉