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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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参数量大幅度缩减…