Linux系統時間不對導致mysql初始化失敗:Data Dictionary initialization failed.(數據字典版本驗證失敗)

文章目錄

  • 問題描述
  • 分析
    • **問題原因分析**
    • **解決方案**
      • **1. 修正系統時間**
      • **2. 檢查數據目錄完整性**
      • **3. 重新初始化數據目錄**
      • **4. 調整 MySQL 配置**
    • **驗證與后續步驟**
    • **注意事項**
  • 其他說明

問題描述

mysql數據初始化失敗,發現系統時間是1970年,我將系統時間改成2025年,就能初始化成功了。

1970-01-01T01:44:08.999267Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.33)  MySQL Community Server - GPL.
1970-01-01 09:45:01+08:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.33-1.el8 started.
1970-01-01 09:45:01+08:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
1970-01-01 09:45:01+08:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.33-1.el8 started.
'/var/lib/mysql/mysql.sock' -> '/var/run/mysqld/mysqld.sock'
mysqld: [Warning] World-writable config file '/etc/mysql/conf.d/mysqld.cnf' is ignored.
1970-01-01T01:45:03.045951Z 0 [Warning] [MY-011068] [Server] The syntax '--skip-host-cache' is deprecated and will be removed in a future release. Please use SET GLOBAL host_cache_size=0 instead.
1970-01-01T01:45:03.049185Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.33) starting as process 1
1970-01-01T01:45:03.053492Z 0 [Warning] [MY-013242] [Server] --character-set-server: 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous.
1970-01-01T01:45:03.053523Z 0 [Warning] [MY-013244] [Server] --collation-server: 'utf8mb3_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
1970-01-01T01:45:03.074083Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
1970-01-01T01:45:03.338899Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
1970-01-01T01:45:03.348297Z 1 [ERROR] [MY-011096] [Server] No data dictionary version number found.
1970-01-01T01:45:03.348883Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
1970-01-01T01:45:03.349101Z 0 [ERROR] [MY-010119] [Server] Aborting
1970-01-01T01:45:03.949729Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.33)  MySQL Community Server - GPL.
1970-01-01 09:46:04+08:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.33-1.el8 started.
1970-01-01 09:46:05+08:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
1970-01-01 09:46:05+08:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.33-1.el8 started.
'/var/lib/mysql/mysql.sock' -> '/var/run/mysqld/mysqld.sock'
mysqld: [Warning] World-writable config file '/etc/mysql/conf.d/mysqld.cnf' is ignored.
1970-01-01T01:46:06.744074Z 0 [Warning] [MY-011068] [Server] The syntax '--skip-host-cache' is deprecated and will be removed in a future release. Please use SET GLOBAL host_cache_size=0 instead.
1970-01-01T01:46:06.747196Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.33) starting as process 1
1970-01-01T01:46:06.751486Z 0 [Warning] [MY-013242] [Server] --character-set-server: 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous.
1970-01-01T01:46:06.751518Z 0 [Warning] [MY-013244] [Server] --collation-server: 'utf8mb3_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
1970-01-01T01:46:06.771748Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
1970-01-01T01:46:07.034656Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
1970-01-01T01:46:07.044106Z 1 [ERROR] [MY-011096] [Server] No data dictionary version number found.
1970-01-01T01:46:07.044737Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
1970-01-01T01:46:07.044811Z 0 [ERROR] [MY-010119] [Server] Aborting
1970-01-01T01:46:07.644094Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.33)  MySQL Community Server - GPL.
1970-01-01T01:46:06.771748Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
1970-01-01T01:46:07.034656Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
1970-01-01T01:46:07.044106Z 1 [ERROR] [MY-011096] [Server] No data dictionary version number found.
1970-01-01T01:46:07.044737Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
1970-01-01T01:46:07.044811Z 0 [ERROR] [MY-010119] [Server] Aborting

分析

根據你提供的日志和描述,系統時間錯誤確實可能導致 MySQL 初始化失敗。以下是詳細分析和解決方案:


