Qwentor
@Qwentor
Веб-программист

Как сделать копию бд, крутящейся в докере (само хранилище на volume) с помощью xtrabackup?

xtrabackup на хосте
ему для копирования базы необходим доступ к /var/run/mysqld/mysqld.sock
MariaDB в контейнере
Запущено так:
docker run --name 10.1.23-mariadb -p 3308:3306 -v /opt/test/mariadb:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=password -d mariadb:10.1.23


Монтирование /var/run/mysqld/ не помогает - файл не появляется на хосте и еще и исчезает в контейнере - база перестает работать.
Как это все организовать?
  • Вопрос задан
  • 237 просмотров
Решения вопроса 1
Qwentor
@Qwentor Автор вопроса
Веб-программист
Короче так:
echo /var/lib/docker/aufs/diff/$(cat /var/lib/docker/image/aufs/layerdb/mounts/$(docker inspect --format="{{.Id}}" 10.1.23-mariadb)/mount-id)/run/mysqld/mysqld.sock

и получаю прямой путь до сокета

пофиг, что он может меняться после пересоздания, т.к. это только для теста, да и если будет в реале такая конфигурация - my.cnf можно генерировать скриптом
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Xuxicheta
@Xuxicheta
инженер
https://github.com/martin-helmich/docker-xtrabackup
может поможет

а вообще вы можете смонтировать именно /var/run/mysqld/mysqld.sock, но этот файл уже должен быть до запуска контейнера.
Ответ написан
Комментировать
chupasaurus
@chupasaurus
Сею рефлекторное, злое, временное
Не надо смешивать контейнеры с процессами на хосте.
Монтировать директорию для бэкапов заранее, запускать xtrabackup из контейнера.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы