dedecms生成文档数据库崩溃 mysql daemon failed to start

本文记录了在迁移网站过程中遇到的MySQL启动失败问题及解决过程。主要原因是内存分配不足导致无法启动,通过调整配置文件中InnoDB缓冲池大小解决了问题。

 迁移的网站生成文档到三分之一左右的时候报错:

Error infos:DedeCms错误警告:连接数据库失败可能是数据库密码不对或数据库服务器出错!

火大,登陆MySQL发现

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'

service mysqld restart 重启失败:mysql daemon failed to start

cat /var/log/mysqld.log 发现:

 [NOTE] InnoDB: Initializing buffer pool, size = 128.0M
 [NOTE] InnoDB: mmap(137363456 bytes) failed; errno 12
 [ERROR] InnoDB: Cannot allocate memory for the buffer pool
 [ERROR] Plugin 'InnoDB' init function returned error.
 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
 [ERROR] Unknown/unsupported storage engine: InnoDB
 [ERROR] Aborting

问题找到,分配不了足够的内存,

vim /etc/my.cnf

innodb_buffer_pool_size=100M

service mysqld start --------ok

搞定 

 

转载于:https://www.cnblogs.com/convincee/p/9366886.html

<think>我们正在解决MySQL服务启动失败的问题,错误信息显示:`mysqld_safe: line 653: /var/lib/mysql not found`。这意味着MySQL服务在启动时无法找到数据目录`/var/lib/mysql`。以下是完整的解决方案: ### 1. 确认数据目录是否存在 首先,检查`/var/lib/mysql`目录是否存在: ```bash sudo ls -ld /var/lib/mysql ``` - 如果目录不存在,则需要创建: ```bash sudo mkdir -p /var/lib/mysql ``` ### 2. 设置正确的权限 MySQL服务需要对该目录拥有读写权限: ```bash sudo chown -R mysql:mysql /var/lib/mysql sudo chmod -R 750 /var/lib/mysql ``` ### 3. 检查MySQL配置文件 查看MySQL的配置文件(通常是`/etc/my.cnf`或`/etc/mysql/my.cnf`),确认`datadir`设置是否正确: ```ini [mysqld] datadir=/var/lib/mysql ``` ### 4. 初始化MySQL数据目录(如果为空) 如果目录是新建的且为空,需要初始化数据库: ```bash sudo mysqld --initialize --user=mysql ``` 初始化后,会在日志中生成临时root密码(通常在`/var/log/mysqld.log`中)。 ### 5. 启动MySQL服务 ```bash sudo systemctl start mysql ``` ### 6. 检查错误日志 如果仍然失败,查看错误日志定位问题: ```bash sudo tail -f /var/log/mysql/error.log ``` ### 常见问题及解决: - **磁盘空间不足**:使用`df -h`检查磁盘空间,清理空间。 - **内存不足**:增加swap空间(参考之前的解决方案)。 - **SELinux阻止**:临时禁用`sudo setenforce 0`或调整策略。 ### 解决方案流程图 ```mermaid graph TD A[启动失败] --> B{检查/var/lib/mysql是否存在} B -->|不存在| C[创建目录并设置权限] B -->|存在| D[检查目录权限] C --> E[检查配置文件datadir设置] D --> E E --> F{目录是否为空} F -->|是| G[执行mysqld --initialize] F -->|否| H[检查错误日志] G --> I[启动服务] H --> I I --> J{成功?} J -->|是| K[问题解决] J -->|否| L[分析错误日志] ``` ### 关键命令参考 | 命令 | 作用 | |------|------| | `sudo mkdir -p /var/lib/mysql` | 创建数据目录 | | `sudo chown -R mysql:mysql /var/lib/mysql` | 设置目录所有者 | | `sudo mysqld --initialize --user=mysql` | 初始化数据库 | | `sudo systemctl start mysql` | 启动服务 | > **注意**:初始化操作会生成新的数据库,如果已有数据,请勿初始化!此时应检查目录权限或磁盘状态。 §§相关问题§§ 1. 如何安全地修改MySQL数据目录路径? 2. MySQL初始化过程中出现错误如何解决? 3. 如何恢复因权限问题损坏的MySQL数据库? 4. 系统磁盘空间不足导致MySQL崩溃如何处理?</think>### 解决 MySQL 服务启动失败:"/var/lib/mysql not found" 错误 #### 问题分析 错误信息表明 MySQL 服务无法找到数据目录 `/var/lib/mysql`,导致启动失败。可能原因包括: 1. 数据目录不存在或路径错误 2. 权限配置不正确 3. 配置文件指向错误位置 4. 磁盘空间不足(引用日志中的"不够"提示) 5. 依赖包缺失(参考引用[2]的perl依赖问题) --- ### 逐步解决方案 #### 1. 验证数据目录存在性 ```bash # 检查目录是否存在 sudo ls -ld /var/lib/mysql # 若不存在则创建 sudo mkdir -p /var/lib/mysql sudo chown -R mysql:mysql /var/lib/mysql sudo chmod 750 /var/lib/mysql ``` #### 2. 检查配置文件路径 ```bash # 查看当前配置 sudo grep -r "datadir" /etc/mysql/ /etc/my.cnf # 修正配置(若路径错误) sudo sed -i 's|datadir=.*|datadir=/var/lib/mysql|g' /etc/my.cnf ``` #### 3. 修复磁盘空间问题 ```bash # 检查磁盘空间 df -h /var/lib/mysql # 清理旧日志(释放空间) sudo rm /var/log/mysql/error.log.* ``` #### 4. 初始化数据库(首次安装) ```bash # 初始化系统表(仅限空目录) sudo mysqld --initialize --user=mysql --datadir=/var/lib/mysql # 记录生成的临时root密码 sudo grep 'temporary password' /var/log/mysqld.log ``` #### 5. 修复依赖问题(参考引用[2]) ```bash # 安装perl依赖 sudo yum install perl-Data-Dumper # 检查其他依赖 sudo ldd /usr/sbin/mysqld | grep "not found" ``` #### 6. 重建服务配置 ```bash # 重新生成服务文件 sudo cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld sudo systemctl daemon-reload ``` #### 7. 启动服务并验证 ```bash sudo systemctl start mysql sudo systemctl status mysql mysql -u root -p ``` --- ### 关键操作流程图解 ```mermaid graph TD A[启动失败] --> B{检查/var/lib/mysql} B -->|不存在| C[创建目录并授权] B -->|存在| D[检查权限] C --> E[检查配置文件] D -->|权限错误| F[chown/chmod修复] E -->|路径错误| G[修正datadir配置] E -->|配置正确| H[检查磁盘空间] H -->|空间不足| I[清理日志/扩磁盘] H -->|空间足够| J[初始化数据库] J --> K[修复依赖] K --> L[启动服务] ``` ### 补充说明 1. **权限设置公式**: 目录权限需满足: $ \text{owner} = \text{mysql} \quad \land \quad \text{group} = \text{mysql} \quad \land \quad \text{mode} \geq 750 $ 2. **配置文件优先级**: MySQL 按顺序加载配置: $$ \text{/etc/my.cnf} \rightarrow \text{/etc/mysql/my.cnf} \rightarrow \text{~/.my.cnf} $$ > **重要提示**:初始化操作会重置数据库,仅限新安装或可丢失数据的场景使用!生产环境需先备份。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值