<del id="nnjnj"></del><track id="nnjnj"></track>

<p id="nnjnj"></p>

<address id="nnjnj"></address>

    <pre id="nnjnj"><pre id="nnjnj"></pre></pre>

      <noframes id="nnjnj"><ruby id="nnjnj"><ruby id="nnjnj"></ruby></ruby>

      • 自動秒收錄
      • 軟件:1973
      • 資訊:56215|
      • 收錄網站:181185|

      IT精英團

      操作系統宕機 如何找回我的MySQL記錄?

      操作系統宕機 如何找回我的MySQL記錄?

      瀏覽次數:
      評論次數:
      編輯: 樂詠
      信息來源: ITPUB
      更新日期: 2022-04-24 21:21:47
      摘要

      以下文章來源于公眾號-數據和云,作者楊豹一、概述如果Linux操作系統宕機,啟動不了,救援模式(rescueinstalledsystem)也行不通的時候,那么該機器上的MySQL數據還能恢復嗎?

      • 正文開始
      • 相關閱讀
      • 推薦作品

      以下文章來自微信官方賬號——數據與云,作者包楊。

      一、概述

      如果Linux操作系統宕機,無法啟動,救援安裝的系統不起作用,這臺機器上的MySQL數據還能恢復嗎?如果有,如何恢復?這個問題我們來做個實驗。

      二、環境介紹

      準備兩臺虛擬機,虛擬機軟件是virtualbox。

      IP 192.168.56.81 MySQL在這個虛擬機上運行,然后模擬這個機器崩潰,然后拯救MySQL數據。

      “81”上的文件:

      “81”上的MySQL數據庫:

      IP 192.168.56.71該虛擬機為新機,未來需要將“81”上的數據庫遷移到“71”上。

      三、開始實驗

      刪除“81”機器上的/boot目錄文件,然后強制重新引導。

      此時系統啟動失敗,報錯: file '/grup 2/i386-PC/normal . mod '未找到。

      關閉故障虛擬機“81”并選擇強制退出。

      將故障虛擬機“81”的硬盤掛載到新虛擬機“71”上,啟動新虛擬機“71”。

      從lsblk可以看出,sdb是新掛載的磁盤。

      建立一個掛載點,掛載一個新磁盤,并提示mount:未知文件系統類型“lvm2 _ member”

      [r

      oot@oracletest ~]# mkdir /newmnt
      [root@oracletest ~]# mount /dev/sdb2 /newmnt
      mount: unknown filesystem type 'LVM2_member'

      這是因為/dev/sdb2是一個物理卷,不能直接掛載,需要掛載該物理卷對應的邏輯卷。

      查看邏輯卷(這個可能需要等一會才查看得到),可以看到LV Status為NOT available。

      使用vgchange -ay /dev/vg激活邏輯卷組(vg是邏輯卷組名字),可以看到LV Status為available。

      掛載邏輯卷,可以看到文件已經找回來了。

      [root@oracletest ~]# mount /dev/vg/lvroot /newmnt
      [root@oracletest ~]# cd /newmnt
      [root@oracletest newmnt]# ls
      bin  boot  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
      [root@oracletest newmnt]# cd /newmnt/root
      [root@oracletest root]# ls
      important.txt  install.sh  mysql-8.0.22-linux-glibc2.12-x86_64.tar.xz
      [root@oracletest root]# cat important.txt
      this is important text!

      接下來是恢復MySQL數據庫。原理很簡單,跟遷移MySQL沒區別,就是將原MySQL文件遷移到新的目錄,然后起庫。

      首先在新的虛擬機“71”上面安裝跟故障虛擬機中相同版本的MySQL(安裝過程略……)。

      查看原MySQL的參數文件,確定MySQL日志文件和數據文件的目錄。

      [root@oracletest root]# cat /newmnt/etc/my.cnf
      [mysqld]
      # basic settings #
      ...
      basedir = /usr/local/mysql
      datadir = /opt/mydata/data
      tmpdir = /opt/mydata/tmp
      log_bin = /opt/mydata/log/binlog/binlog
      ...

      查看原MySQL的數據文件。

      [root@oracletest root]# cd /newmnt/opt/mydata/
      [root@oracletest mydata]# ll
      total 12
      drwxr-xr-x 6 995 1000 4096 Feb 11 14:03 data
      drwxr-xr-x 4 995 1000 4096 Feb 11 14:03 log
      drwxr-xr-x 2 995 1000 4096 Feb 11 14:03 tmp

      創建相關目錄。

      mkdir -p /opt/mydata/data
      mkdir -p /opt/mydata/tmp
      mkdir -p /opt/mydata/log/binlog
      chown -R mysql:mysql /opt/mydata

      拷貝MySQL文件到對應的目錄。

      cp -r /newmnt/etc/my.cnf /etc
      cp -r /newmnt/opt/mydata/data /opt/mydata/
      cp -r /newmnt/opt/mydata/log/binlog /opt/mydata/log/
      chown -R mysql:mysql /opt/mydata # 這一步的目的是由于原始文件在掛到新的機器上時所屬用戶和所屬組會丟失,需要重新更改成mysql組

      啟動MySQL。

      [root@oracletest ~]# service mysql start
      Starting MySQL.2021-04-08T11:39:26.437943Z mysqld_safe error: log-error set to '/opt/mydata/log/error.log', however file don't exists. Create writable for user 'mysql'.
      The server quit without updating PID file (/opt/mydata/data[FAILED]est.pid).

      報錯,提示沒有error.log,那就創建一個,再啟動MySQL。

      [root@oracletest ~]# touch /opt/mydata/log/error.log
      [root@oracletest ~]# chown -R mysql:mysql /opt/mydata/log/error.log
      [root@oracletest ~]# service mysql start
      Starting MySQL..      [  OK  ]

      可以看到數據庫的表也找回來了!


       

      四、總結

      1. 只要沒有刪除數據庫的數據文件,即使系統起不來了,我們仍然可以將系統的盤拆下來掛到新的機器上,將數據拷貝出來。

      2. 養成備份的習慣,正式、仿真、開發、測試環境都需要。

      關于作者

      楊豹,國泰君安專職DBA,熱愛Oracle、MySQL數據庫技術,熟悉shell,python編程,熟悉zabbix監控。



      微服務架構下基于Prometheus構建綜合監控平臺的最佳實踐
      ? 上一篇 2022-04-24
      數據治理 區分系統、機制、流程的概念很重要
      下一篇 ? 2022-04-25
      • 胡迪核心知識點詳解(好文章合集)
        1閱讀 0條評論 個贊
        以下文章來源于公眾號-3分鐘秒懂大數據,作者在IT中穿梭旅行在Flink實時流中,經常會通過FlinkCDC插件讀取Mysql數據,然后寫入Hudi中。所以在執行上述操作時,需要了解……
      • 前端面試必須解決網絡中的跨域問題
        0閱讀 0條評論 個贊
        什么是跨域瀏覽器有一個重要的安全策略,稱之為「同源策略」其中,源=協議+主機+端口源=協議+主機+端口源=協議+主機+端口,兩個源相同,稱之為同源,兩個源不同,稱之為跨源或跨域比如:源1源2是否同……
      • 如何在Bash腳本中使用強大的Linux測試命令
        0閱讀 0條評論 個贊
        Linuxtest命令是Shell內置命令,用來檢測某個條件是否成立。test通常和if語句一起使用,并且大部分if語句都依賴test??梢詫⒁粋€元素與另一個元素進行比較,但它更?!?/div>
      • 真正的建筑設計是什么樣子的?
        1閱讀 0條評論 個贊
        什么是架構和架構本質在軟件行業,對于什么是架構,都有很多的爭論,每個人都有自己的理解。此君說的架構和彼君理解的架構未必是一回事。因此我們在討論架構之前,我們先討論架構的概念定義,概念是人認識這個世界的……
      • 10分鐘了解云原生 值得收藏~
        0閱讀 0條評論 個贊
        文章轉載:奇妙的Linux世界我們已經進入云計算下半場,不再像上半場在糾結要不要上云,而是討論怎么上云?才能把云計算的價值發揮到淋漓盡致。如何把云計算與不同的業務場景深度結合?如何讓技術真正作用于企業……
      發表評論 共有條評論
      用戶名: 密碼:
      驗證碼: 匿名發表
      • 如何執行超過100M的SQL腳本?
        2閱讀 0條評論 個贊
        技術_菜鳥https://www.cnblogs.com/hai-ping/p/3939150.html最近遇到一個問題,在SQLServer的查詢分析器里面執行一個超過100MB的數據庫腳本,發現……
      • 胡迪核心知識點詳解(好文章合集)
        1閱讀 0條評論 個贊
        以下文章來源于公眾號-3分鐘秒懂大數據,作者在IT中穿梭旅行在Flink實時流中,經常會通過FlinkCDC插件讀取Mysql數據,然后寫入Hudi中。所以在執行上述操作時,需要了解……
      • 卡夫卡3.0新功能全暴露 好香??!
        1閱讀 0條評論 個贊
        以下文章來源于云加社區,作者屈志平導語|kafka3.0的版本已經試推行去zk的kafka架構了,如果去掉了zk,那么在kafka新的版本當中使用什么技術來代替了zk的位置呢,接下來我們一起來一探究竟……
      • epoll這個Linux高性能服務的本質真的不簡單
        1閱讀 0條評論 個贊
        設想一個場景:有100萬用戶同時與一個進程保持著TCP連接,而每一時刻只有幾十個或幾百個TCP連接是活躍的(接收TCP包),也就是說在每一時刻進程只需要處理這100萬連接中的一小部分連接。那么,如何才……
      • MYSQL如果索引優化僅僅是添加索引 太年輕而不簡單
        1閱讀 0條評論 個贊
        MYSQL的索引優化,如果此時此刻看到索引的優化,僅僅想到添加適合的索引,是不完全的,索引的優化本身就具有很多的不確定性。1索引會隨著時間的推移,有性能的衰減2索引會隨著數據量的增加,有性能的衰……
      • 如何優雅地升級Kubernetes集群的Docker和Containerd版本
        1閱讀 0條評論 個贊
        前言公司用的k8s集群是“多環境合一”的方式,集群流量入口也摒棄了常見的traefik和ingress-nginx,直接用了一個國內不常見的底層基于Envoy的APIGateway網關服務。當然還有……
      • 誤操作離線丟棄和恢復場景測試的業務影響——來自“血”的教訓
        0閱讀 0條評論 個贊
        在數據庫恢復過程中,比如我們用了第三方的備份工具,在實施恢復操作時會導出需要的某個表空間這樣可以大大減少恢復時間,是十分值得推薦的做法,這個過程中由于修改控制文件中數據文件的相關信息,需要執行alte……
      • 如何正確計算Kubernetes容器的CPU利用率
        1閱讀 0條評論 個贊
        本文轉自博客園,原文:https://www.cnblogs.com/apink/p/15767687.html,版權歸原作者所有。參數解釋使用Prometheus配置kubernetes環境……
      • 一萬字長文講解HBase讀寫性能優化
        2閱讀 0條評論 個贊
        一、HBase讀優化1.HBase客戶端優化和大多數系統一樣,客戶端作為業務讀寫的入口,姿勢使用不正確通常會導致本業務讀延遲較高實際上存在一些使用姿勢的推薦用法,這里一般需要關注四個問題:1)s……
      • Java“年度加密漏洞”修復 網友:更多堅持Java 8的理由
        9閱讀 0條評論 個贊
        文|Travis出品|OSC開源社區(ID:oschina2013)甲骨文于昨日推送了安全更新修復了一個漏洞,該漏洞允許攻擊者偽造某些種類的SSL證書和握手、雙因素認證信息,以及由一系列廣……
      • MySQL支持哈希索引嗎?(收藏)
        1閱讀 0條評論 個贊
        經常有朋友問,MySQL的InnoDB到底支不支持哈希索引?對于InnoDB的哈希索引,確切的應該這么說:(1)InnoDB用戶無法手動創建哈希索引,這一層上說,InnoDB確實不支持哈希索引;(2)……
      • Linux的10個最危險的命令
        0閱讀 0條評論 個贊
        rm-rf命令該命令可能導致不可恢復的系統崩壞。>rm-rf/#強制刪除根目錄下所有東西。>rm-rf*#強制刪除當前目錄的所有文件。>rm-rf.#強制刪除當前文件夾及其子文件夾。執行rm-r……
      • 7 種提升Spring Boot吞吐量神技!
        0閱讀 0條評論 個贊
        一、異步執行實現方式二種:1.使用異步注解@aysnc、啟動類:添加@EnableAsync注解2.JDK8本身有一個非常好用的Future類——CompletableFuture@AllArg……
      • Spring Boot的表現太差了 我教你幾招輕松搞定
        0閱讀 0條評論 個贊
        文章……
      • Python極簡編碼規范
        1閱讀 0條評論 個贊
        本文是閱讀《PythonCodingRule》之后總結的最為精華及簡單的編碼規范,根據每個人不同喜好有些地方會有不同的選擇,我只是做了對自己來說最簡單易行的選擇,僅供大家參考。1、重要原則a.保持……
      • 代碼| C語言根據可執行文件名獲取進程運行信息
        1閱讀 0條評論 個贊
        如下示例可根據可執行文件名獲得線程數、虛擬內存占用大小、物理內存占用大小、進程PID、CPU占用率和進程啟動次數等信息。1.程序源碼main.c:#include#include<……
      • JD.COM面試問題:ElasticSearch深度分頁解決方案
        0閱讀 0條評論 個贊
        以下文章來源于月伴飛魚,作者日常加油站前言Elasticsearch是一個實時的分布式搜索與分析引擎,在使用過程中,有一些典型的使用場景,比如分頁、遍歷等。在使用關系型數據庫中,我們被告知要注意甚至……
      • 本文將帶您了解kubernetes的架構和組件!
        1閱讀 0條評論 個贊
        kubernetes架構目標kubernetes是生產級的,用于跨主機部署,擴展,管理和組合應用程序容器的基礎設施。kubernetes不僅僅是“容器編排”,他更加主要的解決方向是消除協調計算資源,網……
      • 采訪者:告訴我們SpringAOP的底層代理模型
        2閱讀 0條評論 個贊
        來源|Java技術指北(ID:javanorth)代理模式相信大家經常聽說,在設計模式中相對而言是比較難理解的。這次指北君來給大家通俗的介紹介紹。1、什么是代理模式Provideasurrog……
      • Spring云應用的優雅下線和灰度發布
        2閱讀 0條評論 個贊
        前言在生產環境中,如何保證在服務升級的時候,不影響用戶的體驗,這個是一個非常重要的問題。如果在我們升級服務的時候,會造成一段時間內的服務不可用,這就是不夠優雅的。那什么是優雅的呢?主要就是指在服務升級……
      最近發布資訊
      更多
      警花高潮嗷嗷叫
      <del id="nnjnj"></del><track id="nnjnj"></track>

      <p id="nnjnj"></p>

      <address id="nnjnj"></address>

        <pre id="nnjnj"><pre id="nnjnj"></pre></pre>

          <noframes id="nnjnj"><ruby id="nnjnj"><ruby id="nnjnj"></ruby></ruby>