首页 > 数据库 >Linux环境下mysql数据库备份操作说明

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

时间:2022-10-28 12:44:52浏览次数:54  
标签:备份 Linux cron sh mysql backup dir

如下:

一、 编写数据库备份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=/usr/local/mysql/dbbak
#日期
dd=`date +%Y-%m-%d-%H-%M-%S`
#备份工具
tool=/usr/local/mysql/mysql8.0/bin/mysqldump
#用户名
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 -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`

#判断现在的备份数量是否大于$number
count=`ls -l -crt $backup_dir/*.sql | awk '{print $9 }' | 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,cron,sh,mysql,backup,dir
From: https://www.cnblogs.com/xh_Blog/p/16835700.html

相关文章

  • Kafka Server单节点部署(Linux 环境)
    Kafka单节点部署(Linux环境)运行环境:CentOS7.6x64JDK环境:JDK11(请参考JDK的安装和配置(Linux环境))一、Kafka安装包获取1-1kafka官网1-2WinSCP上传(注意:CentOS切换到ro......
  • Linux使用ifconfig命令没有显示ens33或者没有ip地址
    1.首先win+R输入services.msc进入服务窗口,看一下服务有没有启动2.修改网络配置文件ONBOOT修改为yesvi/etc/sysconfig/network-scripts/ifcfg-ens33---进入配置文件3......
  • linux - centos6 ops(持续更新)
    安装与网络配置​​下载​​VirtualBox网络:BridgedAdapter配置centos6:[root@localhost~]#cat/etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0HWADDR=08:00:27:5......
  • 初识Linux(五)------ 文件与文件系统的压缩,打包与备份
    1. 压缩文件在Linux的环境中,压缩文件的扩展名大多是:“*.tar,*.tar.gz,*.tgz,*.gz,*.Z,*.bz2,*.xz”,为什么会有这样的扩展名呢?不是说Linux的扩展名没有什么作......
  • Linux - 文件被删除后,空间没有被释放
    linux里的文件被删除后,空间没有被释放是因为在Linux系统中,通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink).然而如果文件是被打开的(有一个进程......
  • Linux系统之逻辑卷(lvm)创建及扩容
    1.查看本机磁盘情况[root@VM-4-13-centossoft]#fdisk-l磁盘/dev/vda:42.9GB,42949672960字节,83886080个扇区Units=扇区of1*512=512bytes扇区大小(逻......
  • Linux下查看文件和文件夹大小
    当磁盘大小超过标准时会有报警提示,这时如果掌握df和du命令是非常明智的选择。df可以查看一级文件夹大小、使用比例、档案系统及其挂入点,但对文件却无能为力。du......
  • (Linux安装)Mysql5.7数据库
    下载地址:https://downloads.mysql.com/archives/community/ 1.解压tar-xvfmysql-5.7.26-linux-glibc2.12-x86_64.tar 2.再移动并重命名一下mvmysql-5.7.26-linu......
  • Linux:RedHat8 联网安装docker
    1.查看docker版本安装yum-config-manager#这个命令在yum-utils包yuminstall-yyum-utils下载docker-ce的源#下载docker-ce源文件yum-config-manager--add-repo......
  • 常用的Linux命令
    1.cd:改变目录   cd..回退到上一个目录,直接cd进入默认目录。2.pwd:显示当前所在目录路径。3.ls(ll):都是列出当前目录中所有的文件,只不过ll列出的内容更加详细。4.touc......