所以我对调整 InnoDB 还很陌生。我正在慢慢地将表(在必要时)从 MyIsam 更改为 InnoDB。我在 innodb 中有大约 100MB,所以我将innodb_buffer_pool_size
变量增加到 128MB:
mysql> show variables like 'innodb_buffer%';
+-------------------------+-----------+
| Variable_name | Value |
+-------------------------+-----------+
| innodb_buffer_pool_size | 134217728 |
+-------------------------+-----------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
当我去更改innodb_log_file_size
值时(例如mysql 的 innodb 配置页面上的my.cnf注释将日志文件大小更改为缓冲区大小的 25%。所以现在我的 my.cnf 看起来像这样:
# innodb
innodb_buffer_pool_size = 128M
innodb_log_file_size = 32M
Run Code Online (Sandbox Code Playgroud)
当我重新启动服务器时,出现此错误:
110216 9:48:41 InnoDB:初始化缓冲池,大小 = 128.0M
110216 9:48:41 InnoDB:缓冲池初始化完成
InnoDB:错误:日志文件 ./ib_logfile0 的大小不同 0 5242880 字节
InnoDB:比指定的.cnf 文件 0 33554432 字节!
110216 9:48:41 [错误] …
我有一个中等大小的 MySQL 数据库,大约有 30 个表,其中一些是 1000 万条记录,一些是 1 亿条记录。将mysqldump
所有表(为独立的文件)的速度也相当快,也许需要20分钟。它会生成大约 15GB 的数据。最大的转储文件在 2GB 范围内。
当我将数据加载到另一个机器上的 MySQL 中时,它是一台六核 8GB 的机器,它需要永远。轻松 12 个时钟小时或更多。
我只是运行mysql客户端来加载文件,即
mysql database < footable.sql
Run Code Online (Sandbox Code Playgroud)
直接用mysqldump出来的文件
mysqldump database foo > footable.sql
Run Code Online (Sandbox Code Playgroud)
显然我做错了什么。我从哪里开始才能在合理的时间内完成?
我没有在转储或负载上使用任何开关。