如下:

一、 编写数据库备份shell脚本

1、登录服务器,进入mysql安装目录。例:cd /usr/local/mysql

2、创建目录 dbBakShell和 dbbak,用于放置数据备份脚本及备份文件

mkdir dbBakShell

mkdir dbbak

3、将以下脚本上传到dbBakShell文件下,其文件中部分设置根据自己服务器进行配置

 

lzfzMysqlBak.sh文件如下 ,只需要修改如下标红位置即可

#!/bin/bash
#保存备份个数,备份14天数据
number=14
#备份保存路径
backup_dir=/www/wwwroot/xxxx/backup
#日期
dd=`date  %Y-%m-%d-%H-%M-%S`
#备份工具
tool=/www/server/mysql/bin/mysqldump
#数据库地址
host=xxx
#用户名
username=xxx
#密码
password=xxx
#将要备份的数据库
database_name=xxx
#如果文件夹不存在则创建
echo "$backup_dir";
if [ ! -d $backup_dir ];
  then
    mkdir $backup_dir;
fi
#简单写法 mysqldump -u root -pXXDB_2022 xxxq_mysql > /root/mysqlbackup/users-$filename.sql
$tool -h $host -u $username -p$password $database_name | gzip >$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  }' | head -1`

#判断现在的备份数量是否大于$number
count=`ls -l -crt $backup_dir/*.sql | awk '{print  }' | wc -l`

if [ $count -gt $number ];
then
  #删除最早生成的备份,只保留number数量的备份
  rm $delfile
  #写删除文件日志
  echo "delete $delfile" >> $backup_dir/log.txt
fi

4、进入dbBakShell目录测试运行shell脚本,判断结果是否与预期一致(在dabak目录下生成数据库备份的sql)

cd dbBakShell/

sh ./lzfzMysqlBak.sh

运行结果如下

注意事项:

注意:
a.运行shell脚本,出现以下错误:
/lzfzMysqlBak.sh:行17: $'\r': 未找到命令
原因:脚本文件在Windows下编辑过,在Windows下每一行结尾是\n\r,而在linux下是\n
需执行以下操作:
sed -i 's/\r$//' lzfzMysqlBak.sh
    b,运行shell脚本,出现以下错误:
mysqldump命令找不到
需运行以下操作:
ln -fs /usr/local/mysql/bin/mysqldump(此路径为mysqldump所在目录) /usr/bin
原因:这是由于系统默认会查找/usr/bin下的命令,如果这个命令不在这个目录下,当然会找不到命令,我们需要做的就是映射一个链接到/usr/bin目录下,相当于建立一个链接文件。

二、 Cron定时任务设置

测试shell脚本没有问题后,设置cron定时器任务。

1、cron命令:

systemctl reload crond.service 重载cron配置

systemctl start crond.service 启动cron

systemctl stop crond.service 停止cron

systemctl status crond.service 查看cron状态

一般情况,服务器cron默认开启

 

2、设置cron定时器任务

通过命令: crontab -e 创建cron任务文件,文件存放在 /var/spool/cron目录下。该目录独属于各用户的任务文件。例如:使用root账户登录,创建的文件名则为root,如下图所示

命令执行完毕后,会进入文件编辑模式,编辑文件。输入以下cron表达式进行测试

* * * * * echo "hello world" >>/tmp/hello.txt

完成后保存并退出。该表达式意思为每分钟输入“hello word”到tmp目录下的hello.txt文件中。

 

3、以上测试没有问题后,停止cron服务。使用命令vim /var/spool/cron/root。进入编辑模式对root文件进行修改。更改为如下:

0 1 * * * sh /usr/local/mysql/dbBakShell/lzfzMysqlBak.sh(路径为你的lzfzMysqlBak.sh脚本的路径)

表达式意思为每天晚上1点执行lzfzMysqlBak.sh脚本

 

4、重载cron配置,启动cron。

 

end

 

