Don*_*Don 6 mysql mariadb docker docker-toolbox
我在 docker windows 工具包上运行 mariadb 实例。我使用 kitematic 对 mariaDB 容器进行了环境更改。现在它重新创建了一个丢失我所有数据库的实例。有没有办法从中恢复?
检查是否有悬空卷,并且很少
docker volume ls -f dangling=true
使用悬空卷恢复了数据。方法如下。
首先获取悬空卷的列表。
$ docker volume ls -f dangling=true
DRIVER VOLUME NAME
local 6f79b6329d98379495a284287e32a7a57605483dd7bf7fa19924fb2a98fb1d19
local 47bb077ef6f6df9f56bd30c35eeb45f35e62213d2c50db6f078bfdeeee6698ec
Run Code Online (Sandbox Code Playgroud)
然后将其安装到 Ubuntu 容器上(以便您可以进入目录并检查那里有什么,因为在 Windows 上使用 Docker 工具箱时没有其他方法可以做到这一点)
$ docker run --name tempContainer1-UBUNTU -v 6f79b6329d98379495a284287e32a7a57605483dd7bf7fa19924fb2a98fb1d19:/var/lib/backup -t -i ubuntu /bin/bash
Run Code Online (Sandbox Code Playgroud)
然后您将进入新创建的容器的 bash。转到新安装的目录并检查内容
$cd /var/lib/backup
$ls
$aria_log.00000001 aria_log_control ib_buffer_pool ib_logfile0 ib_logfile1 ibdata1 ibtmp1 multi-master.info mysql performance_schema
-- once you are sure directory data is what you require, make a zip file of the folder
$apt-get update
$apt-get install zip
$cd ..
$zip -r backup.zip backup
Run Code Online (Sandbox Code Playgroud)
在主机的另一个终端上,将容器 backup.zip 的内容复制到主机
$docker cp tempContainer1-UBUNTU:/var/lib/backup.zip .
Run Code Online (Sandbox Code Playgroud)
然后创建一个如下所示的 docker compose 文件并将备份文件夹挂载为数据目录。在 linux 主机上运行此程序,因为此安装在 windows 上的 mysql 无法按预期工作。
version: "3.2"
services:
mysql:
image: mariadb:10.4.12
restart: always
ports:
- "3306:3306"
command: mysqld --innodb-flush-method=littlesync --innodb-use-native-aio=ON --log_bin=ON
volumes:
- ./backup_data_folder:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: somepassword
TZ: Asia/Singapore
networks:
- frontend
container_name: maria
networks:
frontend:
Run Code Online (Sandbox Code Playgroud)
开始
$docker-compose up
Run Code Online (Sandbox Code Playgroud)
一旦启动,从另一个终端进入新创建的容器
$docker exec -t -i maria /bin/bash
-- Take dump of all the DBS
$mysqldump -u root -p --all-databases > alldb.sql
Run Code Online (Sandbox Code Playgroud)
将转储内容从主机的另一个终端复制到主机
$docker cp maria:/alldb.sql .
Run Code Online (Sandbox Code Playgroud)
现在这个 sql 文件是一个完整的转储,像往常一样在你的 mysql DB 或 contianer 上恢复它。
mysql -u root -p < alldb.sql
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2009 次 |
最近记录: |