Questions tagged «innodb»

InnoDB是MySQL中使用的主要的ACID兼容存储引擎。

1
InnoDB:错误:日志文件./ib_logfile0的大小不同
我将一个数据库转换为使用InnoDB引擎后,在/etc/mysql/my.cnf中添加了以下几行。 innodb_buffer_pool_size = 2560M innodb_log_file_size = 256M innodb_log_buffer_size = 8M innodb_flush_log_at_trx_commit = 2 innodb_thread_concurrency = 16 innodb_flush_method = O_DIRECT 但是,它会在重新启动mysqld时引发“错误2(HY000)在第2行:在查询期间与MySQL服务器的连接丢失”错误。和mysql错误日志显示以下内容 InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes InnoDB: than specified in the .cnf file 0 268435456 bytes! 100118 20:52:52 [ERROR] Plugin 'InnoDB' init function returned …
106 mysql  log-files  innodb 

6
未知/不受支持的存储引擎:InnoDB | MySQL Ubuntu
我最近从以前的LTS Ubuntu升级到了Precise,现在mysql拒绝启动。当我尝试启动它时,它抱怨以下内容: ╰$ sudo service mysql restart stop: Unknown instance: start: Job failed to start 这显示在“ /var/log/mysql/error.log”中: 120415 23:01:09 [Note] Plugin 'InnoDB' is disabled. 120415 23:01:09 [Note] Plugin 'FEDERATED' is disabled. 120415 23:01:09 [ERROR] Unknown/unsupported storage engine: InnoDB 120415 23:01:09 [ERROR] Aborting 120415 23:01:09 [Note] /usr/sbin/mysqld: Shutdown complete 我已经检查了所有mysql目录的权限,以确保它具有所有权,并且还重命名了上一个ib_logs,以便它可以重新制作它们。在查看了2个小时的Google搜索结果后,我现在对此问题一无所获。
45 ubuntu  mysql  innodb 

6
MySQL InnoDB-innodb_file_per_table缺点
默认情况下,MySQL InnoDB将所有数据库的所有表存储在一个全局文件中。您可以通过在配置中设置innodb_file_per_table来更改此设置,然后为每个表创建一个数据文件。 我想知道为什么innodb_file_per_table默认情况下不启用。使用它有不利之处吗?
32 mysql  innodb 

2
仅使用InnoDB(5gb数据库)的8gb RAM专用MySQL服务器的最佳MySQL缓存设置
在设置MySQL性能方面,我是一个非常大的菜鸟。老实说,我并不担心微调以压缩MySQL的所有性能,但我确实知道,提供某些最佳结果的最重要的事情是正确设置缓存/缓冲区。 我试图通过仅使用InnoDB作为存储引擎来简化事情。我确实有一个专用于MySQL的服务器。它有8gb的RAM,我应该如何分配它以最大化性能?我希望能够将我的整个数据库放入内存中以获得最佳性能。该数据库约为5gb。这可能吗? 我应该为查询缓存分配多少内存?InnoDB缓冲池要多少钱?其余计算机(即非MySQL相关进程)需要多少钱?等等。 由于我没有使用MyISAM,因此我真的不需要在正确的密钥缓存中放置很多内存吗?

3
MySQL崩溃了,无法启动
我们的生产mysql服务器刚刚崩溃,无法恢复。出现段错误。我尝试重新启动,只是不知道还要尝试什么。这是堆栈跟踪: 140502 14:13:05 [注意]插件“ FEDERATED”已禁用。 InnoDB:日志扫描已通过检查点lsn 108 1057948207 140502 14:13:06 InnoDB:数据库未正常关闭! InnoDB:开始崩溃恢复。 InnoDB:从.ibd文件读取表空间信息... InnoDB:从doublewrite还原可能的半写数据页 InnoDB:缓冲区... InnoDB:正在执行恢复:扫描到日志序列号108 1058059648 InnoDB:1个必须回滚或清理的事务 InnoDB:总共15行操作要撤消 InnoDB:Trx ID计数器为0 562485504 140502 14:13:06 InnoDB:正在将一批日志记录应用于数据库... InnoDB:进度百分比:4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 …
19 mysql  innodb  crash 

5
在停机时间很少或没有停机的情况下修改超大型mysql表的列
我定期需要对mysql 5.1中的表进行更改,主要是添加列。使用alter table命令非常简单。但是我的表现在有多达4000万行,并且它们正在快速增长……所以那些alter table命令要花费几个小时。我猜,几个月后,他们将需要几天的时间。 由于我使用的是Amazon RDS,因此无法使用从属服务器,然后再升级为主服务器。所以我的问题是,是否有一种方法可以使停机时间最少?如果用户仍然可以使用数据库,那么我不介意花费数小时甚至数天的操作...当然,他们至少可以在添加列时读取吗?如果我的应用尝试写怎么办?插入还是更新?如果它立即失败,那实际上还不是很坏,如果它只是挂起并导致数据库服务器出现问题,那将是一个大问题。 这必须是一个相当普遍的扩展问题,每个人都需要添加列。.对生产数据库通常做什么?从站->主迁移? 更新 -我忘了说我正在使用innodb存储引擎


