MySQL修改innodb_data_file_path参数的一些注意事项

吾爱主题 阅读:122 2024-04-05 14:03:14 评论:0

前言

innodb_data_file_path用来指定innodb tablespace文件,如果我们不在My.cnf文件中指定innodb_data_home_dir和innodb_data_file_path那么默认会在datadir目录下创建ibdata1 作为innodb tablespace。

说明

在测试环境下没有设置过多的详细参数就初始化并启动了服务,后期优化的过程中发现innodb_data_file_path设置过小:

?
1 2 3 4 5 6 7 8 9 root@node1 14:59: [(none)]> show variables like '%innodb_data_file_path%' ; +-----------------------+------------------------+ | Variable_name | Value  | +-----------------------+------------------------+ | innodb_data_file_path | ibdata1:12M:autoextend | +-----------------------+------------------------+ 1 row in set (0.00 sec)   root@node1 14:59: [(none)]>

当没有配置innodb_data_file_path时,默认innodb_data_file_path = ibdata1:12M:autoextend

?
1 2 [mysqld] innodb_data_file_path = ibdata1:12M:autoextend

当需要改为1G时,不能直接在配置文件把 ibdata1 改为 1G ,

?
1 2 [mysqld] innodb_data_file_path = ibdata1:1G:autoextend

否则启动服务之后,从错误日志看到如下报错:

2019-03-29T06:47:32.044316Z 0 [ERROR] InnoDB: The Auto-extending innodb_system data file './ibdata1' is of a different size 768 pages (rounded down to MB) than specified in the .cnf file: initial 65536 pages, max 0 (relevant if non-zero) pages!

大致意思就是ibdata1的大小不是 65536page*16KB/1024KB=1G ,而是 786page*16KB/1024KB=12M
(未使用压缩页)

方法一:推荐

而应该再添加一个 ibdata2:1G ,如下:

?
1 2 [mysqld] innodb_data_file_path = ibdata1:12M;ibdata2:1G:autoextend

重启数据库!

方法二:不推荐

直接改为如下的话

?
1 2 [mysqld] innodb_data_file_path = ibdata1:1G:autoextend

可以删除$mysql_datadir目录下 ibdata1、ib_logfile0、ib_logfile1 文件:

?
1 rm -f ibdata* ib_logfile*

也可以启动MySQL,但是mysql错误日志里会报如下错误:

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 2019-03-29T07:10:47.844560Z 0 [Warning] Could not increase number of max_open_files to more than 5000 (request: 65535) 2019-03-29T07:10:47.844686Z 0 [Warning] Changed limits: table_open_cache: 1983 (requested 2000) 2019-03-29T07:10:48.028262Z 0 [Warning] 'NO_AUTO_CREATE_USER' sql mode was not set . 2019-03-29T07:10:48.147653Z 0 [Warning] InnoDB: Cannot open table mysql /plugin from the internal data dictionary of InnoDB though the .frm file for the table exists. Please refer to http: //dev .mysql.com /doc/refman/5 .7 /en/innodb-troubleshooting .html for how to resolve the issue. mysqld: Table 'mysql.plugin' doesn't exist 2019-03-29T07:10:48.147775Z 0 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it. 2019-03-29T07:10:48.163444Z 0 [Warning] InnoDB: Cannot open table mysql /gtid_executed from the internal data dictionary of InnoDB though the .frm file for the table exists. Please refer to http: //dev .mysql.com /doc/refman/5 .7 /en/innodb-troubleshooting .html for how to resolve the issue. mysqld: Table 'mysql.gtid_executed' doesn't exist 2019-03-29T07:10:48.163502Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened. 2019-03-29T07:10:48.163658Z 0 [Warning] InnoDB: Cannot open table mysql /gtid_executed from the internal data dictionary of InnoDB though the .frm file for the table exists. Please refer to http: //dev .mysql.com /doc/refman/5 .7 /en/innodb-troubleshooting .html for how to resolve the issue. mysqld: Table 'mysql.gtid_executed' doesn't exist 2019-03-29T07:10:48.163711Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened. 2019-03-29T07:10:48.164619Z 0 [Warning] Failed to set up SSL because of the following SSL library error: SSL context is not usable without certificate and private key 2019-03-29T07:10:48.166805Z 0 [Warning] InnoDB: Cannot open table mysql /server_cost from the internal data dictionary of InnoDB though the .frm file for the table exists. Please refer to http: //dev .mysql.com /doc/refman/5 .7 /en/innodb-troubleshooting .html for how to resolve the issue. 2019-03-29T07:10:48.166891Z 0 [Warning] Failed to open optimizer cost constant tables   2019-03-29T07:10:48.168072Z 0 [Warning] InnoDB: Cannot open table mysql /time_zone_leap_second from the internal data dictionary of InnoDB though the .frm file for the table exists. Please refer to http: //dev .mysql.com /doc/refman/5 .7 /en/innodb-troubleshooting .html for how to resolve the issue. 2019-03-29T07:10:48.168165Z 0 [Warning] Can 't open and lock time zone table: Table ' mysql.time_zone_leap_second ' doesn' t exist trying to live without them 2019-03-29T07:10:48.169454Z 0 [Warning] InnoDB: Cannot open table mysql /servers from the internal data dictionary of InnoDB though the .frm file for the table exists. Please refer to http: //dev .mysql.com /doc/refman/5 .7 /en/innodb-troubleshooting .html for how to resolve the issue. 2019-03-29T07:10:48.169527Z 0 [ERROR] Can 't open and lock privilege tables: Table ' mysql.servers ' doesn' t exist 2019-03-29T07:10:48.170042Z 0 [Warning] InnoDB: Cannot open table mysql /slave_master_info from the internal data dictionary of InnoDB though the .frm file for the table exists. Please refer to http: //dev .mysql.com /doc/refman/5 .7 /en/innodb-troubleshooting .html for how to resolve the issue. 2019-03-29T07:10:48.170617Z 0 [Warning] InnoDB: Cannot open table mysql /slave_relay_log_info from the internal data dictionary of InnoDB though the .frm file for the table exists. Please refer to http: //dev .mysql.com /doc/refman/5 .7 /en/innodb-troubleshooting .html for how to resolve the issue. 2019-03-29T07:10:48.170946Z 0 [Warning] InnoDB: Cannot open table mysql /slave_master_info from the internal data dictionary of InnoDB though the .frm file for the table exists. Please refer to http: //dev .mysql.com /doc/refman/5 .7 /en/innodb-troubleshooting .html for how to resolve the issue. 2019-03-29T07:10:48.171046Z 0 [Warning] Info table is not ready to be used. Table 'mysql.slave_master_info' cannot be opened. 2019-03-29T07:10:48.171272Z 0 [Warning] InnoDB: Cannot open table mysql /slave_worker_info from the internal data dictionary of InnoDB though the .frm file for the table exists. Please refer to http: //dev .mysql.com /doc/refman/5 .7 /en/innodb-troubleshooting .html for how to resolve the issue. 2019-03-29T07:10:48.171626Z 0 [Warning] InnoDB: Cannot open table mysql /slave_relay_log_info from the internal data dictionary of InnoDB though the .frm file for the table exists. Please refer to http: //dev .mysql.com /doc/refman/5 .7 /en/innodb-troubleshooting .html for how to resolve the issue. 2019-03-29T07:10:48.171688Z 0 [Warning] Info table is not ready to be used. Table 'mysql.slave_relay_log_info' cannot be opened.

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对服务器之家的支持。

原文链接:https://www.linuxidc.com/Linux/2019-04/157915.htm

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容