Linux环境下mysql数据库备份操作说明的更多相关文章

  1. ios – Xcode警告:“没有处理文件的规则”和“找不到目录”

    重命名我的项目文件夹后,我收到以下错误消息:什么可能出错?解决方法关于第一个警告,您可以在项目设置中的“构建阶段”中检查XCode,即头文件不会出现在“编译源”列表中.

  2. 你如何将xcode项目转换为cocoapod?

    我有一段代码,我发现我在多个不同的项目中重复使用,所以我想把它变成一个cocoapod并使用私人cocoapod仓库.我的问题是如何将xcode项目设置为cocoapod?它应该是一个静态库还是一个带有appdelegate的空“项目”?

  3. ios – 如何将文件添加到主包的/ Library / Sounds目录中?

    根据Apple’sdocumentation,/Library/Sounds中的声音文件将在尝试播放声音时由系统搜索.如何将声音文件添加到此文件夹?适用于iOS的正确文档应为here总之,您只需将声音文件作为应用程序包的非本地化资源添加到项目中.

  4. ios – 资产目录与文件夹参考:何时使用其中一个?

    我可以将文件放入Assets.xcassets,或者我可以将文件放入文件夹引用.我何时会选择一个而不是另一个?

  5. ios – 从icloud备份中限制sqlite-wal和sqlite-shm

    我是第一次使用coredata,我必须从文档目录中的iCloud备份限制sqlitedb文件,我使用下面的代码完成了它//阻止iCloud备份文档目录文件夹现在我不明白的是,我们还需要从icloud备份中限制sqlite-wal和sqlite-shm文件,如果是,那么如何从icloud备份限制sqlite-wal和sqlite-shm文件我想要一个解决方案,而无需从文档目录文件夹中更改sqlitedb位置…

  6. iOS:如何从文档目录中删除具有特定扩展名的所有现有文件?

    当我更新我的iOS应用程序时,我想删除Documents目录中的任何现有sqlite数据库.现在,在应用程序更新时,我将数据库从软件包复制到文档目录,并通过附加软件包版本来命名它.因此,在更新时,我还想删除可能存在的任何旧版本.我只是希望能够删除所有sqlite文件,而无需循环浏览并查找以前版本的文件.是否有任何方法可以对removeFileAtPath:方法进行通配符?解决方法那么,你想要删除所有*.sqlite文件?

  7. .dylib在Debug中链接,在XCode中找不到适用于iPhone的版本

    所以我已经将libxml2.2.dylib库包含在我的iPhoneXCode项目中,以创建一些Xml和XPath解析实用程序.当我编译并运行在模拟器和设备的调试模式时,我没有问题,但是,当我切换到发布模式我得到…

  8. ios – 从文件目录加载UIImage

    我正在尝试从文件目录加载一个UIImage,并将其设置为UIImageView,如下所示:但是,每当我尝试以上,图像从不加载.该图像在Documents/MyAppCustomDirectory/school.png中.以上是否正确从该目录加载?我也尝试了其他几个:UIImageimageWithContentsOfFile,以及基于SO响应的其他方法.解决方法要获取您应该使用的文档目录:我不太清

  9. Xcode 6 / iOS 8模拟器数据和软件包文件夹脚本

    随着xcode6的最新更改,它看起来像.app文件和文档文件夹不再驻留在iPhone模拟器目录中的同一个文件夹中.以前,我们可以访问目录和.app文件但在Xcode6中,模拟器目录是完全不同的:和其中CryptNumber1,2和3都不同.有没有办法找到包含.app文件的文件夹后,我可以得到相应的文件夹?我有这个麻烦.为什么…?

  10. ios – 上传符号文件

    我该如何解决?

随机推荐

  1. InnoDB 和 MyISAM 引擎恢复数据库,使用 .frm、.ibd文件恢复数据库

  2. mysql备份数据库脚本

  3. Linux环境下mysql数据库备份操作说明

    如下: 一、 编写数据库备份shell脚本 1、登录服务器,进入mysql安装目录。例:cd /usr/local/mysql 2、创建目录 dbBakShell和 dbbak,用于放置数据

  4. mysqldump备份以及定时任务生成备份文件内容为空解决方法

    1、备份命令格式:mysqldump-h主机名-P端口-u用户名-p密码--database数据库名>文件名.sql例如:mysqldump-h192.168.1.100-p3306-uroot-ppassword--databasecmdb>/data/backup/cmdb.sql2、备份压缩导出的数据有可能比较大,不好备份到远程,这时候就需要进行压缩格式:mysqldump-h主机名-P端口

返回
顶部