RPK*_*RPK 2 mysql innodb myisam
在我的生产数据库生活中,发生过一次悲剧,在恢复最近的备份时,MySQL 引擎类型从 InnoDB 意外更改为 MyISAM。结果是所有参照完整性都丢失了。
是什么导致了这一事件?我的生产数据库是 MySQL Server 5.1。
这让我想起了我做过十几次的事情(幸运的是小数据集小于 10GB)。将 mysqldump 恢复到新服务器时,您必须绝对确保新服务器上的 InnoDB 设置与 InnoDB 设置相同。
对于您选择将 mysqldump 还原到的新服务器,请运行以下命令:
SHOW ENGINES;
Run Code Online (Sandbox Code Playgroud)
这将显示 MySQL 实例中可用的所有存储引擎。以下是来自运行 MySQL 5.5.9 的服务器的示例:
mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| CSV | YES | CSV storage engine | NO | NO | NO |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
请注意,InnoDB 在 Support 列中有 DEFAULT。Support 列有四个可能的值:
有一天,我正在恢复的一台服务器的 innodb_buffer_pool_size 配置不匹配。因为我设置了 innodb_buffer_pool_size=512G 而不是 512M(明显的错字),InnoDB 会出现 DISABLED。将数据加载到新服务器时,每个 CREATE TABLE 在执行时默认为 MyISAM。我没有注意到任何事情,直到我看到数十个数据库连接等待写入同一个表,这是针对 MyISAM 的大量写入的典型情况。解决方案只是使用正确的 InnoDB 设置重新开始并重新加载。
故事的道德启示
归档时间: |
|
查看次数: |
789 次 |
最近记录: |