shell脚本定时备份mysql数据库

系列文章目录

1.mysqldump常用命令语法
2.编写命令
3.将命令写入shell脚本
4.写入定时任务

示例系统:centos7
mysql版本:5.7

一、mysqldump命令

全量备份(数据+结构): mysqldump -uroot -p123456 -A > 备份文件路径
指定库备份(数据+结构): mysqldump -uroot -p123456 库名 > 备份文件路径
多个库备份(数据+结构): mysqldump -uroot -p123456 --databases db1 db2 > 备份文件路径

二、编写命令

2.1 测试脚本

示例中我们选择指定库备份,下面我的数据库基本信息:root 密码:woshi4r? 数据库:yqz
我们可以先直接在命令行执行一下命令:

[root@bogon /]# mysqldump -uroot -pwoshi4r? yqz > /usr/mysql/back/uuu

稍微解释一下命令的含义:该命令会将备份文件保存指系统中/usr/mysql/back/uuu文件中,有的朋友执行可能会出现如下报错:

bash: mysqldump: 未找到命令…
``这里有两种解决办法
1)一种是到mysqldump所在的目录下,再执行上面的备份命令。可以使用如下命令来寻找mysqldump的所在目录。

[root@bogon log]# find / -name mysqldump
/opt/mysql/mysql-5.7/bin/mysqldump

2)另外是将mysqldump加到系统环境变量中
编辑 ~/.bashrc~/.bash_profile 文件
vi ~/.bash_profile 或者 vi ~/.bashrc
在文件末行添加

export PATH=$PATH:/opt/mysql/mysql-5.7/bin

使用 source ~/.bash_profile 或者 source ~/.bashrc 使环境变量更改生效。

2.2 为了避免手动输入密码,你可以使用配置文件或环境变量来传递密码

1)编辑或创建 ~/.my.cnf 文件,在文件中添加如下内容。
注:请替换自己的账号密码

[client]
user=root
password=woshi4r?
  1. 设置文件权限,只能自己读取
chmod 600 ~/.my.cnf

到此,便可使用简化命令 mysqldump yqz > /usr/mysql/back/uuu来备份数据库

三、将命令写入shell脚本

/opt/mysql/dumpsh/中创建脚本 mysqldump.sh 文件并编辑

#!/bin/bash

# 定义备份文件名
database="generalx_pm"
filename="${database}_"`date +'%Y%m%d'`".sql"
echo "备份文件名: $filename"

# 定义备份文件的路径
backup_dir="/usr/mysql/back"
mkdir -p $backup_dir

# 创建备份
mysqldump "$database" > $backup_dir/$filename

# 检查备份是否成功
if [ $? -eq 0 ]; then
    echo "数据库备份成功: $backup_dir/$filename"
else
    echo "数据库备份失败,请检查错误信息"
fi

四、写入定时任务

crontab -e
0 0 * * * /opt/mysql/dumpsh/mysqldump.sh >>/var/log/mysql_backup.log 2>&1

这里表示每天备份一次

总结

以上就是这次分享的内容,本文仅仅简单介绍了如何定时使用mysqldump来备份数据库,相关shell脚本和定时任务不是本文章重点,所以没有过多解释。

你可能感兴趣的:(数据库,mysql,vim,centos,linux)