0x00 事件 因為本地的伺服器硬體出現故障,導致一臺 Windows 系統的開發環境掛了,且無法短時間內恢復狀態。 應急方案是使用了雲上的系統重建了開發環境。 開發人員說需要掛了的那台 Windows 開發環境中的資料庫數據,因為一些數據只有那個環境裡面有。於是找了把螺絲刀把硬碟拆下來,用移動硬碟 ...
0x00 事件
因為本地的伺服器硬體出現故障,導致一臺 Windows 系統的開發環境掛了,且無法短時間內恢復狀態。
應急方案是使用了雲上的系統重建了開發環境。
開發人員說需要掛了的那台 Windows 開發環境中的資料庫數據,因為一些數據只有那個環境裡面有。於是找了把螺絲刀把硬碟拆下來,用移動硬碟盒將資料庫的數據目錄拉了出來,因為 Windows 環境是使用的是MySQL作為資料庫存儲數據,所以準備用「冷備」的方式將數據導出。
吾在 Linux 系統中裝了 MySQL,停下服務後將備份的 Windows 資料庫整個數據目錄覆蓋進去數據目錄,接著重啟服務,啟動失敗了:
Jan 15 12:01:30 iZo7e61fz42ik0Z mariadb-prepare-db-dir[7537]: Database MariaDB is probably initiali
Jan 15 12:01:30 iZo7e61fz42ik0Z mariadb-prepare-db-dir[7537]: If this is not the case, make sure th
Jan 15 12:01:31 iZo7e61fz42ik0Z mysqld_safe[7567]: 190115 12:01:31 mysqld_safe Logging to '/var/log
Jan 15 12:01:31 iZo7e61fz42ik0Z mysqld_safe[7567]: 190115 12:01:31 mysqld_safe Starting mysqld daem
Jan 15 12:01:32 iZo7e61fz42ik0Z systemd[1]: mariadb.service: control process exited, code=exited st
Jan 15 12:01:32 iZo7e61fz42ik0Z systemd[1]: Failed to start MariaDB database server.
-- Subject: Unit mariadb.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit mariadb.service has failed.
跟著這個錯誤,在網上找到一些方法仍然沒能解決。
0x01 恢復
於是思考是不是系統環境造成,然後在另一臺 Windows 機器上安裝了 MySQL,重現之前那台 Windows 的資料庫環境,再次嘗試以冷備的方式導出開發數據。
安裝完MySQL後停止服務:
覆蓋目錄:
以無密碼的方式啟動服務,執行完命令之後終端會 hang 住:
!
再打開一個終端登錄資料庫導出 SQL:
問題解決。
總結:此次數據遷移的難題在與在 Linux 環境的 Mysql 中導入 Windows 環境 MySQL 的 data 目錄,導致 Linux 中的 MySQL 無法運行服務從而無法導出數據,在筆者的解決方法中,就是還原其本身的環境——在 Windows 中建立 MySQL 服務,將 data 覆蓋進去解決。