记一次修改ibdata

问题引出

初始化的时候,ibdata(共享表空间)配置为innodb_data_file_path = ibdata1:53687091:autoextend:max:5G,现在想使用ibdata2设置ibdata初始大小为20M,且让ibdata2自增。
然后在配置文件里面修改
innodb_data_file_path = ibdata1:53687091;ibdata2:20M:autoextend:max:5G,结果报错如下:

InnoDB: The innodb_system data file './ibdata1' is of a different size 32768 pages (rounded down to MB) than the 3264 pages specified in the .cnf file!
#上面一行中pages大小应当为`innodb_page_size`设置的大小,默认16k

报错原因

初始化的时候,共享表空间设置的ibdata1:53687091:autoextend:max:5G大小为53687091(51M),自增。但是ll命令如下发现,此文件实际大小为536870912(512M),原来配置文件中为51M;
那么问题来了: ibdata1不是配置了autoextend的吗,难道autoentend自增没有用?

问题回答

该参数只对最后一个共享表空间文件ibdata2起作用了,对之前的ibdata1不起作用了,参考官方文档:innodb_data_file_path中的解释:

The autoextend and max attributes can be used only for the data file that is specified last in the innodb_data_file_path setting.

也就是说在更改共享表空间配置之前,ibdata1的初始大小我们设置了53687091(51M),并且autoextend,并且它增长到了512M;当想要修改共享表空间为两组时,autoextend只对ibdata2起作用了,对ibdata1不起作用了,当系统启动的时候会检测ibdata1的大小与配置文件中是否相符合,检测到配置文件中51M,实际大小512M,不匹配,即使设置了autoextend也只是对ibdata2(innodb_data_file_path配置中最后一个文件)起作用。

[root@hahaguai01 data]# ll
total 2621612
-rw-rw---- 1 root  root           0 Aug  6 08:57 0
-rw-r----- 1 mysql mysql         56 Jul 10 15:32 auto.cnf
-rw------- 1 mysql mysql       1676 Jul 10 15:32 ca-key.pem
-rw-r--r-- 1 mysql mysql       1083 Jul 10 15:32 ca.pem
-rw-r--r-- 1 mysql mysql       1087 Jul 10 15:32 client-cert.pem
-rw------- 1 mysql mysql       1676 Jul 10 15:32 client-key.pem
drwxr-x--- 2 mysql mysql       4096 Jul 25 14:40 employees
drwxr-x--- 2 mysql mysql       4096 Jul 18 15:18 hahaguai
-rw-r--r-- 1 root  root           0 Aug  6 08:37 hahaguai01.centos.pid.shutdown
-rw-r----- 1 mysql mysql       1097 Aug  6 08:56 ib_buffer_pool
-rw-r----- 1 mysql mysql  536870912 Aug  6 08:57 ibdata1
-rw-r----- 1 mysql mysql 1073741824 Aug  6 08:56 ib_logfile0
-rw-r----- 1 mysql mysql 1073741824 Jul 10 15:32 ib_logfile1
drwxr-x--- 2 mysql mysql       4096 Jul 31 15:12 load
drwxr-x--- 2 mysql mysql       4096 Jul 10 15:32 mysql
-rw-r----- 1 mysql mysql      56178 Aug  6 08:57 mysql_error.log
-rw-r----- 1 mysql mysql      17337 Aug  6 08:44 mysql_slow.log
drwxr-x--- 2 mysql mysql       4096 Jul 10 15:32 performance_schema
-rw------- 1 mysql mysql       1676 Jul 10 15:32 private_key.pem
-rw-r--r-- 1 mysql mysql        452 Jul 10 15:32 public_key.pem
-rw-r--r-- 1 mysql mysql       1087 Jul 10 15:32 server-cert.pem
-rw------- 1 mysql mysql       1680 Jul 10 15:32 server-key.pem
drwxr-x--- 2 mysql mysql      12288 Jul 10 15:32 sys
drwxr-x--- 2 mysql mysql       4096 Aug  1 18:38 tennis
drwxrwxr-x 2 mysql mysql       4096 Aug  6 08:57 _tmp
[root@hahaguai01 data]# 

问题解决

修改配置文件中的innodb_data_file_path为ibdata1文件的实际大小,然后设置ibdata2为自增,重新启动数据库,就会自动生成一个ibdata2文件,初始大小为20M,每次自增64M(innodb_autoextend_increment默认为64M)

vim /etc/my.cnf
innodb_data_file_path = ibdata1:536870912;ibdata2:20M:autoextend:max:5G
/user/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf  &
[root@hahaguai01 data]# ll
total 2685116
-rw-rw---- 1 root  root           0 Aug  6 08:57 0
-rw-r----- 1 mysql mysql         56 Jul 10 15:32 auto.cnf
-rw------- 1 mysql mysql       1676 Jul 10 15:32 ca-key.pem
-rw-r--r-- 1 mysql mysql       1083 Jul 10 15:32 ca.pem
-rw-r--r-- 1 mysql mysql       1087 Jul 10 15:32 client-cert.pem
-rw------- 1 mysql mysql       1676 Jul 10 15:32 client-key.pem
drwxr-x--- 2 mysql mysql       4096 Jul 25 14:40 employees
drwxr-x--- 2 mysql mysql       4096 Jul 18 15:18 hahaguai
-rw-r----- 1 mysql mysql          6 Aug  6 09:12 hahaguai01.centos.pid
-rw-r--r-- 1 root  root           0 Aug  6 08:37 hahaguai01.centos.pid.shutdown
-rw-r----- 1 mysql mysql       1097 Aug  6 08:56 ib_buffer_pool
-rw-r----- 1 mysql mysql  536870912 Aug  6 09:12 ibdata1
-rw-r----- 1 mysql mysql   20971520 Aug  6 09:12 ibdata2
-rw-r----- 1 mysql mysql 1073741824 Aug  6 09:12 ib_logfile0
-rw-r----- 1 mysql mysql 1073741824 Jul 10 15:32 ib_logfile1
-rw-r----- 1 mysql mysql   12582912 Aug  6 09:12 ibtmp1
drwxr-x--- 2 mysql mysql       4096 Jul 31 15:12 load
drwxr-x--- 2 mysql mysql       4096 Jul 10 15:32 mysql
-rw-r----- 1 mysql mysql      57847 Aug  6 09:12 mysql_error.log
-rw-r----- 1 mysql mysql      17557 Aug  6 09:12 mysql_slow.log
srwxrwxrwx 1 mysql mysql          0 Aug  6 09:12 mysql.sock
-rw------- 1 mysql mysql          6 Aug  6 09:12 mysql.sock.lock
drwxr-x--- 2 mysql mysql       4096 Jul 10 15:32 performance_schema
-rw------- 1 mysql mysql       1676 Jul 10 15:32 private_key.pem
-rw-r--r-- 1 mysql mysql        452 Jul 10 15:32 public_key.pem
-rw-r--r-- 1 mysql mysql       1087 Jul 10 15:32 server-cert.pem
-rw------- 1 mysql mysql       1680 Jul 10 15:32 server-key.pem
drwxr-x--- 2 mysql mysql      12288 Jul 10 15:32 sys
drwxr-x--- 2 mysql mysql       4096 Aug  1 18:38 tennis
drwxrwxr-x 2 mysql mysql       4096 Aug  6 09:12 _tmp
-rw-r----- 1 mysql mysql   31457280 Aug  6 09:12 xb_doublewrite
[root@hahaguai01 data]# 
posted @ 2018-09-25 18:41  凤凰院胸针  阅读(409)  评论(0)    收藏  举报