我收到以下错误。我不确定如何运行告诉我运行的命令,因为容器一直在重新启动。长话短说,我的存储空间已满,因为由于某种原因,我的日志文件一直越来越大,直到它填满了驱动器。我删除了Nginx的日志文件和全局数据库日志。之后,我重新启动了服务器。所有容器都已备份到services_global-db_1容器旁边。当检查该容器的日志时,我收到以下消息。
2019-09-25T20:20:15.842133542Z 2019-09-25 20:20:15 140606507280320 [Note] Found 2 prepared transaction(s) in InnoDB
2019-09-25T20:20:15.842251547Z 2019-09-25 20:20:15 140606507280320 [ERROR] Found 2 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.
2019-09-25T20:20:15.842326927Z 2019-09-25 20:20:15 140606507280320 [ERROR] Aborting
我尝试与容器打开bash会话(docker exec -it services_global-db_1 bash
),因此我可以运行下面说明的SQL命令(mysqld_safe --tc-heuristic-recover=COMMIT
),但是每次我得到的消息都是{{1 }}。
由于无法执行SQL命令而无法修复的SQL错误,如何在无法继续运行的容器中运行命令?
更新:我尝试使用Container 64b72eb0898e7... is restarting, wait until the container is running
手动运行MariaDB容器,以便可以运行需要运行的SQL命令来修复数据库错误。我能够启动容器并访问它,但是当我尝试启动MySQL服务时,出现以下错误。
docker run -it --rm --entrypoint /bin/bash easyengine/mariadb:v4.0.0
我认为我在运行语句中丢失了一些命令或参数,这以错误的方式或某种方式创建了容器,因为看起来MariaDB找不到要打开的正确文件。有人可以向我解释如何手动运行MariaDB容器,以便能够打开MySQL服务并运行脚本,从而解决提交错误并恢复数据库并运行吗?
请多谢您能提供的任何帮助!