MySQL InnoDB:如何完全刷新所有剩余的事务性更改
我不得不终止altertable(复制到tmptable)进程,因为我的服务器磁盘空间不足。我的ibdata文件现在有40GB大,只剩下8GB的磁盘空间(不,我不能在atm机上添加磁盘空间,也不能使用ram磁盘,因为服务器只有8GB的ram) 据我所知,即使我杀死了alter table进程,只要有足够的可用磁盘空间,MySQL也会尝试完成它 根据“显示状态如“%tmp%”;”,有0个tmp表和5个tmp文件 根据“显示引擎INNODB状态”,只有一个“事务0,未启动”条目(和一些文件I/O条目) 根据信息模式,我的表大约是20GB,我的ibdata文件是40GB(我在这个数据库上只有一个InnoDB表) 是否有办法刷新所有挂起的更改和/或删除所有tmp表(即使show status没有列出一个)? 我还想知道为什么我的innodb_buffer_pool_大小设置为8GB(在8GB ram服务器上)。我没有更改任何InnoDB设置,实际上我的my.cnf文件中没有设置,所以这似乎是一些默认值MySQL InnoDB:如何完全刷新所有剩余的事务性更改,mysql,ubuntu-12.04,innodb,Mysql,Ubuntu 12.04,Innodb,我不得不终止altertable(复制到tmptable)进程,因为我的服务器磁盘空间不足。我的ibdata文件现在有40GB大,只剩下8GB的磁盘空间(不,我不能在atm机上添加磁盘空间,也不能使用ram磁盘,因为服务器只有8GB的ram) 据我所知,即使我杀死了alter table进程,只要有足够的可用磁盘空间,MySQL也会尝试完成它 根据“显示状态如“%tmp%”;”,有0个tmp表和5个tmp文件 根据“显示引擎INNODB状态”,只有一个“事务0,未启动”条目(和一些文件I/O条目
谢谢:Lars你说得对,即使你杀死了
ALTER TABLE
,它也会继续尝试创建一个新的表副本,这个操作只有在完成该步骤后才会被“杀死”。除了mysqld进程上的kill-9
,没有办法中断它。请注意,如果磁盘空间不足,它将生成错误。我认为此时它将中止altertable
,清理temp表,然后完成
至于您关于刷新更改的问题,没有命令刷新由altertable
完成的工作。对于其他类型的更改,如果设置global innodb_fast_shutdown=0
然后关闭mysqld,这将刷新缓冲池中的所有脏页,清除回滚段中的任何垃圾,并合并更改缓冲区中任何挂起的索引更改。但这对altertable
没有任何作用。我相信结果将是关机将等待ALTER TABLE
完成
至于您关于缓冲池的问题,如果您不指定另一个值,则缓冲池大小为128MB。您必须在配置文件中将其设置为8GB。注意,Ubuntu支持一个目录/etc/mysql/conf.d
,其中有多个配置文件,可以在这些配置文件中进行设置
您可能有一个大的ibdata1文件,没有任何东西会占用额外的空间 当MySQL使用临时表时,它们会被清理,但是在使用时,它可能会增加IBMData1文件的大小。MySQL不会收缩IBMata1文件,但会将分配的空间重新用于以后的数据 是的,收缩ibdata1的唯一方法是转储所有InnoDB数据,关闭mysqld,物理
rm
ibdata1文件,然后启动mysqld,然后重新导入转储的数据
在导入数据之前,建议启用innodb_file_per_table
,这样以后就不会遇到这种困难。MySQL对于全局InnoDB数据仍然需要一个IBMData1,但它应该保持较小。无论何时删除或更改任何InnoDB表(临时或非临时),它都会回收一些磁盘空间。在MySQL 5.6中,这实际上是默认启用的
mysqld在几个地方查找my.cnf:
innodb\u buffer\u pool\u size=8G
有关MySQL如何查找my.cnf的详细信息,请参见您是对的,即使您杀死了
更改表
,它仍会继续尝试创建表的新副本,并且此操作只有在完成该步骤后才会被“杀死”。除了mysqld进程上的kill-9
,没有办法中断它。请注意,如果磁盘空间不足,它将生成错误。我认为此时它将中止altertable
,清理temp表,然后完成
至于您关于刷新更改的问题,没有命令刷新由altertable
完成的工作。对于其他类型的更改,如果设置global innodb_fast_shutdown=0
然后关闭mysqld,这将刷新缓冲池中的所有脏页,清除回滚段中的任何垃圾,并合并更改缓冲区中任何挂起的索引更改。但这对altertable
没有任何作用。我相信结果将是关机将等待ALTER TABLE
完成
至于您关于缓冲池的问题,如果您不指定另一个值,则缓冲池大小为128MB。您必须在配置文件中将其设置为8GB。注意,Ubuntu支持一个目录/etc/mysql/conf.d
,其中有多个配置文件,可以在这些配置文件中进行设置
您可能有一个大的ibdata1文件,没有任何东西会占用额外的空间 当MySQL使用临时表时,它们会被清理,但是在使用时,它可能会增加IBMData1文件的大小。MySQL不会收缩IBMata1文件,但会将分配的空间重新用于以后的数据 是的,收缩ibdata1的唯一方法是转储所有InnoDB数据,关闭mysqld,物理
rm
ibdata1文件,然后启动mysqld,然后重新导入转储的数据
在导入数据之前,建议启用innodb_file_per_table
,这样以后就不会遇到这种困难。MySQL对于全局InnoDB数据仍然需要一个IBMData1,但它应该保持较小。无论何时删除或更改任何InnoDB表(临时或非临时),它都会回收一些磁盘空间。在MySQL 5.6中,这实际上是默认启用的
mysqld l