یک اسکریپت نوشتم که هر روز از volume کانتینر MySQL پشتیبان بگیره و ذخیره کنه و برای تست هم خود کانتینر با volume اش رو پاک کردم و و دوباره بک آپ رو برگردوندم و تمامی جدول ها و داده های توی اون هم برگشت.
کامند پشتیبان گیری:
1 2 |
docker run --rm --volumes-from mysql_test -v /c/code/msyqltest/backup:/backup busybox tar cvfz /backup/mysql_data_backup.tar --directory=/var/lib/mysql . docker run --rm --volumes-from mysql_test -v /c/code/msyqltest/backup:/backup busybox tar cvfz /backup/mysql_config_backup.tar --directory=/etc/mysql/conf.d . |
و با کامندهای زیر هم پشتیبان رو به روی کانتینر جدید برگردوندم:
1 2 |
docker run --rm --volumes-from mysql_test -v /c/code/msyqltest/backup:/backup busybox sh -c "cd /var/lib/mysql && tar xvf /backup/mysql_data_backup.tar --strip 1" docker run --rm --volumes-from mysql_test -v /c/code/msyqltest/backup:/backup busybox sh -c "cd /etc/mysql/conf.d && tar xvf /backup/mysql_config_backup.tar --strip 1" |
لازمه که بدونیم که خود کانتینر با compose زیر ساخته شده و دو تا volume داره:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
version: '3.8' services: mysql: image: mysql container_name: mysql_test restart: always hostname: mysql.local environment: discovery.type: single-node MYSQL_ROOT_PASSWORD: test MYSQL_DATABASE: test_database ports: - 3306:3306 volumes: - mysql_data:/var/lib/mysql - mysql_config:/etc/mysql/conf.d volumes: mysql_data: driver: local mysql_config: driver: local |