增加InnoDB系统表空间大小
增加InnoDB系统表空间大小的最简单的方法是从一开始就配置为自动扩展。在表空间定义中为最后一个数据文件指定autoextend属性。当InnoDB用完空间时,会自动增加64MB的文件大小。可以通过设置innodb_autoextend_increment系统变量的值来更改增量大小,该变量以兆字节为单位度量。
mysql> show variables like 'innodb_autoextend_increment'; +-----------------------------+-------+ | Variable_name | Value | +-----------------------------+-------+ | innodb_autoextend_increment | 64 | +-----------------------------+-------+ 1 row in set (0.01 sec)
通过添加另一个数据文件,可以按定义的数量扩展系统表空间:
1.关闭MySQL服务器
2.如果上一个数据文件是用autoextend关键字定义的,那么根据它实际增长的大小,将其定义更改为使用固定大小。检查数据文件的大小,将其四舍四入到最接近的1024*1024字节(= 1MB)的倍数,并在innodb_data_file_path中显式指定这个四舍五入的大小。
3.在innodb_data_file_path的末尾添加一个新的数据文件,可以选择使该文件自动扩展。只有innodb_data_file_path中的最后一个数据文件可以被指定为自动扩展。
4.重新启动MySQL服务器。
例如,这个表空间只有一个自动扩展的数据文件ibdata1
mysql> show variables like 'innodb_data%'; +-----------------------+------------------------+ | Variable_name | Value | +-----------------------+------------------------+ | innodb_data_file_path | ibdata1:12M:autoextend | | innodb_data_home_dir | | +-----------------------+------------------------+ 2 rows in set (0.00 sec)
假设这个数据文件随着时间的推移增长到76MB。下面是修改原始数据文件以使用固定大小并添加新的自动扩展数据文件后的配置行
innodb_data_home_dir = innodb_data_file_path = ibdata1:76M;ibdata2:50M:autoextend
当您向系统表空间配置添加一个新的数据文件时,请确保文件名没有引用现有的文件。当您重启服务器时,InnoDB会创建并初始化该文件
a.关闭MySQL服务器
[root@localhost ~]# service mysqld stop Shutting down MySQL.. SUCCESS!
b.检查数据文件的大小
[mysql@localhost mysql]$ du -sh ibdata1 76M ibdata1
c.在innodb_data_file_path的末尾添加一个新的数据文件,可以选择使该文件自动扩展。
innodb_data_file_path = ibdata1:76M;ibdata2:50M:autoextend
d.重启MySQL服务器
[root@localhost ~]# service mysqld start Starting MySQL..... SUCCESS! [mysql@localhost ~]$ mysql -uroot -pxxzx7817600 mysql mysql: [Warning] Using a password on the command line interface can be insecure. Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.7.26-log Source distribution Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show variables like 'innodb_data%'; +-----------------------+------------------------------------+ | Variable_name | Value | +-----------------------+------------------------------------+ | innodb_data_file_path | ibdata1:76M;ibdata2:50M:autoextend | | innodb_data_home_dir | | +-----------------------+------------------------------------+ 2 rows in set (0.01 sec) [root@localhost mysql]# ls -lrt ibdata* -rw-r-----. 1 mysql mysql 52428800 2月 23 11:13 ibdata2 -rwxr-xr-x. 1 mysql mysql 79691776 2月 23 11:13 ibdata1