linux环境下mysql备份,Linux 环境下Mysql数据库备份

1、创建备份目录

mkdir /home/mysql mkdir /home/mysql/backup mkdir /home/mysql/backup/scripts mkdir /home/mysql/backup/files mkdir /home/mysql/backup/logs

2、新建备份脚本

touch /home/mysql/backup/script/backupp.sh vim /home/mysql/backup/script/backupp.sh #!/bin/bash #备份目录 BACKUP_ROOT=/home/mysql/backup BACKUP_FILEDIR=

math?formula=BACKUP_ROOT%2Ffiles%20BACKUP_LOGDIR%3DBACKUP_ROOT/logs #当前日期 DATE=

math?formula=(date%20%2B%25Y%25m%25d)%20%23--------------------%E5%A4%87%E4%BB%BD--------------------------%20%23%E5%BE%AA%E7%8E%AF%E6%95%B0%E6%8D%AE%E5%BA%93%E5%A4%87%E4%BB%BD%20echo%20-------------------%E6%95%B0%E6%8D%AE%E5%BA%93%E5%A4%87%E4%BB%BD%E5%BC%80%E5%A7%8B-----------------%20%23-u%E5%90%8E%E9%9D%A2%E8%A1%A8%E7%A4%BA%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84%E7%94%A8%E6%88%B7%E5%90%8D%20-p%E5%90%8E%E9%9D%A2%E7%9A%84%E8%A1%A8%E7%A4%BA%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84%E5%AF%86%E7%A0%81%20--default-character-set%20%E8%AE%BE%E7%BD%AE%E5%A4%87%E4%BB%BD%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84%E5%AD%97%E7%AC%A6%E9%9B%86%20%23--single-transaction%20%E8%A1%A8%E7%A4%BA%E5%9C%A8%20innoDB%E5%BC%95%E6%93%8E%E4%B8%8B%E6%94%AF%E6%8C%81%E7%83%AD%E5%A4%87%E4%BB%BD%20%E5%A6%82%E6%9E%9C%E6%98%AFMyIsam%E5%BC%95%E6%93%8E%E5%B0%B1%E9%9C%80%E8%A6%81%E6%9B%BF%E6%8D%A2%E4%B8%BA%20--lock-all-tables%20%3B%20%23-B%E8%A1%A8%E7%A4%BA%E6%8C%87%E5%AE%9A%E5%A4%9A%E4%B8%AA%E5%BA%93%EF%BC%8C%E5%9C%A8%E5%A4%87%E4%BB%BD%E6%96%87%E4%BB%B6%E4%B8%AD%E5%A2%9E%E5%8A%A0%E5%BB%BA%E5%BA%93%E8%AF%AD%E5%8F%A5%E5%92%8Cuse%E8%AF%AD%E5%8F%A5%20%EF%BC%9B-E%E8%A1%A8%E7%A4%BA%E5%AF%BC%E5%87%BA%E4%BA%8B%E4%BB%B6%20-R%20%E8%A1%A8%E7%A4%BA%E5%AF%BC%E5%87%BA%E5%AD%98%E5%82%A8%E8%BF%87%E7%A8%8B%E4%BB%A5%E5%8F%8A%E8%87%AA%E5%AE%9A%E4%B9%89%E5%87%BD%E6%95%B0%20%23%20--ignore-table%20%E8%A1%A8%E7%A4%BA%E5%A4%87%E4%BB%BD%E6%97%B6%E5%BF%BD%E7%95%A5%E6%9F%90%E4%BA%9B%E8%A1%A8%EF%BC%8C%E6%A0%BC%E5%BC%8F%E4%B8%BA%3Adatabase.tablename%20%2C%E5%A4%9A%E5%BC%A0%E8%A1%A8%E6%97%B6%20%E9%9C%80%E5%A4%9A%E4%B8%AA--ignore-table%EF%BC%9B%20-q%20%E8%A1%A8%E7%A4%BA%E4%B8%8D%E7%BC%93%E5%86%B2%E6%9F%A5%E8%AF%A2%EF%BC%8C%E7%9B%B4%E6%8E%A5%E5%AF%BC%E5%87%BA%E5%88%B0%E6%A0%87%E5%87%86%E8%BE%93%E5%87%BA%20%23test%E8%A1%A8%E7%A4%BA%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84%E5%90%8D%E7%A7%B0%EF%BC%9Bgzip%E8%A1%A8%E7%A4%BA%E5%B0%86%E5%A4%87%E4%BB%BD%E6%96%87%E4%BB%B6%E5%8E%8B%E7%BC%A9%E4%B8%BA.gz%E7%BB%93%E5%B0%BE%E7%9A%84%E5%8E%8B%E7%BC%A9%E5%8C%85%E4%BF%9D%E5%AD%98%E5%88%B0%E7%9B%B8%E5%BA%94%E4%BD%8D%E7%BD%AE%20%2Fusr%2Flocal%2Fmysql%2Fbin%2Fmysqldump%20-u%20root%20-proot%20--default-character-set%3Dutf8mb4%20-q%20--single-transaction%20--flush-logs%20-E%20-R%20--triggers%20-B%20test%20--ignore-table%3Dtest.test_hash%20--ignore-table%3Dtest.test_hash_p%20%7C%20gzip%3EBACKUP_FILEDIR/test_$DATE.sql.gz echo -------------------数据库备份成功完成-------------

3、保存脚本

1、保存时可能会遇到用户权限不够,可用sudo命令切换到超级用户下操作

