docker mysql备份还原

  1. 查看当前启动的mysql运行容器

    > [root@luyuhui bin]# docker ps
    > CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    > 3301b7de7002 75576f90a779 "docker-entrypoint..." 4 weeks ago Up 4 days 0.0.0.0:3306->3306/tcp mymysql
  2. 使用以下命令备份导出数据库中的所有表结构和数据

    > docker exec -it mymysql mysqldump -uroot -p123456 dblog > /data/test.sql
    #恢复数据 注:注释掉第一行,替换掉数据库名带前辍的
    #docker 还原备份
    docker exec -i mymysql mysql -uroot -p123456 dblog < /data/test.sql

debian mysql 定时自己主动备份的脚本

#!/bin/sh
LOG=/var/log/mysql-backup.log
# mysql db info
USER_ROOT=XXXXXX
USER_PWD=XXXXXXX
# mysql data stored dir
TODAY=`date +%F`
STOREDIR=/mnt/tf-card/mysql-back/$TODAY
mkdir $STOREDIR
echo "*** PATH:$STOREDIR mysql-backup ***" >> $LOG
# delete overtime backup files
rm -rf /mnt/tf-card/mysql-back/$(date +%F --date='15 days ago')
# backup mysql data file
mysqldump -u$USER_ROOT --password=$USER_PWD --databases my_yd_net --lock-all-tables --flush-logs |gzip>$STOREDIR/my_yd_net.sql.gz

创建脚本:nano /etc/cron.daily/mysql-backup

添加运行权限:chmod +x /etc/cron.daily/mysql-backup
创建备份文件根文件夹:mkdir /mnt/tf-card/mysql-back/

解释:此脚本每天会生成一个备份文件夹,/mnt/tf-card/mysql-back/yyyy-mm-dd/xxxx.sql.gz。并持保留15天内的数据,并对导出的sql文件用gzip压缩

查看运行时间:cat /etc/crontab

文件夹可自行改动,mysql的连接帐号USER_ROOT与USER_PWD自行改动。

“# backup mysql data file”这个部分的语句以下能够加入多条 mysqldump 备份语句,一次备份多个库。

对于超过15天的数据处理:每天会尝试删除一次第15天前的一个文件。

#!/bin/bash
DBPATH=/mnt/user/www/dbase/
LOG=$DBPATH'mysql-backup.log'
# mysql db info
USER_ROOT=username
USER_PWD=password
# mysql data stored dir
TODAY=`date +%F`
STOREDIR=$DBPATH$TODAY
mkdir $STOREDIR
echo "*** PATH:$STOREDIR mysql backup ***" >> $LOG
# delete overtime backup files
rm -rf $DBPATH$(date +%F --date='15 days ago')
# backup mysql data file
/usr/bin/docker exec mariadb /usr/bin/mysqldump -u$USER_ROOT --password=$USER_PWD --databases diynet --lock-all-tables --flush-logs |gzip>$STOREDIR/diynet.sql.gz
sleep 5
/usr/bin/docker exec mariadb /usr/bin/mysqldump -u$USER_ROOT --password=$USER_PWD --databases typecho --lock-all-tables --flush-logs |gzip>$STOREDIR/typecho.sql.gz