【问题标题】:Can't start mysqld/mysql无法启动 mysqld/mysql
【发布时间】:2013-12-13 16:03:21
【问题描述】:

首先我不得不说我是一个 mysql 新手。 基本上mysql没有启动并说:

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

下面是我毁掉一切的步骤:

由于无法登录我的系统 (otrs),我认为恢复旧备份会有所帮助。

在还原过程中,备份管理员说我需要删除旧数据库。我试过了,但过程没有完成,所以我取消了。

在此之后,我尝试重新启动系统,但遇到了很大的问题,但是当我完成重新启动后,我尝试运行 mysql,但它说找不到 mysql.socket。

此时我认为重新安装 mysql 会更好,但这样做并没有帮助。 当尝试以 mysql 用户身份启动 mysqld 时,它说:

[ERROR] Found 1 prepared transactions! It means that mysqld was not shut down properly last time and critical recovery information (last binlog or tc.log file) was manually deleted after a crash. You have to start mysqld with --tc-heuristic-recover switch to commit or rollback pending transactions. 

尝试两者都没有帮助:

mysql:/root> /usr/sbin/mysqld  --tc-heuristic-recover commit
131213 16:46:00 InnoDB: The InnoDB memory heap is disabled
131213 16:46:00 InnoDB: Mutexes and rw_locks use GCC atomic builtins
131213 16:46:00 InnoDB: Compressed tables use zlib 1.2.7
131213 16:46:00 InnoDB: Using Linux native AIO
131213 16:46:00 InnoDB: Initializing buffer pool, size = 128.0M
131213 16:46:00 InnoDB: Completed initialization of buffer pool
131213 16:46:00 InnoDB: highest supported file format is Barracuda.
131213 16:46:01  InnoDB: Waiting for the background threads to start
131213 16:46:02 Percona XtraDB (http://www.percona.com) 5.5.33-MariaDB-31.1 started; log sequence number 3710898915
131213 16:46:02 [Note] Server socket created on IP: '0.0.0.0'.
131213 16:46:02 [ERROR] Event Scheduler: Failed to open table mysql.event
131213 16:46:02 [ERROR] Event Scheduler: Error while loading from disk.
131213 16:46:02 [Note] Event Scheduler: Purging the queue. 0 events
131213 16:46:02 [ERROR] Aborting

131213 16:46:02  InnoDB: Starting shutdown...
131213 16:46:03  InnoDB: Shutdown completed; log sequence number 3710898915
131213 16:46:03 [Note] /usr/sbin/mysqld: Shutdown complete

运行 systemctl start mysql.service 随时失败:

mysql.service - LSB: Start the MySQL database server
          Loaded: loaded (/etc/init.d/mysql)
          Active: failed (Result: timeout) since Fri, 13 Dec 2013 16:27:12 +0100; 23min ago
         Process: 8845 ExecStart=/etc/init.d/mysql start (code=killed, signal=TERM)
          CGroup: name=systemd:/system/mysql.service

Dec 13 16:31:21  mysql[8845]: otrs.user_preferences                              OK
Dec 13 16:31:21  mysql[8845]: otrs.users                                         OK
Dec 13 16:31:21  mysql[8845]: otrs.valid                                         OK
Dec 13 16:31:21  mysql[8845]: otrs.virtual_fs                                    OK
Dec 13 16:31:21  mysql[8845]: otrs.virtual_fs_db                                 OK
Dec 13 16:31:21  mysql[8845]: otrs.virtual_fs_preferences                        OK
Dec 13 16:31:21  mysql[8845]: otrs.web_upload_cache                              OK
Dec 13 16:31:21  mysql[8845]: otrs.xml_storage                                   OK
Dec 13 16:31:21  mysql[8845]: performance_schema
Dec 13 16:31:21  mysql[8845]: Phase 3/3: Running 'mysql_fix_privilege_tables'...

我完全不知道该怎么做。谁能帮助我? 如何在不使用 mysql DROP 命令的情况下删除/删除 otrs 表? 无论如何这会有帮助吗?

谢谢。

【问题讨论】:

  • 我想补充一点,在 Fedora 28 和 MariaDB 10.2.21 发生服务器崩溃后,我遇到了这个问题。我以 root 身份执行了 sudo -u mysql mysqld_safe --tc-heuristic-recover=commit ,然后使用 systemctl 正常启动了 mariadb 服务,问题得到解决。

标签: opensuse mysql


【解决方案1】:
mysqld --tc-heuristic-recover=ROLLBACK

并没有完全为我施展魔法。但是以下工作

mysqld_safe --tc-heuristic-recover=COMMIT

【讨论】:

    【解决方案2】:

    我能够在 CentOS 6 上解决这个问题

    service mysql start --tc-heuristic-recover=ROLLBACK
    

    最终丢弃了有问题的提交。我不确定 systemd 脚本是否支持传递其他参数。也许您可以尝试使用 = 手动运行它

    mysqld --tc-heuristic-recover=ROLLBACK
    

    【讨论】:

      【解决方案3】:

      在 mysql 5.6.x 上,由于这个单独的 https://bugs.mysql.com/bug.php?id=70860 错误,我能够通过这样做来解决这个问题

      sudo service mysql start --tc-heuristic-recover=0
      

      大概会提交 tx。

      【讨论】:

        【解决方案4】:

        回答来自->> https://www.youtube.com/watch?v=qr-t8ksYO78

        转到my.cnf文件,注意你会找到多个my.cnf文件,我必须查看所有文件才能找到这个->

         # The MySQL server
            [mysqld]
            user = mysql
            port=3306
            socket      = /opt/lampp/var/mysql/mysql.sock
        

        复制socket路径,写成->

        mysql -u root -p --socket=/opt/lampp/var/mysql/mysql.sock 
        

        谢谢

        【讨论】:

          【解决方案5】:

          你可以试试我使用的这个命令Centos 7 是有效的:

          #mysqld_safe --wsrep-recover --tc-heuristic-recover=ROLLBACK

          然后重新启动服务。

          【讨论】:

          • 请在您的回答中提供更多详细信息。正如目前所写的那样,很难理解您的解决方案。
          【解决方案6】:

          如果以上任何一项都不适合您。

          1. 通过执行以下操作编辑 mysql 配置文件: sudo nano /etc/mysql/my.cnf 并在[mysqld] 下添加tc-heuristic-recover=rollback

          2. 尝试通过以下方式启动 mysql/mariadb 服务器 sudo systemctl start mysqld.service,它应该会失败并出现此错误Can't init tc log。

          3. 别着急,再次编辑配置文件并评论tc-heuristic-recover=rollback

          4. 尝试使用sudo systemctl start mysqld.service 再次启动mysql 服务器,它应该可以正常工作。

          5. 查看状态确认systemctl status mysqld.service

          【讨论】:

            猜你喜欢
            • 2012-12-20
            • 1970-01-01
            • 2017-03-06
            • 2014-08-22
            • 1970-01-01
            • 1970-01-01
            • 2014-09-10
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多