前言:

备份很重要、备份很重要、备份很重要。(PS:对应备份我也不免入俗了,重要的事情说三遍!!!)

但是我们不用每次都自己操作备份或导出数据文件,可以Shell脚本帮我们自动完成这项重复劳动。

备份数据库前的思考:确定备份文件存放位置、备份文件名策略、是否自动删除超过指定天数的历史文件。

需要备份哪些数据库还是所有的数据库。

导出备份文件后,是否需要对备份的数据文件进行压缩减小体积。

想清楚上面的几个问题后,就可以着手操作了。

准备条件

使用[mysqldump]配置文件方法创建备份专用账号CREATE USER 'backupuser'@'localhost' IDENTIFIED BY 'p455w0rd';

GRANT SELECT, SHOW VIEW, LOCK TABLES, RELOAD, REPLICATION CLIENT ON *.* TO 'backupuser'@'localhost';

FLUSH PRIVILEGES;

将1中添加的账号添加至配置文件中[mysqldump]

user=backupuser

password=p455w0rd

备份脚本#!/bin/bash

# 直接指定备份数据库使用的用户名、密码。(不建议)

# user="db_username"

# password="db_password"

# 指定备份具体的数据库,多个数据库,中间用空格进分割。如果全部备份可以使用参数 --all-databases

# dbname="db1 db2 db3"

# 指定备份存放目录、备份文件名、备份文件名日期信息

backup_path="/data/bak/db"

backupname="db"

date=$(date "+%Y%m%d")

echo "Backing up mysql databases..."

# 检测是否已存在备份文件,如有,进行删除操作

if [ -f "$backup_path/$backupname-$date.sql.bz2" ]; then

rm -fv $backup_path/$backupname-$date.sql*

fi

echo "Dumping databases..."

## 直接指定username, password(不推荐)

# mysqldump --user=$user --password=$password --databases $dbname > $backup_path/$backupname-$date.sql

## 将username, password放在配置文件中[mysqldump]下(推荐)

# mysqldump --databases $dbname > $backup_path/$backupname-$date.sql

## 备份所有数据库

mysqldump --all-databases > $backup_path/$backupname-$date.sql

echo "Compressing databases..."

bzip2 $backup_path/$backupname-$date.sql

chmod 600 $backup_path/$backupname-$date.sql.bz2

# Delete files older than 30 days(移除超过30天的历史备份文件)

echo "Checking for old files..."

