热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linux下mysql备份时间设置_Linux下如何定时备份mysql

安装所需工具yuminstallnet-tools#安装网络查看工具备份mysql创建存放备份数据的目录data目录存放数据,log存放备份时打印的日志mkdir-p

安装所需工具yum install net-tools #安装网络查看工具

备份mysql

创建存放备份数据的目录//data目录存放数据,log存放备份时打印的日志

mkdir -p /usr/local/mysql/backup/{data,log}

写一个shell脚本,放在/usr/local/mysql/backup取名为mysqlbak.sh注意,mysql版本 >=5.6 的,需要在my.cnf文件中指定 mysqldump 的用户和密码,则在mysqldump 中可以把-u${dbuser} 和-p${dbpasswd}去掉

mysql版本 >=5.6 的my.cnf文件中加入:[mysqldump]

#用户名

user=***

#密码

password=***

以下mysql版本为5.5,需要把dbuer和dbpasswd更改为你创建的mysql用户名和密码#!/bin/bash

#注意,以下 PATH 路径中需要把mysql的路径更改到你mysql安装的路径下

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/data/MySQL/mysql/bin

export PATH

#数据库用户名

dbuser='***'

#数据库密码

dbpasswd='***'

#数据库名

dbname='dbname'

#数据库端口

mysql_port='3306'

#备份时间

backtime=`date +%Y%m%d%H%M%S`

#日志备份路径

logpath='/usr/local/mysql/backup/log'

#数据备份路径

datapath='/usr/local/mysql/backup/data'

# 判断MYSQL是否启动,mysql没有启动则备份退出

mysql_ps=`ps -ef |grep mysql |wc -l`

mysql_listen=`netstat -an |grep LISTEN |grep $mysql_port|wc -l`

if [ [$mysql_ps == 0] -o [$mysql_listen == 0] ]; then

echo "ERROR:MySQL is not running! backup stop!" >> ${logpath}/mysqllog.log

exit

fi

#日志记录头部

echo "备份时间为${backtime},备份数据库表 ${dbname} 开始..." >> ${logpath}/mysqllog.log

#正式备份数据库

source=`mysqldump -u${dbuser} -p${dbpasswd} -h 127.0.0.1 ${dbname}> ${datapath}/${backtime}.sql` 2>> ${logpath}/mysqllog.log;

#备份成功以下操作

if [ "$?" == 0 ];then

cd $datapath

#为节约硬盘空间,将数据库压缩

tar zcf ${dbname}${backtime}.tar.gz ${backtime}.sql > /dev/null

#删除原始文件,只留压缩后文件

rm -f ${datapath}/${backtime}.sql

#删除七天前备份,也就是只保存7天内的备份

find $datapath -name "*.tar.gz" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1

echo "数据库表 ${dbname} 备份成功!!" >> ${logpath}/mysqllog.log

else

#备份失败则进行以下操作

echo "数据库表 ${dbname} 备份失败!!" >> ${logpath}/mysqllog.log

fi

docker容器mysql备份

编写mysqlback.sh文件

和上面的基本相同,改变的只是mysqlback.sh文件内容

需更改的地方:dbname、mysql_user、mysql_password、docker_name#!/bin/bash

#数据库名

dbname='dbname'

#数据库用户

mysql_user='***'

#数据库密码

mysql_password='***'

#数据库端口

mysql_port='3306'

#备份时间

backtime=`date +%Y%m%d%H%M%S`

#日志备份路径

logpath='/usr/local/mysql/backup/log'

#数据备份路径

datapath='/usr/local/mysql/backup/data'

#需要备份的mysql容器名字

docker_name='mysql_container'

# 判断MYSQL是否启动,mysql没有启动则备份退出

mysql_ps=`ps -ef |grep mysql |wc -l`

mysql_listen=`netstat -an |grep LISTEN |grep $mysql_port|wc -l`

if [ [$mysql_ps == 0] -o [$mysql_listen == 0] ]; then

echo "ERROR:MySQL is not running! backup stop!" >> ${logpath}/mysqllog.log

exit

fi

#日志记录头部

echo "备份时间为${backtime},备份数据库表 ${dbname} 开始..." >> ${logpath}/mysqllog.log

#备份数据库

source=`docker exec ${docker_name} mysqldump -u${mysql_user} -p${mysql_password} ${dbname}> ${datapath}/${backtime}.sql` 2>> ${logpath}/mysqllog.log;

#备份成功以下操作

if [ "$?" == 0 ];then

cd $datapath

#为节约硬盘空间,将数据库压缩

tar zcf ${dbname}${backtime}.tar.gz ${backtime}.sql > /dev/null

