ERROR 1799 (HY000): Creating index 'PRIMARY' innodb_online_alter_log_max_size
来源:互联网 发布:武松的武功怎么样知乎 编辑:程序博客网 时间:2024/05/09 10:43
线上字段修改表机构,遇到新问题。
mysql> alter table productinfo.pd_info add is_batch tinyint(1) unsigned not null default 1,add index idx_is_batch (is_batch);
ERROR 1799 (HY000): Creating index 'PRIMARY' required more than 'innodb_online_alter_log_max_size' bytes of modification log. Please try again.
报错分析:该表是线上的核心表,每秒钟至少要有4条数据插入。所以在修改表结构期间默认的innodb_online_alter_log_max_size=128M 远远不够。
而且该表大概有25G的数量,所以要想修改成功必须增大该值,但是该值也不易过大。需调试到一个合适的值。
mysql> show variables like 'innodb_online_alter_log_max_size';
+----------------------------------+-----------+
| Variable_name | Value |
+----------------------------------+-----------+
| innodb_online_alter_log_max_size | 134217728 |
+----------------------------------+-----------+
1 row in set (0.00 sec)
set global innodb_online_alter_log_max_size=268435456;
mysql> alter table productinfo.pd_info add is_batch tinyint(1) unsigned not null default 1,add index idx_is_batch (is_batch);
^[[AQuery OK, 0 rows affected (3 hours 32 min 2.33 sec)
Records: 0 Duplicates: 0 Warnings: 0
修改成功。
总结如下:
根据错误信息中的内容在MySQL手册中找到了innodb_online_alter_log_max_size这一参数。该参数是MySQL5.6.6新加入的一个参数,用以指定对InnoDB表做在线DDL操作时所使用的临时日志文件的最大大小(以字节为单位,默认128M)。在创建索引或者ALTER表时会使用该临时文件。该文件记录了DDL操作期间插入、更新、删除的数据。在必要的时候该日志文件的大小会根据innodb_sort_buffer_size的值增加容量直至达到innodb_online_alter_log_max_size指定的最大值。若临时表的大小超出此上限则ALTER表的操作会失败,当前所有未提交的DML操作会回滚。因此,一个较大的值允许在线DDL操作期间有更多的DML被执行,但是过大的值会使DDL操作结束后表被锁定起来以应用日志中的数据时花很长的时间。
- ERROR 1799 (HY000): Creating index 'PRIMARY' innodb_online_alter_log_max_size
- We can create the index before creating the primary key.
- Error creating index WriteConcern detected an error 'not master'
- ERROR 1503 (HY000): A PRIMARY KEY must include all columns in the table's partitioning function
- Primary Key & Index
- ERROR 1296 (HY000): Got error 4243 'Index not found' from NDBCLUSTER & ndb_drop_index
- Primary key and Unique index
- Error creating index admin.system.version: 13 err: "not authorized to create index on admin.system.v
- mysql ERROR 1418 (HY000)
- ERROR 2003 (HY000)
- ERROR 1290 (HY000)
- Mysql ERROR 1289 (HY000)
- ERROR 2002 (HY000):
- mysql ERROR 1206 (HY000)
- MySQL Error 1093(HY000)
- MySQL:ERROR 2002 (HY000)
- ERROR 2002 (HY000)
- SQLSTATE[HY000]: General error
- 我读C++ Primer - 函数
- 创建窗口的应用程序
- Swift抽象工厂模式的写法
- 特殊的线性表-栈-顺序栈
- 不是技术牛人,如何拿到国内IT巨头的Offer
- ERROR 1799 (HY000): Creating index 'PRIMARY' innodb_online_alter_log_max_size
- poj1724
- 多语言的设置 的学习
- 整个窗口应用的源码
- DIV+CSS各种浏览器差别全攻略!!!
- NSString的常用方法
- 2.1.15 Trapping Rain Water
- 评量子论的两本科普书籍
- 【阅读】《网页设计创意书》第六章——结构样式