基本操作
mysqldump -u root -p[密码] --databases 库名1 [库名2] ... > /备份路径/备份文件名.sql
#导出的就是数据库脚本文件
例:
mysqldump -u root -p --databases liu > /opt/kgc.sql #备份一个kgc库
mysqldump -u root -p --databases mysql li > /opt/mysql-kgc.sql #备份mysql与 kgc两个库
尝试使用sh脚本备份docker里的mysql
# 保留10天数据,
# mysql8 为安装mysql的docker
docker exec -i mysql8 bash<<'EOF'
# 判断目录是不是已经存在,如果不存在则创建
if [ ! -d "/backups/mysql" ]; then
mkdir -p /backups/mysql
fi
# backups 为数据库的名称
/usr/bin/mysqldump -uroot -ppassowrd databasename1 | gzip > /backups/mysql/backups_db1_$(date +%Y%m%d).sql.gz
/usr/bin/mysqldump -uroot -ppassword databasename2 | gzip > /backups/mysql/backups_db2_$(date +%Y%m%d).sql.gz
#删除超过10天的数据
rm -f /backups/mysql/backups_db1_$(date -d -10day +%Y%m%d).sql.gz
rm -f /backups/mysql/backups_db2_$(date -d -10day +%Y%m%d).sql.gz
exit
EOF
# 判断目录是不是已经存在,如果不存在则创建
backup_dir=/home/datas/mysql8/file
if [ ! -d $backup_dir ]; then
mkdir -p $backup_dir
fi
# 将docker中的备份的数据拷贝到宿主机上。
docker cp mysql8:/backups/mysql/backups_db1_$(date +%Y%m%d).sql.gz $backup_dir/
docker cp mysql8:/backups/mysql/backups_db2_$(date +%Y%m%d).sql.gz $backup_dir/
#删除超过10天的数据
rm -f $backup_dir/backups_db1_$(date -d -10day +%Y%m%d).sql.gz
rm -f $backup_dir/backups_db2_$(date -d -10day +%Y%m%d).sql.gz
恢复
mysql -u root -p < 2024_12_27.sql