论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
qidao123.com技术社区-IT企服评测·应用市场
»
论坛
›
主机系统
›
linux
›
Linux实现Mysql定时自动化备份(并传输到指定服务器) ...
Linux实现Mysql定时自动化备份(并传输到指定服务器)
慢吞云雾缓吐愁
论坛元老
|
2024-7-31 08:02:35
|
显示全部楼层
|
阅读模式
楼主
主题
1631
|
帖子
1631
|
积分
4893
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
一、脚本实现
1.在指定目次下创建一个实行文件mysql_db_back.sh
touch mysql_db_back.sh
2.将以下脚本复制到文件中
#!/bin/bash
DATE=$(date +%F_%H%M%S)
HOST=localhost
PORT=3306
DB=test
USER=root
PASS='123456'
BACKUP_DIR=/data/db_backup
SQL_FILE=${DB}_full_$DATE.sql
BAK_FILE=${DB}_full_$DATE.zip
cd $BACKUP_DIR
if /usr/local/mysql-8.0/bin/mysqldump -h$HOST -P$PORT -u$USER -p$PASS -B $DB > $SQL_FILE; then zip $BAK_FILE $SQL_FILE && rm -f $SQL_FILE
fi
sshpass -p 'abc123456' rsync -avz $BAK_FILE root@10.7.9.35:/data/mysql_bak_db
rm -f $BAK_FILE
复制代码
3.说明
1). `#!/bin/bash`
* 这是一个shebang,它告诉体系该脚本应由哪个解释器实行。在这里,它指定了bash作为解释器。
2). `DATE=$(date +%F_%H-%M-%S)`
* 利用`date`命令获取当前的日期和时间,并将其格式化为`YYYY-MM-DD_HH-MM-SS`的形式。然后,这个值被存储在`DATE`变量中。
3). `HOST=localhost`
* 设置MySQL数据库服务器的IP地点为`localhost`。
4). `PORT=3306`
* 设置MySQL数据库服务器的端标语为`3306`。
5). `DB=test`
* 设置要备份的数据库的名称为`test`。
6). `USER=root`
* 设置用于连接MySQL数据库的用户名为`root`。
7). `PASS=123456`
* 设置用于连接MySQL数据库的密码为`123456`,这里最好利用单引号框起来,制止因关键字导致密码分析错误的题目。
8). `BACKUP_DIR=/data/db_backup`
* 设置备份文件的存储目次为`/home/quinn/db_backup`。
9). `SQL_FILE=${DB}_full_$DATE.sql`
* 设置备份的SQL文件的名称,其格式为`数据库名_full_日期时间.sql`。
10). `BAK_FILE=${DB}_full_$DATE.zip`
* 设置压缩后的备份文件的名称,其格式为`数据库名_full_日期时间.zip`。
11). `cd $BACKUP_DIR`
* 切换到备份文件的存储目次。
12). `if mysqldump ...`
即:if mysqldump -h$HOST -u$USER -p$PASS --single-transaction --routines --triggers -B $DB > $SQL_FILE; then
mysqldump 是MySQL数据库的一个实用工具,用于从MySQL数据库中导出数据。
-h$HOST 指定了数据库服务器的主机名或IP地点,这里利用了之前界说的变量$HOST。
-P$PORT 指定了数据库的端标语,这里利用了之前界说的变量$PORT。
u$USER 指定了连接数据库时利用的用户名,这里利用了之前界说的变量$USER。
-p$PASS 指定了连接数据库时利用的密码,这里利用了之前界说的变量$PASS。
-B $DB 指定了要备份的数据库名,这里利用了之前界说的变量$DB。
> $SQL_FILE 将mysqldump的输出重定向到之前界说的SQL文件$SQL_FILE中。
如果mysqldump命令乐成实行(即没有错误并乐成创建了SQL文件),则实行then背面的代码块。
13). zip $BAK_FILE $SQL_FILE && rm -f $SQL_FILE
zip $BAK_FILE $SQL_FILE 利用zip命令将SQL文件$SQL_FILE压缩为ZIP文件$BAK_FILE。
&& 是一个shell中的逻辑操作符,它表现只有当左边的命令(在这里是zip命令)乐成实行时,才会实行右边的命令。
rm -f $SQL_FILE 删除原始的SQL文件。-f选项表现欺压删除,即使文件是只读的也不会提示。
这行代码块尝试利用mysqldump备份数据库,并将输出保存到SQL文件中。如果备份乐成,则将该SQL文件压缩为ZIP文件,并随后删除原始的SQL文件。
14)sshpass -p 'abc123456' rsync -avz $BAK_FILE root@10.7.9.35:/data/mysql_bak_db
sshpass 自动填写密码的工具,需要安装
yum install sshpass
'abc123456'为指定传输到服务器密码
rsync 比 scp 更稳固,本次利用 rsync 同步文件
-a: 表现以递归方式传输文件,并保持文件属性。
-v: 显示传输详细信息。
-z: 在传输过程中进行压缩,可以减少传输时间和带宽
$BAK_FILE root@10.7.9.35:/data/mysql_bak_db,$BAK_FILE为生成的zip备份文件,将其传输到10.7.9.35这台服务器的/data/mysql_bak_db下,利用root账户。替换为 账号@传输服务器ip:传输地点
15)rm -f $BAK_FILE
删除本机生成的备份压缩包,因为已经传输到另外一台服务器上,无需再次保存。
4.
给予实行权限
chmod 755 sql_db_back.sh
二、定时任务
输入命令 crontab -e 进入 crontab 编辑器
crontab -e
设置每天2点备份
0 2 * * * 脚本绝对位置
然后保存即可!!!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
慢吞云雾缓吐愁
论坛元老
这个人很懒什么都没写!
楼主热帖
聊聊 C# 方法重载的底层玩法 ...
使用 Mypy 检查 30 万行 Python 代码, ...
Linux安装PHP8 新版笔记
微信公众平台测试号申请、使用HBuilder ...
Blazor WebAssembly + Grpc Web = 未来 ...
【只与自己有关】人往高处走?何为高? ...
【MAC工具】各个Xcode版本对应macOS的 ...
Apache Shiro 身份验证绕过漏洞 (CVE-2 ...
Java多线程(7):JUC(上)
WPF 视频硬解码渲染播放(无空域问题) ...
标签云
渠道
国产数据库
集成商
AI
运维
CIO
存储
服务器
浏览过的版块
人工智能
软件定义存储SDS
快速回复
返回顶部
返回列表