問題原因分析

  1. 系統時間錯誤

    • 日志中顯示的時間戳為 1970-01-01(Unix 時間起點),表明系統時間未正確配置。MySQL 在初始化時會依賴系統時間進行以下操作:
      • 數據字典版本驗證:MySQL 8.0 引入了新的數據字典(Data Dictionary),其元數據包含版本信息。如果系統時間錯誤(如設置為 1970 年),MySQL 可能無法正確解析這些信息,導致 No data dictionary version number found 錯誤。
      • 文件時間戳一致性:MySQL 初始化時會檢查數據目錄中文件的時間戳。若系統時間錯誤,可能導致 MySQL 認為文件時間早于預期,從而觸發初始化失敗。
  2. 配置或數據損壞

    • 如果系統時間錯誤導致 MySQL 無法正確讀取數據目錄中的文件(如 ibdata1ib_logfile* 等),可能引發數據字典初始化失敗。即使系統時間修正后,仍需檢查數據目錄是否損壞。

解決方案

1. 修正系統時間

  • 臨時修改(僅用于測試):
    # 設置正確的時間和時區
    sudo date -s "2025-06-20 15:35:00"
    sudo timedatectl set-timezone Asia/Shanghai
    
  • 永久同步時間(推薦):
    安裝并啟用 NTP 服務,確保系統時間自動同步:
    # 安裝 NTP
    sudo apt install ntp  # Debian/Ubuntu
    sudo yum install ntp  # CentOS/RHEL# 啟動并啟用 NTP 服務
    sudo systemctl enable ntp --now
    

2. 檢查數據目錄完整性

  • 手動檢查數據目錄
    確保 MySQL 數據目錄(通常是 /var/lib/mysql)權限和文件完整性:

    sudo chown -R mysql:mysql /var/lib/mysql
    sudo chmod -R 750 /var/lib/mysql
    
  • 修復數據文件
    如果數據目錄損壞,可以嘗試使用 mysqlcheck 工具修復:

    sudo mysqlcheck --all-databases --check-upgrade --auto-repair -u root -p
    

3. 重新初始化數據目錄