#删除原始文件,只留压缩后文件

rm -f ${datapath}/${backtime}.sql

#删除七天前备份,也就是只保存7天内的备份

find $datapath -name "*.tar.gz" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1

echo "数据库表 ${dbname} 备份成功!!" >> ${logpath}/mysqllog.log

else

#备份失败则进行以下操作

echo "数据库表 ${dbname} 备份失败!!" >> ${logpath}/mysqllog.log

fi配置定时任务vi /etc/crontab

配置每天凌晨3点自动备份,文件内容为:SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

#For details see man 4 crontabs

#Example of job definition:

#.---------------- minute (0 - 59)

#|  .------------- hour (0 - 23)

#|  |  .---------- day of month (1 - 31)

#|  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...

#|  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

#|  |  |  |  |

#*  *  *  *  * user-name  command to be executed

0 3 * * * root /bin/sh /usr/local/mysql/backup/mysqlbak.shcrontab /etc/crontab #启动cron执行任务

f96ab365308a630ca1fce09044bbfc21.png↑每天凌晨3点定时备份效果图

89dae8d114a9ee0e26155e8e83858438.png↑crontab -l #查看执行的任务

crontab -r #删除任务

tail -f /var/log/cron #查看执行日志

systemctl enable crond #设为开机启动

systemctl start crond  #启动crond服务

systemctl status crond #查看状态



推荐阅读
  • 在中标麒麟操作系统上部署达梦数据库及导入SQL文件
    本文档详细介绍了如何在中标麒麟操作系统上安装达梦数据库,并提供了导入SQL文件的具体步骤。首先,检查系统的发行版和内核版本,接着创建必要的用户和用户组,规划数据库安装路径,挂载安装介质,调整系统限制以确保数据库的正常运行,最后通过图形界面完成数据库的安装。 ... [详细]
  • 【MySQL】frm文件解析
    官网说明:http:dev.mysql.comdocinternalsenfrm-file-format.htmlfrm是MySQL表结构定义文件,通常frm文件是不会损坏的,但是如果 ... [详细]
  • 本文介绍了MySQL窗口函数的基本概念、应用场景及常见函数的使用方法。窗口函数在处理复杂查询时非常有用,例如计算每个用户的订单排名、环比增长率、以及动态聚合等。 ... [详细]
  • ArcBlock 发布 ABT 节点 1.0.31 版本更新
    2020年11月9日,ArcBlock 区块链基础平台发布了 ABT 节点开发平台的1.0.31版本更新,此次更新带来了多项功能增强与性能优化。 ... [详细]
  • 解决ADODB连接Access时出现80004005错误的方法
    本文详细介绍了如何解决在使用ADODB连接Access数据库时遇到的80004005错误,包括错误原因分析和具体的解决步骤。 ... [详细]
  • 春季职场跃迁指南:如何高效利用金三银四跳槽季
    随着每年的‘金三银四’跳槽高峰期的到来,许多职场人士都开始考虑是否应该寻找新的职业机会。本文将探讨如何制定有效的职业规划、撰写吸引人的简历以及掌握面试技巧,助您在这关键时期成功实现职场跃迁。 ... [详细]
  • binlog2sql,你该知道的数据恢复工具
    binlog2sql,你该知道的数据恢复工具 ... [详细]
  • 本文介绍了如何使用Node.js通过两种不同的方法连接MongoDB数据库,包括使用MongoClient对象和连接字符串的方法。每种方法都有其特点和适用场景,适合不同需求的开发者。 ... [详细]
  • 在Android应用开发过程中,开发者经常遇到诸如CPU使用率过高、内存泄漏等问题。本文将介绍几种常用的命令及其应用场景,帮助开发者有效定位并解决问题。 ... [详细]
  • 本文介绍了如何通过安装 sqlacodegen 和 pymysql 来根据现有的 MySQL 数据库自动生成 ORM 的模型文件(model.py)。此方法适用于需要快速搭建项目模型层的情况。 ... [详细]
  • 本文详细介绍了如何利用Xshell配合Xftp实现文件传输,以及如何使用Pure-FTPd构建FTP服务,并探讨了VSFTP与MySQL结合存储虚拟用户的方法。 ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • 本文详细介绍了Oracle 11g中的创建表空间的方法,以及如何设置客户端和服务端的基本配置,包括用户管理、环境变量配置等。 ... [详细]
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • 本文详细介绍了如何在Oracle VM VirtualBox中实现主机与虚拟机之间的数据交换,包括安装Guest Additions增强功能,以及如何利用这些功能进行文件传输、屏幕调整等操作。 ... [详细]
author-avatar
米饭2502912051
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有