常见问题¶
重要的
从雷竞技下载官网Percona Server for MySQL 8.0.28-19,不再支持TokuDB存储引擎。我们已经从安装包中删除了存储引擎,并在二进制构建中禁用了存储引擎。
从雷竞技下载官网Percona Server for MySQL 8.0.26-16,二进制构建和包包括但禁用TokuDB存储引擎插件。tokudb_enabled选项和tokudb_backup_enabled选项控制插件的状态,默认设置为FALSE。尝试加载插件的结果是插件无法初始化并打印弃用消息。
我们建议将数据迁移到MyRocks存储引擎.为了使插件能够迁移到另一个存储引擎,在my.cnf文件中将tokudb_enabled和tokudb_backup_enabled选项设置为TRUE,并重新启动服务器实例。然后,您可以加载插件。
中声明TokuDB存储引擎已弃用雷竞技下载官网Percona Server for MySQL 8.0.有关更多信息,请参阅Percona博客文章:雷竞技下载官网注意:TokuDB支持的变化和未来从Percona服务器删除MySQL 8.0雷竞技下载官网.
本部分包含有关的常见问题TokuDB以及相关软件。
事务操作¶
TokuDB支持哪些事务操作?¶
TokuDB支持开始事务,结束交易,提交,回滚,保存点,RELEASE SAVEPOINT.
TokuDB和文件系统¶
如何确定哪些文件属于模式中的各个表和索引?¶
tokudb_file_map插件列出了所有分形树索引及其对应的数据文件。的internal_file_name实际的文件名(在数据文件夹中)。
mysqlSELECT*从information_schema.tokudb_file_map;
输出可以是:
+--------------------------+---------------------------------------+---------------+-------------+------------------------+ | dictionary_name | internal_file_name | table_schema | table_name | table_dictionary_name | +--------------------------+---------------------------------------+---------------+-------------+------------------------+ | ./ 测试/ tmc-key-idx_col2 |。/ _test_tmc_key_idx_col2_a_14。“Tokudb | test | TMC | key_idx_col2 | | ./test/ TMC -main | ./_test_tmc_main_9_14.”Tokudb | test | TMC | main | | ./test/ TMC -status | ./_test_tmc_status_8_14. /test/ TMC -statustokudb | | tmc |测试状态 | +--------------------------+---------------------------------------+---------------+-------------+------------------------+
完整的磁盘¶
当磁盘系统被填满时会发生什么?¶
磁盘系统可能在大容量负载操作期间被填满,例如在文件中加载数据或创建索引,或者在增量操作期间插入.
在大容量情况下,耗尽磁盘空间将导致语句失败ERROR 1030 (HY000):从存储引擎得到错误1.散货机临时占用的空间将被释放。如果出现这种情况,可以为临时文件使用单独的物理磁盘(有关详细信息,请参阅tokudb_tmp_dir)。如果服务器空闲空间不足TokuDB将断言服务器以防止现有数据文件的数据损坏。
否则,磁盘空间可能在非批量操作期间运行不足。当可用空间低于用户可配置的预留(默认为5%)时,将阻止插入,并中止执行插入的事务。如果磁盘完全满了,那么TokuDB将冻结,直到有可用的磁盘空间。
磁盘系统详细信息:
- 有一个空闲空间储备要求,这是一个用户可配置的参数,作为文件系统中总空间的百分比。默认准备金是5%。该值在全局变量tokudb_fs_reserve_percent中可用。我们建议这个储备至少是物理内存大小的一半。
TokuDB每5秒轮询一次文件系统,以确定有多少可用的空闲空间。如果空闲空间低于预留空间,则禁止进一步插入表。任何试图插入行的事务都将被中止。当文件系统中有两倍的可用存储空间时重新启用插入(因此释放少量磁盘存储空间不足以恢复插入)。当空闲空间低于预留的两倍时,警告消息将发送到系统错误日志,当空闲空间低于预留时再次发送警告消息。
即使禁止插入,文件系统仍然有可能被完全填满。例如,这可能是因为另一个存储引擎或另一个应用程序消耗了磁盘空间。
如果文件系统已经完全满了,那么TokuDB将冻结。它不会崩溃,但它不会响应大多数SQL命令,直到有一些可用的磁盘空间。当TokuDB在此状态下被冻结,它仍然会响应以下命令:
显示引擎TokuDB状态;输出可以是:
腾出可用的磁盘空间将允许存储引擎继续运行,但仍然禁止插入,直到空闲磁盘空间的两倍。请注意
引擎状态显示一个字段,指示磁盘空闲空间是高于预留值的两倍、低于预留值的两倍还是低于预留值。如果磁盘已满,它还会显示一个特殊的警告。
为了在这个系统上提供可用的空间,您可以:
向文件系统添加一些磁盘空间。
手动删除部分非tokudb文件。
如果磁盘没有完全满,您可以通过中止任何非常旧的事务来回收空间。旧事务可能会消耗恢复日志中的大量磁盘空间。
如果磁盘没有完全满,可以从磁盘中删除索引或删除表TokuDB数据库。
从现有表中删除大量行,然后关闭表可能会释放一些空间,但也可能不会。删除行可能只是在里面留下未使用的空间(可用于新插入)TokuDB数据文件而不是压缩文件(内部碎片)。
细则:
的TokuDB存储引擎最多可以同时使用三个独立的文件系统,分别用于数据、恢复日志和错误日志。所有三个都受到监控,如果三个raybet雷竞技竞猜在线官网中的任何一个低于相关阈值,那么将发出警告消息,并可能禁止插入。
除非可用磁盘空间超过相关阈值至少一分钟,否则错误日志中的警告消息不会重复。如果磁盘空闲空间在限制附近波动,则可以防止错误日志中出现过量消息。
即使没有其他存储引擎或其他应用程序正在运行,仍然有可能TokuDB在执行行删除和查询等操作或使用检查点时消耗更多的磁盘空间。这种情况的发生是因为TokuDB可以在高效的时候而不是在应用程序发出插入时写入缓存的信息,因为除了插入(如删除)之外的操作会创建日志条目,而且还因为内部的碎片TokuDB数据文件。
系统启动后,不能更改tokudb_fs_reserve_percent变量。它只能被插入
my.cnf或者在mysqld命令行上。
备份¶
如何用TokuDB表备份系统?¶
使用Percona TokuBackup雷竞技下载官网进行备份¶
TokuDB能够使用Percona TokuBackup执行在线备份。雷竞技下载官网执行备份命令备份到“/path/to/ Backup”;.这将创建服务器备份,并在完成时返回。另一个服务器可以使用源服务器上的二进制文件的副本来使用备份。通过“执行”可以查看备份进度显示PROCESSLIST;.TokuBackup生成运行的副本MySQL备份过程结束时保持一致的服务器。可以通过设置tokudb_backup_throttle服务器变量来限制从源文件复制到目标文件的线程。更多信息请查看Percona TokuBackup。雷竞技下载官网
以下条件适用:
*目前,*TokuBackup*只支持使用*TokuDB*存储引擎的表和' mysql '数据库中的*MyISAM*表。! !如果使用*TokuBackup*工具备份*InnoDB*表,必须关闭*InnoDB*异步IO。否则,您将得到不一致的、不可恢复的备份。适当的设置是innodb_use_native_aio为' 0 '。*事务性存储引擎(*TokuDB*和*InnoDB*)将在数据库第一次启动时对备份副本执行恢复。使用非事务性存储引擎(*MyISAM*)的表在复制期间不会被锁定,并且在启动备份时可能会报告问题。最好避免在热备份操作结束时修改这些表的操作(添加/更改用户、存储过程等)。*数据库在本地复制到' /path/to/backup '指定的路径。此文件夹必须存在、可写、为空,并且包含足够的空间用于数据库的完整副本。 * *TokuBackup* always makes a backup of the *MySQL* `datadir` and optionally the tokudb_data_dir, tokudb_log_dir, and the binary log folder. The latter three are only backed up separately if they are not the same as or contained in the *MySQL* `datadir`. None of these three folders can be a parent of the *MySQL* `datadir`. * A folder is created in the given backup destination for each of the source folders. * No other directory structures are supported. All *InnoDB*, *MyISAM*, and other storage engine files must be within the *MySQL* `datadir`. * *TokuBackup* does not follow symbolic links.
进行备份的其他选项¶
TokuDB在文件系统中,表用字典文件、日志文件和元数据文件表示。在备份期间,必须对所有这些文件进行一致的复制。在文件可能被运行程序修改时复制它们MySQL可能导致数据库副本不一致。
LVM快照可用于获得所有TokuDB文件。然后可以随时备份LVM快照。
的选择进入输出文件语句或, mysqldump应用程序还可以用于获取数据库的逻辑备份。
参考文献¶
MySQL 5.5参考手册介绍了几种备份方法和策略。此外,我们建议阅读中的备份和恢复章节高性能MySQL, 3理查德·道金斯版,作者:Baron Schwartz, Peter Zaitsev和Vadim Tkachenko,版权2012,O 'Reilly Media。
冷备份¶
当MySQL是关停了,复印了吗MySQL数据目录,TokuDB数据目录,和TokuDB日志目录可以制作。在最简单的配置中TokuDB文件存储在MySQL数据目录与所有其他MySQL文件。只需要备份这个目录。
使用mylvmbackup进行热备份¶
的mylvmbackup实用程序,位于发射台,与TokuDB.它做了所有的魔术,以获得一致的副本的所有MySQL表,包括MyISAM表,InnoDB表等,创建LVM快照,并对快照进行备份。
逻辑快照¶
数据库的逻辑快照使用SQL语句检索表行并恢复它们。在事务中使用时,可以获取数据库的一致快照。此方法可用于从一个数据库服务器导出表并将它们导入另一个服务器。
的选择进入输出文件语句用于获取数据库的逻辑快照。的加载数据文件语句用于加载表数据。请参阅MySQL5.6详细信息参考手册。
请注意
请不要使用mysqlhotcopy备份TokuDB表。此脚本不兼容TokuDB.
日志文件丢失¶
如果我删除了我的日志文件,或者它们丢失了,我该怎么办?¶
您需要从备份中恢复。为了重新启动数据库,必须提供日志文件。
隔离级别¶
TokuDB的默认隔离级别是什么?¶
它是可重复读取(MVCC)。
如何更改隔离级别?¶
TokuDB支持可重复读取、可序列化、未提交读取和已提交读取隔离级别(不支持其他级别)。TokuDB采用悲观锁定,并在检测到锁冲突时中止事务。
要确保不发生锁冲突,请使用可重复读、未提交读或已提交读隔离级别。
锁定等待超时¶
为什么我MySQL客户端得到锁定超时错误为我的更新查询?当我的应用程序得到这些错误时,它应该做什么?¶
如果某个其他事务对正在更新的行持有锁的时间长于TokuDB锁定超时。您可能需要增加这个超时时间。
如果更新发生死锁,则事务应该中止并重试。
有关诊断锁定问题的详细信息,请参见锁定可视化在TokuDB.
行大小¶
最大行大小是多少?¶
最大行大小为32mib。
NFS & cifs¶
数据目录是否可以位于挂载了NFS或CIFS协议的磁盘上?¶
是的,我们现在确实有客户在生产中使用NFS和CIFS卷。然而,由于这两种磁盘类型的复杂性,它们都可能对性能和数据完整性构成挑战。如果您追求的是性能,那么传统网络的交换基础设施和协议并没有针对低响应时间进行概念化,并且可能很难进行故障排除。如果您关心数据完整性,NFS级别上可能的数据缓存可能会导致日志和数据文件之间的不一致,这些不一致在崩溃事件中可能永远不会被检测到。如果您正在考虑使用NFS或CIFS挂载,我们建议您使用同步挂载选项,这些选项可从NFS挂载手册页获得,但这些设置可能会降低性能。如需进一步讨论,请查看在这里.
使用其他存储引擎¶
是否可以使用MyISAM和InnoDB存储引擎?¶
MyISAM而且InnoDB可以直接与TokuDB.请注意,之间不应该过度提交内存InnoDB而且TokuDB.分配给两个缓存的总内存必须小于物理内存。
可以使用联邦存储引擎吗?¶
也可以使用联邦存储引擎,但是在默认情况下是禁用的MySQL.它可以通过运行mysqld with来启用——联邦作为命令行参数,或通过放置联邦在(mysqld)部份my.cnf文件。
有关更多信息,请参阅MySQL8.0参考手册:FEDERATED存储引擎.
使用TokuDB的MySQL补丁¶
我可以用TokuDB使用MySQL源代码补丁吗?¶
是的,但是你需要应用Percona补丁以及你的补丁雷竞技下载官网MySQL来构建与Percona分形树库一起工作的二进制文件。雷竞技下载官网
截断表vs从表中删除¶
哪个更快,TRUNCATE TABLE或DELETE FROM TABLE?¶
使用截断表只要有可能。表截断在常数时间内运行,而A从表中删除需要逐行删除,因此运行时间与表大小成线性。
外键¶
TokuDB是否强制外键约束?¶
不。TokuDB忽略外键声明。
删除索引¶
下跌日本股市指数是否热门?¶
不,表被锁定的时间是文件系统删除与索引关联的文件所需的时间。