1、添加备份文件夹
mkdir /opt/mysqlbak
2、编写备份脚本 mysql-bakup.sh
#!/bin/bash
#名称
name=my-epro
#保存备份个数
number=5
#备份保存路径
backup_dir=/opt/mysqlbak
#日期
dd=$(date '+%Y%m%d')
#备份工具
tool=mysqldump
#用户名
username=xxx
#密码
password=xxx
#如果文件夹不存在则创建
if [ ! -d $backup_dir ];
then
mkdir -p $backup_dir;
fi
echo $backup_dir/$name-$dd.sql
#单个数据库写法 mysqldump -u root -p'123456' my_user > root/mysqlbackup/my_user-$filename.sql
#全量备份mysqldump -u$username -p$password --force -A > $backup_dir/$name-$dd.sql
mysqldump -u$username -p$password --force --databases my_bpm my_form my_job my_nacos my_portal my_seata my_system my_user > $backup_dir/$name-$dd.sql
cd $backup_dir
tar -zcvf $name-$dd.sql.tar.gz $name-$dd.sql
rm -rf $name-$dd.sql
#找出需要删除的备份
delfile=`ls -l -crt $backup_dir/*.sql.tar.gz | awk '{print $9 }' | head -1`
#判断现在的备份数量是否大于$number
count=`ls -l -crt $backup_dir/*.sql.tar.gz | awk '{print $9 }' | wc -l`
if [ $count -gt $number ]
then
#删除最早生成的备份,只保留number数量的备份
rm $delfile
fi
#拷贝到远程的机器上
#scp -r $name-$dd.sql.tar.gz root@192.168.4.140:/data/74_mysql
3、建立远程 的信任
cd /root
ssh-keygen -t rsa
#把密钥发给要存储备份的机器上
scp .ssh/id_rsa.pub root@192.168.4.140:/root/.ssh/authorized_keys
#此处因为还没有信任,所以需要输入用户名和密码,复制完之后,信任关系就已经建立。
4、设备定时调度
crontab -e
30 22 */3 * * sh /opt/mysql-bakup.sh >> log.txt 2>>log.txt
5、还原数据
mysql --connect-expired-password -uroot -pjxbd123 -f < /opt/mysql-dev-20211006.sql
6、导出问题
mysqldump: Error: 'Access denied; you need (at least one of) the PROCESS privilege(s) for this operation' when trying to dump tablespaces
grant process on *.* to 数据库用户名;