一、數據庫定時備份
1、編寫mysql在docker容器中備份的shell腳本:
#!/bin/bash #docker啓動的mysql備份 mysql_user="root" #數據庫密碼,注意自行修改 mysql_password="123456" mysql_host="192.168.139.129" mysql_port="3306" mysql_charset="utf8mb4" #備份文件存放的目錄,自己創建位置 mkdir -p /home/backup/mysql/ backup_location=/home/backup/mysql/ expire_backup_delete="ON" #備份文件存放的天數 expire_days=7 backup_time=`date +%Y-%m-%d-%H-%M` backup_dir=$backup_location #指定忽略的表 #--ignore-table=tablename docker exec -i mysql mysqldump -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password --all-databases | gzip> $backup_dir/mysqldb_backup_$backup_time.sql.gz #定時清理15天前的備份 if [ "$expire_backup_delete" == "ON" -a "$backup_location" != "" ];then `find $backup_location/ -type f -mtime +$expire_days | xargs rm -rf` echo -e "\033[32m #### MySQL數據庫已備份 $expire_days天前的備份已刪除 #### \033[0m" #green fi
2、執行定時計劃,每天凌晨1點執行備份
進入 vi /etc/crontab
加入如下的內容
# /home/shell/mysqlbackup.sh 爲腳本的路徑 00 01 * * * root /home/shell/mysqlbackup.sh
二、數據庫還原
1、解壓文件
gzip -d /home/backup/mysql/mysqldb_backup_2022-11-12-20-35.sql.gz
2、拷貝文件到容器中
docker cp /home/backup/mysql/mysqldb_backup_2022-11-12-20-35.sql mysql:/var
3、進入mysql容器中
docker exec -it mysql bin/bash
4、執行如下命令後會要求輸入mysql密碼
mysql -uroot -p
5、將拷貝到容器中的.sql文件用於還原mysql數據庫
source /var/mysqldb_backup_2022-11-12-20-35.sql