5
您如何选择MySQL数据库引擎
特别是,当MyISAM和InnoDB都不缺少必需的功能时(例如,您不需要外键),如何在MyISAM和InnoDB之间进行选择。 它总是归结为尝试和测量吗?还是在读写次数和频率等方面有良好的经验法则?表格的大小对典型选择有影响吗?
16 mysql  innodb  myisam 

6
如何提高MySQL INSERT和UPDATE性能?
也可以在StackOverflow上问这个问题,但我会先在这里尝试... 数据库中INSERT和UPDATE语句的性能似乎正在下降,并导致Web应用程序的性能下降。 表是InnoDB,应用程序使用事务。我可以做些简单的调整来加快速度吗? 我认为我们可能会遇到一些锁定问题,如何找到?


4
如何知道数据库使用的存储引擎?
以前,在创建的每个数据库上,我使用: mysql -u root -p CREATE DATABASE dbname CHARACTER SET utf8 COLLATE utf8_bin; GRANT ALL ON dbname.* TO 'dbuser'@'localhost'; 然后使用数据库而无需考虑MyISAM或InnoDB 如何知道数据库使用的存储引擎?

5
通过ZFS快照备份MySQL数据库
我发现许多网站都在谈论完全做到这一点,但是我缺少一些重要的细节。一般步骤是 跑 FLUSH TABLES WITH READ LOCK 拍摄ZFS快照 跑 UNLOCK TABLES 各种来源都报告说,我正在使用的InnoDB实际上并不兑现FLUSH。MySQL用户手册指出FLUSH TABLES...FOR EXPORT,InnoDB 有一个变体,但需要单独指定每个表,而不是备份整个数据库。我宁愿避免单独指定每个表,因为表的列表很可能与实际存在的表不同步。 我遇到的另一个问题是我打算做类似的事情mysql -h"$HOST" -u"$USERNAME" -p"$PASSWORD" --execute="FLUSH TABLES WITH READ LOCK"。但是,这将在会话退出后立即释放锁。这是有道理的,但也很烦人,因为在拍摄快照时我需要保持读取锁定。 我的另一个想法是使用Percona XtraBackup之类的工具进行热备份并拍摄备份快照,但是我不希望为将所有数据写入第二个位置而进行快照的费用。
12 mysql  backup  freebsd  zfs  innodb 

6
为MySQL / InnoDB中的事务设置时间限制
这是从这个相关的问题产生的,在这里我想知道如何在一个琐碎的情况下(两个都只在一行上进行操作)强制两个事务按顺序进行。我得到了一个答案– SELECT ... FOR UPDATE用作两个事务的第一行–但这导致了一个问题:如果从不提交或回滚第一个事务,则第二个事务将被无限期地阻止。该innodb_lock_wait_timeout变量设置了秒数,在此秒数之后,尝试进行第二次事务的客户端将被告知“对不起,再试一次” ...但是据我所知,他们将再次尝试直到下一个服务器重新启动。所以: ROLLBACK如果交易永存,肯定有一种方法可以强制执行?我必须诉诸使用守护程序来杀死此类事务,如果是的话,这样的守护程序将是什么样? 如果某个连接被交易中wait_timeout或interactive_timeout交易中止,交易是否回滚?有没有办法从控制台进行测试? 澄清度:innodb_lock_wait_timeout设置事务放弃放弃之前等待释放锁的秒数;我想要的是一种强制释放锁的方法。 更新1:这是一个简单的示例,演示了为什么innodb_lock_wait_timeout不足以确保第二个事务不会被第一个事务阻止: START TRANSACTION; SELECT SLEEP(55); COMMIT; 使用默认设置innodb_lock_wait_timeout = 50,此事务在55秒后完成而没有错误。并且,如果您UPDATE在该SLEEP行之前添加一个,然后从另一个尝试到SELECT ... FOR UPDATE同一行的客户端发起第二笔交易,那是第二笔交易超时,而不是睡着的那笔交易。 我正在寻找的是一种方法来结束此笔交易的沉睡。 更新2:为了回应hobodave对上面示例的现实性的担忧,这是另一种情况:DBA连接到实时服务器并运行 START TRANSACTION SELECT ... FOR UPDATE 第二行锁定了应用程序经常写入的行。然后,DBA被打断并走开,忘记了结束交易。该应用程序停止运行直到该行被解锁。我想尽量减少由于此错误而导致应用程序停滞的时间。
11 mysql  innodb 


4
增加InnoDB缓冲池大小
我在设置MySql InnoDB的缓冲池大小和日志文件大小时遇到​​困难。我距离MySql专家还很远,但是一直在阅读,看来要更改此设置,只需将这些行添加到我的/etc/mysql/my.cnf # Set buffer pool size to 50-80% of your computer's memory innodb_buffer_pool_size=2048M innodb_additional_mem_pool_size=512M # # Set the log file size to about 25% of the buffer pool size innodb_log_file_size=256M innodb_log_buffer_size=128M 该服务器大约有7GB的内存,并且还在运行Web服务器,因此我认为这些数字应该是一个不错的起点。保存并重新启动服务器后,更改似乎没有生效。我尝试运行Mysqltuner,该数据库报告缓冲池仍为16.0M。知道我在做什么错吗?如果您想了解更多配置文件,请告诉我。谢谢!
11 mysql  innodb 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.