MySQL 增加InnoDB系統表空間大小

eric0435發表於2022-03-17

增加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


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-2871763/,如需轉載,請註明出處,否則將追究法律責任。

相關文章