记一次修改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]#