Articles of innodb

MySQL(MariaDB)经常崩溃

我最近将运行MySQL的旧服务器迁移到运行MariaDB 5.5的新VPS。 我没有太多的运行在服务器(只有几个PHP站点)和空闲内存似乎是好的,但数据库不断崩溃 – 有时每隔几天,其他时间在几个小时内。 我在日志中收到以下错误: 131231 1:43:04 [ERROR] mysqld: Out of memory (Needed 128917504 bytes) 131231 1:43:04 [ERROR] mysqld: Out of memory (Needed 96681984 bytes) 131231 1:43:04 [ERROR] mysqld: Out of memory (Needed 72499200 bytes) 131231 1:43:04 [ERROR] mysqld: Out of memory (Needed 54362112 bytes) 131231 1:43:04 InnoDB: The InnoDB memory heap is disabled […]

在EC2大型实例上对MySQL进行良好/更好的configuration

我有一个专用于MySQL的EC2 Large实例。 它将服务于Joomla / Magento组合,所以它融合了InnoDB和MyISAM表格。 我以前只和MyISAM一起工作过,因此不熟悉InnoDB使用的设置。 迄今为止,实验并没有取得丰硕的成果,因为我一直在导致InnoDB引擎被禁用。 我的实例正在运行Ubuntu 10.04 64位服务器版本,并具有约7.5G的RAM。 MySQL目前正在使用〜0.6%,性能稍差。 我想configuration它以尽可能多地使用系统RAM。 testing一些设置我知道InnoDB日志不能总体大于4G。 任何人都可以提供一些基础的InnoDB和MyISAM设置来启动我的。 谢谢Tim

创build主从关系时避免服务器停机的方法?

我准备build立一个MySQL主从关系或主 – 主关系。 现在我有一个MySQL生产服务器,当然我不想在连接从服务器的时候停机。 有没有办法让我连接一个空的奴隶,让它“缓慢”同步从主人的数据,直到他们是相同的? 我注意到,我可以在主服务器上使用mysqldump进行事务转储,然后将其导入到从服务器中,但是当从服务器导入了转储服务器时,会有很多新的行被写入,从服务器如何获取这些? 我希望我在这里忽略一些明显的东西,但大量的谷歌search会给出这样的build议,比如“因为这样会导致更less的停机时间,现在有些停机时间可能不是那么糟糕”。 但我真的想避免这种情况。 MyISAM的相关问题 ,但我使用InnoDB。

将大表从MyISAM转换到Innodb

我有一个大约300M行的MyISAM格式的表格,我想转换成Innodb 我最初的目标是通过改变表格模式来减less使用,使索引更简单。 我倾倒了所有的桌子,放弃了它,用较less的索引来重新创build它,现在我正在重新导入。 但是,我忘了指定它应该是innodb而不是myisam。 我可以只做标准的ALTER TABLE … ENGINE = INNODB吗? 有这样一个巨大的桌子,我应该知道有什么特别的东西吗? 数据导入操作需要大约12个小时 – 我不喜欢这样做。 因此,我为什么要把它转换。

如何在my.cnf中将默认表types设置为innodb?

对于MySQL …有没有一种方法来设置它,使每个创build的表是innodb?

MySQL慢写入

插入到下表中需要70秒才能完成: CREATE TABLE IF NOT EXISTS `productsCategories` ( `categoriesId` int(11) NOT NULL, `productsId` int(11) NOT NULL, PRIMARY KEY (`categoriesId`,`productsId`), KEY `categoriesId` (`categoriesId`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 表中有大约10万行,磁盘占用7MB。 MySQL中有一些可以提高写入性能的设置吗? 我的my.cnf文件如下: log-slow-queries="/var/log/mysql/slow-query.log" long_query_time=1 log-queries-not-using-indexes innodb_buffer_pool_size=4G innodb_log_buffer_size=4M innodb_flush_log_at_trx_commit=2 innodb_thread_concurrency=8 innodb_flush_method=O_DIRECT query_cache_size = 6G key_buffer_size = 284M query_cache_limit = 1024M thread_cache_size = 128 table_cache = 12800 sort_buffer_size=2M read_rnd_buffer_size = […]

增加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。 任何想法我做错了什么? 让我知道如果你想看到更多的configuration文件。 谢谢!

MyISAM和InnoDB如何利用HD空间?

我的MySQL服务器快用完了HD空间。 大部分我的大表使用InnoDB引擎(没有任务关键的原因)。 为了避免可怕的“ drop database恢复innodb磁盘空间 ”响应,我想更好地理解两个引擎如何在磁盘上存储数据。 如果我要使用MyISAM,我将能够更轻松地通过删除行来恢复磁盘空间? 除了delete / truncate / empty查询之外,还有一个命令是否需要运行? 假设#1是真的:将现有InnoDB表转换为MyISAM并以这种方式恢复空间是否可行?

如何知道数据库使用的存储引擎?

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

如何禁用MySQL InnoDB表中的键?

是否可以禁用InnoDB表中的键? 如果是的话,怎么样? 如果没有,为什么?