增加 innodb_buffer_pool_size 和 innodb_log_file_size 后,mysql 无法启动

gio*_*o79 19 mysql innodb mysql-5.5

我在这里遵循这个解决方案/sf/ask/274938331/#comment14041132_4056261并试图增加我innodb_buffer_pool_size的 4G 和更高的 1G(也是 1024M)除了日志文件大小之外,mysql 不会从这些值开始。如果我把它放回 512M mysql 启动就好了。

我该如何解决这个问题?我的服务器是 16GB 的,根据 Webmin sysinfo:

Real memory 15.62 GB total, 3.13 GB used
Run Code Online (Sandbox Code Playgroud)

同时我也发现了错误日志:

120529 10:29:32 来自 pid 文件/var/run/mysqld/mysqld.pid 的 mysqld_safe mysqld 结束

120529 10:29:33 mysqld_safe 使用 /var/lib/mysql 中的数据库启动 mysqld 守护进程

120529 10:29:33 [注意] 插件“联邦”被禁用。

120529 10:29:33 InnoDB:InnoDB 内存堆被禁用

120529 10:29:33 InnoDB:互斥锁和 rw_locks 使用 GCC 原子内置函数

120529 10:29:33 InnoDB:压缩表使用 zlib 1.2.3

120529 10:29:33 InnoDB:使用 Linux 原生 AIO

120529 10:29:33 InnoDB:初始化缓冲池,大小 = 1.0G

120529 10:29:33 InnoDB:缓冲池初始化完成

InnoDB:错误:日志文件 ./ib_logfile0 的大小不同 0 134217728 字节

InnoDB:比 .cnf 文件中指定的 0 268435456 字节!

Rol*_*DBA 20

@RickJames@drogart给出的两个答案本质上是补救措施。(每个+1)。

从您提供的错误日志中,最后两行说:

InnoDB:错误:日志文件 ./ib_logfile0 的大小不同 0 134217728 字节

InnoDB:比 .cnf 文件中指定的 0 268435456 字节!`

此时,很明显您将innodb_log_file_size设置为 256M (268435456),my.cnf而 InnoDB Transaction Logs ( ib_logfile0, ib_logfile1) 分别为 128M (134217728)。回顾您问题中指向我的 StackOverflow 答案链接,您必须执行以下操作:

步骤 01) 将此添加到my.cnf

[mysqld]
innodb_buffer_pool_size=4G
innodb_log_file_size=1G
Run Code Online (Sandbox Code Playgroud)

步骤 02) 在操作系统中运行这些命令

mysql -u... -p... -e"SET GLOBAL innodb_fast_shutdown = 1"
service mysql stop
rm -f /var/lib/mysql/ib_logfile*
service mysql start
Run Code Online (Sandbox Code Playgroud)

为了对正在发生的事情有信心,请tail -f针对错误日志运行。您将看到消息,告诉您何时创建每个 innodb 日志文件。

  • 我认为不应删除日志文件,而应将它们移到别处,并在您成功更改日志文件大小后删除它们。否则,如果 MySQL 在你运行 `service mysqld stop` 之前崩溃,你就会遇到麻烦。 (2认同)