微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Docker - 从 ib_logfile / ibdata / ibtemp 恢复 MySQL 数据库

如何解决Docker - 从 ib_logfile / ibdata / ibtemp 恢复 MySQL 数据库

背景:

我们有一个在 Docker 中运行的 Redmine 堆栈,在 Debian 虚拟机中 - 它还提供更多 Docker 堆栈 -。必须关闭 VM 以添加更多 vRAM,并且在停止容器时我们注意到 Redmine 堆栈正在输出大量消息。每个其他堆栈都相应地运行。上次重启 Stack 是在 5 个月前(部署时)。

注意:如果权限看起来不对,那是因为这是最后一个状态的副本。具有正确权限的存档可用。整个 VM 的备份也可用。备份通过 Veeam Backup and Replication 处理。

当前状态:

ib_logfile0、ib_logfile1、ibdata1 的总大小为 172 MB。

docker-user@rosdocker01:~$ ls -lh redmine-softentw/storage/db/
total 176M
-rw-r----- 1 systemd-coredump docker-user        56 Nov 24  2020 auto.cnf
-rw-rw-r-- 1 systemd-coredump docker-user      3.4M Jun 28 15:27 backup.sql
-rw------- 1 systemd-coredump docker-user      1.7K Nov 24  2020 ca-key.pem
-rw-r--r-- 1 systemd-coredump docker-user      1.1K Nov 24  2020 ca.pem
-rw-r--r-- 1 systemd-coredump docker-user      1.1K Nov 24  2020 client-cert.pem
-rw------- 1 systemd-coredump docker-user      1.7K Nov 24  2020 client-key.pem
-rw-r----- 1 systemd-coredump systemd-coredump  600 Jun 29 08:56 ib_buffer_pool
-rw-r----- 1 systemd-coredump docker-user       48M Jun 29 08:56 ib_logfile0
-rw-r----- 1 systemd-coredump docker-user       48M Nov 24  2020 ib_logfile1
-rw-r----- 1 systemd-coredump docker-user       76M Jun 29 08:56 ibdata1
drwxr-x--- 2 systemd-coredump docker-user      4.0K Nov 24  2020 MysqL
-rw-r--r-- 1 systemd-coredump root                0 Jun 28 15:09 MysqLdump-all.sql
drwxr-x--- 2 systemd-coredump docker-user      4.0K Nov 24  2020 performance_schema
-rw------- 1 systemd-coredump docker-user      1.7K Nov 24  2020 private_key.pem
-rw-r--r-- 1 systemd-coredump docker-user       452 Nov 24  2020 public_key.pem
drwxr-x--- 2 systemd-coredump docker-user      4.0K Nov 24  2020 redmine
-rw-r--r-- 1 systemd-coredump docker-user      1.1K Nov 24  2020 server-cert.pem
-rw------- 1 systemd-coredump docker-user      1.7K Nov 24  2020 server-key.pem
drwxr-x--- 2 systemd-coredump docker-user       12K Nov 24  2020 sys
docker-user@rosdocker01:~$ 

文件夹 'redmine' 只有一个 'db.opt' 文件,里面有 65B。

在 Stack 正常停止之前的每日备份中,存在文件“ibtmp1” - 12.0MB -。

我们的 Redmine docker-compose.yml 看起来像这样:

docker-user@rosdocker01:~$ cat redmine-softentw/docker-compose.yml.bak 
version: '3.1'

volumes:
   redmine-softentw:
       external: true
   redmine-softentw-db:
       external: true


services:
  redmine-softentw:
    image: redmine:4.1.1
    restart: unless-stopped
    expose:
      - 3000
    #ports:
    #  - 8080:3000
    environment:
      REDmine_DB_MysqL: redmine
      REDmine_DB_PASSWORD: example
      REDmine_SECRET_KEY_BASE: supersecretkey
    environment:
      - "VIRTUAL_HOST=redmine.company.tld"
      - "VIRTUAL_PORT=80"
    depends_on:
      - redmine-softentw-db
    networks:
      - bsdocker 
    volumes:
      - "redmine-softentw:/src/redmine/files"

  redmine-softentw-db:
    image: MysqL:5.7
    restart: unless-stopped
    environment:
      MysqL_ROOT_PASSWORD: example
      MysqL_DATABASE: redmine
    networks:
      - bsdocker
    volumes:
      - "redmine-softentw-db:/var/lib/MysqL"

networks:
   bsdocker:
     external: true

docker-user@rosdocker01:~$ 

存储文件的存储是使用以下 bash 脚本创建的:

STORAGE_PATH=${PWD}
mkdir -p "$STORAGE_PATH"/storage/{data,db}
docker volume create --driver local --opt type=none --opt device="$STORAGE_PATH"/storage/data --opt o=bind redmine-softentw
docker volume create --driver local --opt type=none --opt device="$STORAGE_PATH"/storage/db --opt o=bind redmine-softentw-db

问题:

是否可以从 ib_logfile0、ib_logfile1、ibdata1 或 ibtmp1 恢复数据库? 或者至少从这个文件中捕获 sql 查询/事务,以便能够重新创建数据库

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。