find $backup_path/* -mtime +30 -exec rm {} \;

echo "Done."

使用Crontab定时执行

进入Crontab编辑模式:crontab -e

添加定时任务:# m h dom mon dow command

30 1 * * * . /etc/profile; /data/soft/script/mysql_backup.sh > /data/soft/script/mysql_backup.log 2>&1 &

说明:每天凌晨1:30执行。

由于后台MySQL是使用源码形式安装的,所有MySQL的命令不能直接运行,我在环境变量文件/etc/profile最后添加了export PATH=$PATH:/data/soft/mysql/bin。

. /etc/profile;,使环境变量生效。

2>&1:如果执行过程中有异常信息,将stderr也重定向标准输出流stdout。

jyoryo mysql_分类 Tools 下的文章相关推荐

  1. MySQL安装目录分类_分类 安装 下的文章

    有时候需要源代码安装mysql,网上教程层次不齐.以下是亲测可用. 下载mysql 在官网下载的时候需要登录,比较麻烦,我是去http://ftp.ntu.edu.tw/MySQL/Downloads ...

  2. Diango博客--17.统计各个分类和标签下的文章数

    文章目录 0.思路引导 1.Model 回顾 2.数据库数据聚合 3.使用 Annotate 4.在模板中引用新增的属性 0.思路引导 在我们的博客侧边栏有分类列表和标签列表,显示博客已有的全部文章分 ...

  3. 手把手教你用 TensorFlow 实现文本分类(下)

    手把手教你用 TensorFlow 实现文本分类(下) 本文作者:AI研习社 2017-05-29 13:36 导语:文本分类全流程解析. 雷锋网(公众号:雷锋网)按:本文作者张庆恒,原文载于作者个人 ...

  4. FocalLoss原理通俗解释及其二分类和多分类场景下的原理与实现

    文章目录 1. FocalLoss的应用场景 2. 二分类场景下FocalLoss原理解释 2.1 FocalLoss如何调节正负样本权重 2.2 FocalLoss如何调节难易样本权重 2.3 整合 ...

  5. Python多分类问题下,micro-PR计算以及macro-PR计算

    Python多分类问题下,micro-PR计算以及macro-PR计算 #二分类的Precision和Recall计算公式 在普通的二分类问题中通过混淆矩阵可以轻松地计算出来Precison和Reca ...

  6. ecshop调用指定分类(包含子分类)下所有产品的评论信息

    调用指定分类(包含子分类)下所有产品的评论信息,使用了ecshop系统自带的函数get_children($cat_id)调用指定分类下所有子分类的id,该自带函数在文件include/lib_com ...

  7. Tools下的mdscongiguer 文件中 43行 oracle 配置 发现需要连接库 -lclntsh libclntsh.so 库是个什么东西呢?...

    Tools下的mdscongiguer     文件中 43行  oracle 配置      发现需要连接库 -lclntsh      libclntsh.so 库是个什么东西呢? 分想一个知乎网 ...

  8. 知网爬虫——爬取某个主题下的文章标题以及发表时间

    前几天帮朋友做了个知网的爬虫,爬取了"新闻传播"主题下的文章标题及发表时间:自己拖拖拉拉写了2天才写完,自己还是太弱了.个人认为这个作为一个练手的爬虫小项目还是不错的,于是写了主要 ...

  9. 面向6G网络自动化的知识驱动可解释人工智能(XAI);基于汽车事件数据的脉冲神经网络目标检测;对称分类方案下波导阵列中的BIC;PreMovNet:基于运动前脑电的抓取和提举手运动学估计

    可解释的机器学习 中文标题:面向6G网络自动化的知识驱动可解释人工智能(XAI) 英文标题:Knowledge-powered Explainable Artificial Intelligence ...

最新文章

  1. CCNA11月14日战报
  2. [C# 基础知识系列]专题五:当点击按钮时触发Click事件背后发生的事情
  3. 转载-centos网络配置(手动设置,自动获取)的2种方法
  4. 前端学习(3167):react-hello-react之鼠标移入效果
  5. 【数学】MORE XOR
  6. 【OpenCV 例程200篇】53. Scipy 实现图像二维卷积
  7. Python 最强编辑器PyCharm详细使用指南!
  8. time和datatime模块
  9. Java 算法 矩阵乘法
  10. 站长seo经过的阶段
  11. Bailian3238 生日相同【稳定排序】
  12. 分布式架构总汇【转】
  13. CCF-CSP认证 第一题水题-小明摘苹果(c++满分代码)
  14. Leetcode no. 347
  15. react中动态渲染背景图片
  16. 【组图】韩国美女明星蔡研---精彩写真
  17. (十)苏世民:我的经验和教训:掌控(1~6)
  18. uboot usb启动
  19. java中什么是声明抽象_java中什么是抽象类?抽象类的声明
  20. 阿里云总裁胡晓明:未来三年追平亚马逊技术

热门文章

  1. 控制图的绘制步骤_实战!脚手架排布图绘制步骤和技巧讲解!图文展示
  2. java 内部类 加载_Java 内部类基础介绍
  3. sql integer字置为空_请写一个函数来检查用户提交的数据是否为整数
  4. linux管道和tee命令
  5. [WPF自定义控件库]使用WindowChrome自定义RibbonWindow
  6. SSH反向代理转发至内网msf
  7. 给radio添加点击事件
  8. ANDROID开发中注意不同手机CPU架构对SO文件的不同需求。
  9. Android调用.net的webservice服务器接收参数为空的情况
  10. 关于Debug和Release之本质区别(转)