如果上述方法無效,可能需要重新初始化數據目錄:

  1. 備份現有數據(如有必要):

    sudo cp -r /var/lib/mysql /var/lib/mysql_backup
    
  2. 刪除舊數據目錄

    sudo rm -rf /var/lib/mysql/*
    
  3. 重新初始化

    sudo mysqld --initialize --user=mysql
    
  4. 啟動 MySQL

    sudo systemctl start mysql
    

4. 調整 MySQL 配置

  • 避免使用過時的字符集配置
    日志中提示 utf8 將在未來版本中映射到 utf8mb4。更新 my.cnf 配置文件:

    [mysqld]
    character-set-server = utf8mb4
    collation-server = utf8mb4_unicode_ci
    
  • 移除廢棄參數
    日志中提示 --skip-host-cache 已棄用,替換為:

    SET GLOBAL host_cache_size = 0;
    

驗證與后續步驟

  1. 檢查 MySQL 日志
    查看 /var/log/mysql/error.log/var/log/mysqld.log,確認是否仍有錯誤。

  2. 測試數據庫連接

    mysql -u root -p -e "SHOW DATABASES;"
    
  3. 監控系統時間
    使用 ntpstattimedatectl 確保系統時間同步:

    timedatectl
    

注意事項

  • 避免手動修改系統時間:長期依賴手動修改時間可能導致其他服務異常(如證書驗證失敗、日志混亂等)。務必使用 NTP 自動同步。
  • 備份數據:在重新初始化數據目錄前,務必備份重要數據。
  • 升級 MySQL:如果你使用的是較舊版本(如 8.0.33),建議升級到最新版本以修復潛在問題。

如果問題仍未解決,請提供完整的 MySQL 錯誤日志和 my.cnf 配置文件內容,以便進一步排查。

其他說明

上海107 ubuntu22.04 算能盒子硬件時鐘是有電的,能夠取得時間,但是初始時間未設置,為1970年,導致mysql數據初始化時失敗。

猜測之前的英偉達盒子,可能系統啟動的時候做了個判斷,如果硬件時間是1970年附近,就把硬件時鐘設置為2023年2月,所以一直沒問題。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/85560.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/85560.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/85560.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

有趣的python程序Part1:如何根據記憶曲線使用python編寫一個單詞記憶默寫程序

目錄 前言 1. 數據管理模塊 2. 記憶算法實現 3. 持久化存儲 4. 用戶界面實現 5.整合與測試 前言 此篇文章為“有趣的python程序”專欄的第一篇文章,本專欄致力于分享一些有趣的編程作品,如果能夠使您產生興趣,不妨來動手改編使之成為更好…

【案例】性能優化在持續集成與持續交付中的應用

【案例】性能優化在持續集成與持續交付中的應用 為了更好地理解性能優化在CI/CD流程中的實際應用,本節將結合一個典型案例,從代碼提交到部署上線的完整流程中,講解如何嵌入性能檢測與自動化優化機制,并使用結構化流程圖直觀展示關…

P7 QT項目----會學天氣預報(完結)

7.8 QMap 在 Qt 中,如果你想要將 JSON 數據解析到一個 QMap 中,你可以遍歷 JSON 對象的所有鍵值對,并將它們添加到 QMap 里。這個方法特別適合于當你的 JSON 對象是一個簡單的鍵值對集合時。以下是一個如何實現這一點的示例。 示例&#…

操作系統筆記(關于進程引入和狀態的切換)

1.前言 今天下午結束了英語的四六級考試,終于是結束了,最近的這個考試太密集,周四的專業基礎課考試,周五的這個線性代數的考試和這個周六的英語四六級考試,吧我都要烤焦了,最近也是疲于應對這個考試&#…

M1芯片macOS安裝Xinference部署大模型

如果你看的是官方手冊:安裝 — Xinference 千萬不要直接運行: pip install "xinference[all]" 會遇到幾個問題: 1)Python版本如果太新可能安裝失敗 2)全量安裝會失敗 3)未科學上網可能會time…

【ONNX量化實戰】使用ONNX Runtime進行靜態量化

目錄 什么是量化量化實現的原理實戰準備數據執行量化 驗證量化結語 什么是量化 量化是一種常見的深度學習技術,其目的在于將原始的深度神經網絡權重從高位原始位數被動態縮放至低位目標尾數。例如從FP32(32位浮點)量化值INT8(8位…

【量子計算】格羅弗算法

文章目錄 🔍 一、算法原理與工作機制? 二、性能優勢:二次加速的體現🌐 三、應用場景?? 四、局限性與挑戰🔮 五、未來展望💎 總結 格羅弗算法(Grover’s algorithm)是量子計算領域的核心算法之…

C++ 互斥量

在 C 中,互斥量(std::mutex)是一種用于多線程編程中保護共享資源的機制,防止多個線程同時訪問某個資源,從而避免數據競爭(data race)和不一致的問題。 🔒 一、基礎用法:s…

CSS Content符號編碼大全

資源寶整理分享:?https://www.httple.net? 前端開發中常用的特殊符號查詢工具,包含Unicode編碼和HTML實體編碼,方便開發者快速查找和使用各種符號。支持基本形狀、箭頭、數學符號、貨幣符號等多種分類。 前端最常用符號 圖標形狀十進制十…

RPC常見問題回答

項目流程和架構設計 1.服務端的功能: 1.提供rpc調用對應的函數 2.完成服務注冊 服務發現 上線/下線通知 3.提供主題的操作 (創建/刪除/訂閱/取消訂閱) 消息的發布 2.服務的模塊劃分 1.網絡通信模塊 net 底層套用的moude庫 2.應用層通信協議模塊 1.序列化 反序列化數…

【JavaEE】(3) 多線程2

一、常見的鎖策略 1、樂觀鎖和悲觀鎖 悲觀鎖:預測鎖沖突的概率較高。在鎖中加阻塞操作。樂觀鎖:預測鎖沖突的概率較低。使用忙等/版本號等,不產生阻塞。 2、輕量級鎖和重量級鎖 重量級鎖:加鎖的開銷較大,線程等待鎖…

創客匠人服務體系解析:知識 IP 變現的全鏈路賦能模型

在知識服務行業深度轉型期,創客匠人通過 “工具 陪跑 圈層” 的三維服務體系,構建了從 IP 定位到商業變現的完整賦能鏈條。這套經過 5 萬 知識博主驗證的模型,不僅解決了 “內容生產 - 流量獲取 - 用戶轉化” 的實操難題,更推動…

國產ARM/RISCV與OpenHarmony物聯網項目(六)SF1節點開發

一、終端節點功能設計 1. 功能說明 終端節點設計的是基于鴻蒙操作系統的 TCP 服務器程序,用于監測空氣質量并提供遠程控制功能。與之前的光照監測程序相比,這個程序使用 E53_SF1 模塊(煙霧 / 氣體傳感器),主要功能包…

Plotly圖表全面使用指南 -- Displaying Figures in Python

文中內容僅限技術學習與代碼實踐參考,市場存在不確定性,技術分析需謹慎驗證,不構成任何投資建議。 在 Python 中顯示圖形 使用 Plotly 的 Python 圖形庫顯示圖形。 顯示圖形 Plotly的Python圖形庫plotly.py提供了多種顯示圖形的選項和方法…

getx用法詳細解析以及注意事項

源碼地址 在 Flutter 中,Get 是來自 get 包的一個輕量級、功能強大的狀態管理與路由框架,常用于: 狀態管理路由管理依賴注入(DI)Snackbar / Dialog / BottomSheet 管理本地化(多語言) 下面是 …

深度學習:人工神經網絡基礎概念

本文目錄: 一、什么是神經網絡二、如何構建神經網絡三、神經網絡內部狀態值和激活值 一、什么是神經網絡 人工神經網絡(Artificial Neural Network, 簡寫為ANN)也簡稱為神經網絡(NN),是一種模仿…

Unity2D 街機風太空射擊游戲 學習記錄 #12環射道具的引入

概述 這是一款基于Unity引擎開發的2D街機風太空射擊游戲,筆者并不是游戲開發人,作者是siki學院的涼鞋老師。 筆者只是學習項目,記錄學習,同時也想幫助他人更好的學習這個項目 作者會記錄學習這一期用到的知識,和一些…

網站如何啟用HTTPS訪問?本地內網部署的https網站怎么在外網打開?

在互聯網的世界里,數據安全已經成為了每個網站和用戶都不得不面對的問題。近期,網絡信息泄露事件頻發,讓越來越多的網站開始重視起用戶數據的安全性,因此啟用HTTPS訪問成為了一個熱門話題。作為一名網絡安全專家,我希望…

計算機網絡-----詳解網絡原理TCP/IP(上)

文章目錄 📕1. UDP協議??1.1 UDP的特點??1.2 基于UDP的應用層協議 📕2. TCP協議??2.1 TCP協議段格式??2.2 TCP協議特點之確認應答??2.3 TCP協議特點之超時重傳??2.4 TCP協議特點之連接管理??2.5 TCP協議特點之滑動窗口??2.6 TCP協議特點…

Lora訓練

一種大模型高效訓練方式&#xff08;PEFT&#xff09; 目標&#xff1a; 訓練有限的ΔW&#xff08;權重更新矩陣&#xff09; ΔW為低秩矩陣→ΔWAB&#xff08;其中A的大小為dr, B的大小為rk&#xff0c;且r<<min(d,k)&#xff09;→ 原本要更新的dk參數量大幅度縮減…