MySQL 数据库快照备份

发布于 2021-05-13 21:23 ,所属分类:数据库和大数据技术学习资料

主要使用MySQL自带的mysqldump工具实现。
业务场景:对生产数据库的从库进行数据备份,生产系统是主从复制架构,并且未设置延迟复制。

一、封装执行脚本

#!/bin/bash

number=5
backup_dir=/root/mysqlbackup
dd=`date+%Y-%m-%d-%H-%M-%S`
tool=mysqldump
username=root
password=$%BNK$%HJK
database_name=-A

if[!-d$backup_dir];
then
mkdir-p$backup_dir;
fi

$
tool-u$username-p$password$database_name>$backup_dir/$database_name-$dd.sql

echo"create$backup_dir/$database_name-$dd.dupm">>$backup_dir/log.txt

delfile=`ls-l-crt$backup_dir/*.sql|awk'{print$9}'|head-1`

count=`ls-l-crt$backup_dir/*.sql|awk'{print$9}'|wc-l`

if[$count-gt$number]
then
rm$delfile
echo"delete$delfile">>$backup_dir/log.txt
fi

二、设置Linux cron定期执行

Linux安装cron服务,百度烂大街的。
使用root用户创建cron规则文件,例如mysqldump.cron
并在cron文件中添加如下内容(Linux cron语法文章末尾有链接):

202***./etc/profile;/bin/sh/root/mysqlbackup/mysql_dump_script.sh

(上面命令的意思就是,每天的2:20执行一次mysql_dump_script.sh脚本)。
然后使用命令行crontab命令添加Linux定时任务。

#添加
crontabmysqldump.cron
#查看是否添加成功
crontab-l

三、关于mysqldump的使用

mysqldumpMySQL 自带的逻辑备份工具。

它的备份原理是通过协议连接到 MySQL 数据库,将需要备份的数据查询出来,将查询出的数据转换成对应的insert 语句,当我们需要还原这些数据时,只要执行这些 insert 语句,即可将对应的数据还原。

#导出所有数据库
mysqldump-uroot-proot--all-databases>/tmp/all.sql
#导出db1、db2两个数据库的所有数据
mysqldump-uroot-proot--databasesdb1db2>/tmp/user.sql
#导出db1中的a1、a2表
#注意导出指定表只能针对一个数据库进行导出,且导出的内容中和导出数据库也不一样,导出指定表的导出文本中没有创建数据库的判断语句,只有删除表-创建表-导入数据
mysqldump-uroot-proot--databasesdb1--tablesa1a2>/tmp/db1.sql

其他更多资料建议参考博客:

MySQL之mysqldump的使用:

https://www.cnblogs.com/markLogZhu/p/11398028.html

MySQL mysqldump数据导出详解:

https://www.cnblogs.com/chenmh/p/5300370.html

四、关于Linux cron的使用

以下列出几个比较全的博客:
菜鸟Linux crontab 命令:

https://www.runoob.com/linux/linux-comm-crontab.html

每天一个linux命令(50):crontab命令:

https://www.cnblogs.com/peida/archive/2013/01/08/2850483.html

Linux下的crontab定时执行任务命令详解:

https://blog.csdn.net/wade3015/article/details/90289751


相关资源