暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

[ACDU翻译] MySQL 14.1 数据字典模式

原创 由迪 2022-01-17
474

数据字典表受到保护,只能在 MySQL 的调试版本中访问。INFORMATION_SCHEMA但是,MySQL 支持通过表和 SHOW语句访问存储在数据字典表中的数据 。有关组成数据字典的表的概述,请参阅 数据字典表

MySQL 系统表在 MySQL 8.0 中仍然存在,可以通过在系统数据库上发出SHOW TABLES 语句来查看。mysql一般来说,MySQL数据字典表和系统表的区别在于,数据字典表包含执行SQL查询所需的元数据,而系统表包含时区、帮助信息等辅助数据。MySQL 系统表和数据字典表在升级方式上也有所不同。MySQL 服务器管理数据字典升级。SQL 服务器。请参阅如何升级数据字典。升级 MySQL 系统表需要运行完整的 MySQL 升级过程。请参阅 第 2.11.3 节,“MySQL 升级过程升级的内容”.

数据字典如何升级

MySQL 的新版本可能包括对数据字典表定义的更改。此类更改存在于新安装的 MySQL 版本中,但在执行 MySQL 二进制文件的就地升级时,会在使用新二进制文件重新启动 MySQL 服务器时应用更改。在启动时,将服务器的数据字典版本与存储在数据字典中的版本信息进行比较,以确定是否应该升级数据字典表。如果需要并支持升级,服务器会创建具有更新定义的数据字典表,将持久化的元数据复制到新表,用新表原子替换旧表,并重新初始化数据字典。如果不需要升级,

数据字典表的升级是一个原子操作,这意味着所有的数据字典表都会根据需要进行升级,否则操作会失败。如果升级操作失败,服务器启动失败并出现错误。在这种情况下,旧的服务器二进制文件可以与旧的数据目录一起使用来启动服务器。当再次使用新的服务器二进制文件启动服务器时,将重新尝试数据字典升级。

通常,数据字典表升级成功后,无法使用旧的服务器二进制文件重新启动服务器。因此,升级数据字典表后,不支持将 MySQL 服务器二进制文件降级到以前的 MySQL 版本。

mysqld 选项 可--no-dd-upgrade用于防止数据字典表在启动时自动升级。当--no-dd-upgrade指定时,服务器发现服务器的数据字典版本与数据字典中存储的版本不同,启动失败,错误提示禁止数据字典升级。

使用 MySQL 的调试版本查看数据字典表

数据字典表默认受保护,但可以通过编译带有调试支持的 MySQL(使用 -DWITH_DEBUG=1 CMake选项)并指定 +d,skip_dd_table_access_check debug选项和修饰符来访问。有关编译调试版本的信息,请参阅 第 5.9.1.1 节,“编译 MySQL 以进行调试”

警告

不建议直接修改或写入数据字典表,这可能会导致您的 MySQL 实例无法运行。

使用调试支持编译 MySQL 后,使用此 SET语句使数据字典表对mysql客户端会话可见:

mysql> SET SESSION debug='+d,skip_dd_table_access_check';

使用此查询检索数据字典表的列表:

mysql> SELECT name, schema_id, hidden, type FROM mysql.tables where schema_id=1 AND hidden='System';

用于SHOW CREATE TABLE查看数据字典表定义。例如:

mysql> SHOW CREATE TABLE mysql.catalogs\G
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论