4、执行命令

sh /home/mysql/backup/scripts/backupp.sh

可能会遇到错误提示:mysqldump :command not found

这时需要查找本机mysqldump命令的位置

方法1

find / -name mysqldump

我查到的地址是:/usr/local/mysql/bin/mysqldump,最直接的方式就是直接将它复制到脚本命令上

方法2

然后通过ln命令为mysqldump在/usr/bin创建一个软链接 ln -fs /usr/local/mysql/bin/mysqldump /usr/bin Linux ln命令是一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接。 当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。 格式: ln [参数][源文件或目录][目标文件或目录] --参数 -b 删除,覆盖以前建立的链接 -d 允许超级用户制作目录的硬链接 -f 强制执行 -i 交互模式,文件存在则提示用户是否覆盖 -n 把符号链接视为一般目录 -s 软链接(符号链接) -v 显示详细的处理过程 创建链接后,在测试就没有问题了。

重新执行成功后在保存位置就已经生成了备份文件了

4、恢复

!/bin/bash #备份目录 BACKUP_ROOT=/home/mysql/backup BACKUP_FILEDIR=

math?formula=BACKUP_ROOT%2Ffiles%20%23---------------%E6%81%A2%E5%A4%8D%E6%95%B0%E6%8D%AE%E5%BA%93---------------%20echo%20------------------%E5%BC%80%E5%A7%8B%E6%81%A2%E5%A4%8D---------------%20%23gunzip%EF%BC%9A%E8%A1%A8%E7%A4%BA%E8%A7%A3%E5%8E%8B%E5%8E%8B%E7%BC%A9%E5%8C%85%20%23root%EF%BC%9A%E8%A1%A8%E7%A4%BA%E6%95%B0%E6%8D%AE%E5%BA%93%E7%94%A8%E6%88%B7%E5%90%8D%EF%BC%9Btest!%EF%BC%9A%E8%A1%A8%E7%A4%BA%E6%95%B0%E6%8D%AE%E5%BA%93%E5%AF%86%E7%A0%81%20%23test%3A%E8%A1%A8%E7%A4%BA%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84%E5%90%8D%E7%A7%B0%20gunzip%20%3CBACKUP_FILEDIR/test_20200228.sql.gz | mysql -u root -ptest! test echo ----------------恢复成功完成-------------

5、定时任务

检查是否安装crontabs

crontab

安装(已安装忽略)

yum -y install vixie-cron yum -y install crontabs

说明:

vixie-cron 软件包是 cron 的主程序;

crontabs 软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。

配置(已安装忽略)

cron 是 linux 的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务: service crond start //启动服务 service crond stop //关闭服务 service crond restart //重启服务 service crond reload //重新载入配置 service crond status //查看crontab服务状态 在CentOS系统中加入开机自动启动: chkconfig --level 345 crond on cron 的主配置文件是 /etc/crontab,它包括下面几行: SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # run-parts 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly 前四行是用来配置 cron 任务运行环境的变量。 SHELL 变量的值告诉系统要使用哪个 shell 环境(在这个例子里是 bash shell); PATH 变量定义用来执行命令的路径。 cron 任务的输出被邮寄给 MAILTO 变量定义的用户名。 如果 MAILTO 变量被定义为空白字符串(MAILTO=""),电子邮件就不会被寄出。 HOME 变量可以用来设置在执行命令或脚本时使用的主目录。 限制对 cron 的使用: /etc/cron.allow和/etc/cron.deny 文件被用来限制对 cron 的使用。 这两个使用控制文件的格式都是每行一个用户。 两个文件都不允许空格。 如果使用控制文件被修改了,cron 守护进程(crond)不必被重启。 使用控制文件在每次用户添加或删除一项 cron 任务时都会被读取。 无论使用控制文件中的规定如何,root 都总是可以使用 cron。 如果 cron.allow 文件存在,只有其中列出的用户才被允许使用 cron,并且 cron.deny 文件会被忽略。 如果 cron.allow 文件不存在,所有在 cron.deny 中列出的用户都被禁止使用 cron。

创建定时备份任务

添加定时任务 crontab -e

两分钟执行一次 #/home/mysql/backup/logs/job_

math?formula=(date%20%2B%5C%25Y%5C%25m%5C%25d)%202%3E%261%20%E4%BB%BB%E5%8A%A1%E6%89%A7%E8%A1%8C%E6%97%A5%E5%BF%97%E8%BE%93%E5%87%BA%20*%2F2%20*%20*%20*%20*%20sh%20%2Fhome%2Fmysql%2Fbackup%2Fscripts%2Fbackup.sh%20%3E%3E%20%2Fhome%2Fmysql%2Fbackup%2Flogs%2Fjob_(date +%Y%m%d) 2>&1

查看定时任务

查看定时任务 crontab -l

定时清理历史备份

创建脚本

touch /home/mysql/backup/scripts/backup_history_clean.sh

编写脚本

!/in/bash #定时清理三天前备份文件脚本 echo ---------------定期清理开始------------------- #这里的time 表示 -天 这里是三天前的删除 时间表示的是文件创建时间 find /home/mysql/backup/files -mtime +3 -name "*.gz" -exec rm -rf {} ; echo ---------------定期清理完成-------------------

添加定时任务

添加定时任务 crontab -e

每天凌晨1点执行 00 1 * * * sh /home/mysql/backup/scripts/backup_history_clean.sh

查看定时任务

查看定时任务 crontab -l

相关链接参考:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值