MySQL 服务器未在 mac OS 上通过 MAMP 运行
MySQL server doesn't run via MAMP on mac OS
我将 MAMP PRO 3.5.2 版本升级到第 5 版,MySQL 启动失败。
我通过 killall -9 mysqld
终止了 mysqld 进程,清理了 ib_logfile*
之类的日志文件并尝试使用 innodb recovery
进行操作。
我得到的日志是这样的:
2018-10-10T14:16:12.6NZ mysqld_safe Logging to '/Applications/MAMP/logs/mysql_error.log'.
2018-10-10T14:16:12.6NZ mysqld_safe Starting mysqld daemon with databases from /Library/Application Support/appsolute/MAMP PRO/db/mysql57
2018-10-10T14:16:13.043096Z 0 [Warning] Insecure configuration for --secure-file-priv: Current value does not restrict location of generated files. Consider setting it to a valid, non-empty path.
2018-10-10T14:16:13.051110Z 0 [Note] /Applications/MAMP/Library/bin/mysqld (mysqld 5.7.23) starting as process 5538 ...
2018-10-10T14:16:13.064223Z 0 [Warning] Setting lower_case_table_names=2 because file system for /Library/Application Support/appsolute/MAMP PRO/db/mysql57/ is case insensitive
2018-10-10T14:16:13.074890Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2018-10-10T14:16:13.074926Z 0 [Note] InnoDB: Uses event mutexes
2018-10-10T14:16:13.074936Z 0 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
2018-10-10T14:16:13.074943Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.3
2018-10-10T14:16:13.074972Z 0 [Note] InnoDB: Adjusting innodb_buffer_pool_instances from 8 to 1 since innodb_buffer_pool_size is less than 1024 MiB
2018-10-10T14:16:13.079521Z 0 [Note] InnoDB: Number of pools: 1
2018-10-10T14:16:13.084840Z 0 [Note] InnoDB: Using CPU crc32 instructions
2018-10-10T14:16:13.089357Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M
2018-10-10T14:16:13.114376Z 0 [Note] InnoDB: Completed initialization of buffer pool
2018-10-10T14:16:13.140491Z 0 [Note] InnoDB: Highest supported file format is Barracuda.
2018-10-10T14:16:13.145746Z 0 [ERROR] InnoDB: Trying to access page number 527111 in space 0, space name innodb_system, which is outside the tablespace bounds. Byte offset 0, len 16384, i/o type read. If you get this error at mysqld startup, please check that your my.cnf matches the ibdata files that you have in the MySQL server.
2018-10-10T14:16:13.145772Z 0 [ERROR] InnoDB: Server exits.
2018-10-10T14:16:13.6NZ mysqld_safe mysqld from pid file /Applications/MAMP/tmp/mysql/mysql.pid ended
在我开始考虑卸载并重新安装 MAMP 时,希望得到任何提示,这意味着我将丢失很少的本地数据库安装。
谢谢!
因此问题已解决,MySQL 通过 MAMP 5.1 在本地运行。
在找出问题所在时 my.cnf
应用了以下设置:
- 增加了
innodb_buffer_pool_size
值:innodb_buffer_pool_size = 1024M
- 强制恢复模式已开启
innodb_force_recovery = 1
导致问题中提到的错误:
[ERROR] InnoDB: Trying to access page number 527111 in space 0, space name innodb_system, which is outside the tablespace bounds. Byte offset 0, len 16384, i/o type read. If you get this error at mysqld startup, please check that your my.cnf matches the ibdata files that you have in the MySQL server.
此时 ibdata
目录和路径的默认设置在 my.cnf
:
中取消注释
innodb_data_home_dir = "/Library/Application Support/appsolute/MAMP PRO/db/mysql57"
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = "/Library/Application Support/appsolute/MAMP PRO/db/mysql57"
错误日志报告了访问限制(我前面没有确切的句子),这里丢失了一点,作为猜测措施,我将文件夹 /Library/Application Support/appsolute/MAMP PRO/db/mysql57
的权限扩展到我当前的用户。
这并没有改变日志。关于 ibdata
错误路径的错误仍然存在。
最后,将文件夹 mysql
(ibdata
(~40Gb) 的完整版本在哪里)重命名为 mysql57
有所帮助。
安装 MAMP 5.1 后 /Library/Application Support/appsolute/MAMP PRO/db/
中的文件夹结构如下:
-- mysql
-- mysql56_TIMESTAMP
-- mysql57
具有相同的文件结构,但仔细比较内容发现 mysql
中的文件是完整版本,因此将其重命名,并删除了所有文件夹,经过测试 MAMP 可以正常工作,无需他们。
所以现在我在 /Library/Application Support/appsolute/MAMP PRO/db/
中只有一个 mysql
文件夹。我在这个过程中自定义的 my.cnf
里面的设置回滚了。
我将 MAMP PRO 3.5.2 版本升级到第 5 版,MySQL 启动失败。
我通过 killall -9 mysqld
终止了 mysqld 进程,清理了 ib_logfile*
之类的日志文件并尝试使用 innodb recovery
进行操作。
我得到的日志是这样的:
2018-10-10T14:16:12.6NZ mysqld_safe Logging to '/Applications/MAMP/logs/mysql_error.log'.
2018-10-10T14:16:12.6NZ mysqld_safe Starting mysqld daemon with databases from /Library/Application Support/appsolute/MAMP PRO/db/mysql57
2018-10-10T14:16:13.043096Z 0 [Warning] Insecure configuration for --secure-file-priv: Current value does not restrict location of generated files. Consider setting it to a valid, non-empty path.
2018-10-10T14:16:13.051110Z 0 [Note] /Applications/MAMP/Library/bin/mysqld (mysqld 5.7.23) starting as process 5538 ...
2018-10-10T14:16:13.064223Z 0 [Warning] Setting lower_case_table_names=2 because file system for /Library/Application Support/appsolute/MAMP PRO/db/mysql57/ is case insensitive
2018-10-10T14:16:13.074890Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2018-10-10T14:16:13.074926Z 0 [Note] InnoDB: Uses event mutexes
2018-10-10T14:16:13.074936Z 0 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
2018-10-10T14:16:13.074943Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.3
2018-10-10T14:16:13.074972Z 0 [Note] InnoDB: Adjusting innodb_buffer_pool_instances from 8 to 1 since innodb_buffer_pool_size is less than 1024 MiB
2018-10-10T14:16:13.079521Z 0 [Note] InnoDB: Number of pools: 1
2018-10-10T14:16:13.084840Z 0 [Note] InnoDB: Using CPU crc32 instructions
2018-10-10T14:16:13.089357Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M
2018-10-10T14:16:13.114376Z 0 [Note] InnoDB: Completed initialization of buffer pool
2018-10-10T14:16:13.140491Z 0 [Note] InnoDB: Highest supported file format is Barracuda.
2018-10-10T14:16:13.145746Z 0 [ERROR] InnoDB: Trying to access page number 527111 in space 0, space name innodb_system, which is outside the tablespace bounds. Byte offset 0, len 16384, i/o type read. If you get this error at mysqld startup, please check that your my.cnf matches the ibdata files that you have in the MySQL server.
2018-10-10T14:16:13.145772Z 0 [ERROR] InnoDB: Server exits.
2018-10-10T14:16:13.6NZ mysqld_safe mysqld from pid file /Applications/MAMP/tmp/mysql/mysql.pid ended
在我开始考虑卸载并重新安装 MAMP 时,希望得到任何提示,这意味着我将丢失很少的本地数据库安装。
谢谢!
因此问题已解决,MySQL 通过 MAMP 5.1 在本地运行。
在找出问题所在时 my.cnf
应用了以下设置:
- 增加了
innodb_buffer_pool_size
值:innodb_buffer_pool_size = 1024M
- 强制恢复模式已开启
innodb_force_recovery = 1
导致问题中提到的错误:
[ERROR] InnoDB: Trying to access page number 527111 in space 0, space name innodb_system, which is outside the tablespace bounds. Byte offset 0, len 16384, i/o type read. If you get this error at mysqld startup, please check that your my.cnf matches the ibdata files that you have in the MySQL server.
此时 ibdata
目录和路径的默认设置在 my.cnf
:
innodb_data_home_dir = "/Library/Application Support/appsolute/MAMP PRO/db/mysql57"
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = "/Library/Application Support/appsolute/MAMP PRO/db/mysql57"
错误日志报告了访问限制(我前面没有确切的句子),这里丢失了一点,作为猜测措施,我将文件夹 /Library/Application Support/appsolute/MAMP PRO/db/mysql57
的权限扩展到我当前的用户。
这并没有改变日志。关于 ibdata
错误路径的错误仍然存在。
最后,将文件夹 mysql
(ibdata
(~40Gb) 的完整版本在哪里)重命名为 mysql57
有所帮助。
安装 MAMP 5.1 后 /Library/Application Support/appsolute/MAMP PRO/db/
中的文件夹结构如下:
-- mysql
-- mysql56_TIMESTAMP
-- mysql57
具有相同的文件结构,但仔细比较内容发现 mysql
中的文件是完整版本,因此将其重命名,并删除了所有文件夹,经过测试 MAMP 可以正常工作,无需他们。
所以现在我在 /Library/Application Support/appsolute/MAMP PRO/db/
中只有一个 mysql
文件夹。我在这个过程中自定义的 my.cnf
里面的设置回滚了。