Docker 下MySQL数据库的备份和恢复的操作方法,


目录
  • docker
  • 备份和恢复:
  • 恢复:
    • 自动化备份mysql
  • 设置定时任务

    docker

    最近迷恋使用doker容器,在docker容器进行部署MySQL,以前针对容器的安全性一直存在怀疑的态度,不过如果能够通过容器也能数据库备份问题,就这样开始docker容器备份

    备份和恢复:

    第一种方式

    #全部备份
    [root@localhost home]# docker  exec  c_mysql sh -c 'exec mysqldump --all-databases -uroot -p123456 --all-databases' > /home/movice202302.sql
    #备份数据转移
    [root@localhost home]# docker cp /home/movice202302.sql salve-mysql:/var # salve-mysql 是容器 
    #全部恢复
    root@6faa12ee2d96:/# mysql -uroot -p123456 < /var/movice202302.sql
    
    #查看恢复数据库情况:
    mysql -uroot -p123456 -e 'drop database SCHOOL;'
    mysql -uroot -p123456-e 'SHOW DATABASES;'

    恢复:

    导出数据库的表结构和表数据
    mysqldump -uroot -pdbpasswd db_name >db.sql;

    [root@localhost home]# docker exec c_mysql sh -c 'exec mysqldump  -uroot -p123456 movice_fuli' > /home/movie0216.sql
    Warning: Using a password on the command line interface can be insecure.
    导出数据库表数据
    mysqldump -uroot -pdbpasswd -t db_name >db.sql;
    
    root@localhost home]# docker exec c_mysql sh -c 'exec mysqldump  -uroot -p123456 -t movice_fuli' > /home/movie.sql
    
    导出数据库表结构
    mysqldump -uroot -pdbpasswd -d db_name >db.sql;
    root@localhost home]# docker exec c_mysql sh -c 'exec mysqldump  -uroot -p123456 -d movice_fuli' > /home/movie.sql
    导出数据库中某个表的表结构
    mysqldump -uroot -pdbpasswd -d db_name table_name >db.sql
    root@localhost home]# docker exec c_mysql sh -c 'exec mysqldump  -uroot -p123456 -d movice_fuli user' > /home/movie.sql
    导出数据库中某个表的表结构和表数据
    mysqldump -uroot -pdbpasswd db_name table_name >db.sql;
    
    root@localhost home]# docker exec c_mysql sh -c 'exec mysqldump  -uroot -p123456  movice_fuli user' > /home/movie.sql

    自动化备份mysql

    1 创建目录/usr/data用于存放mysql的数据存放

    root@localhost ~]# cd /usr
    [root@localhost usr]# ls
    bin  etc  games  include  lib  lib64  libexec  local  sbin  share  src  tmp
    [root@localhost usr]# mkdir data
    [root@localhost usr]# ls
    bin  data  etc  games  include  lib  lib64  libexec  local  sbin  share  src  tmp
    [root@localhost usr]# cd data
    [root@localhost data]# ls 
    [root@localhost data]# touch back_clean.sh 
    [root@localhost data]# touch backup .sh
    [root@localhost data]# mkdir logs
    [root@localhost data]# mkdir mysql_bak
    [root@localhost data]# ls
    back_clean.sh  backup  logs  mysql_bak
    [root@localhost data]# rm backup
    rm:是否删除普通空文件 "backup"?y
    [root@localhost data]# touch backup.sh
    [root@localhost data]# ls
    back_clean.sh  backup.sh  logs  mysql_bak

    2 编辑 备份脚本和清除大于给定期限的备份数据backup.sh,back_clearn.sh

    vi backup.sh
    
    BACKUP_ROOT=/usr/data/
    BACKUP_FILEDIR=$BACKUP_ROOT/mysql_bak
    #当前日期
    DATE=$(date +%Y%m%d)
    # 获取容器
    mysqlid=docker ps  -aqf "name=c_mysql"
    #查询所有数据库
    DATABASES=$(docker exec -i ${mysqlid}  mysql  -uroot -p123456 -e "show databases" | grep -Ev "Database|sys|information_schema|performance_schema|mysql")
    #循环数据库进行备份
    for db in $DATABASES
    do
    echo
    if [[ "${db}" =~ "+" ]] || [[ "${db}" =~ "|" ]];then
    echo "jump over ${db}"
    else
    echo ----------$BACKUP_FILEDIR/${db}_$DATE.sql.gz BEGIN----------
    docker exec -i ${mysqlid}  mysqldump -uroot -p123456 --default-character-set=utf8 -q --lock-all-tables --flush-logs -E -R --triggers -B ${db} | gzip > $BACKUP_FILEDIR/${db}_$DATE.sql.gz
    echo ${db}
    echo ----------$BACKUP_FILEDIR/${db}_$DATE.sql.gz COMPLETE----------
    echo
    fi
    done
    
    echo "备份完成"
    vi back_clear.sh
    echo ----------CLEAN BEGIN----------
    find /usr/data/mysql_bak/ -mtime +7 -name "*.gz" -exec rm -rf {} \;
    echo ----------CLEAN COMPLETE---------

    设置定时任务

    利用Linux crontab 进行设置定时任务

    查看定时任务

    crotab -l

    修改定时任务

    crontab -e

    #每天02:00自动清理大于7天的mysql备份
    00 2 * * * /usr/data/backup_clean.sh > /usr/data/logs/backup_full_clean.log 2>&1
    
    #每天11:00自动备份mysql
    00 11 * * * /usr/data/backup.sh > /usr/data/logs/backup.log 2>&1

    到此这篇关于Docker 下MySQL数据库的备份和恢复的文章就介绍到这了,更多相关MySQL数据库的备份和恢复内容请搜索PHP之友以前的文章或继续浏览下面的相关文章希望大家以后多多支持PHP之友!

    您可能感兴趣的文章:
    • Navicat for MySQL定时备份数据库及数据恢复详解
    • 浅谈mysqldump使用方法(MySQL数据库的备份与恢复)
    • 通过java备份恢复mysql数据库的实现代码
    • mysql数据库备份及恢复命令 mysqldump,source的用法
    • MySQL数据库备份与恢复方法

    相关内容