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=BACKUP_ROOT/files BACKUP_LOGDIR=BACKUP_ROOT/logs #当前日期 DATE=(date +%Y%m%d) #--------------------备份-------------------------- #循环数据库备份 echo -------------------数据库备份开始----------------- #-u后面表示数据库的用户名 -p后面的表示数据库的密码 --default-character-set 设置备份数据库的字符集 #--single-transaction 表示在 innoDB引擎下支持热备份 如果是MyIsam引擎就需要替换为 --lock-all-tables ; #-B表示指定多个库,在备份文件中增加建库语句和use语句 ;-E表示导出事件 -R 表示导出存储过程以及自定义函数 # --ignore-table 表示备份时忽略某些表,格式为:database.tablename ,多张表时 需多个--ignore-table; -q 表示不缓冲查询,直接导出到标准输出 #test表示数据库的名称;gzip表示将备份文件压缩为.gz结尾的压缩包保存到相应位置 /usr/local/mysql/bin/mysqldump -u root -proot --default-character-set=utf8mb4 -q --single-transaction --flush-logs -E -R --triggers -B test --ignore-table=test.test_hash --ignore-table=test.test_hash_p | gzip>BACKUP_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=BACKUP_ROOT/files #---------------恢复数据库--------------- echo ------------------开始恢复--------------- #gunzip:表示解压压缩包 #root:表示数据库用户名;test!:表示数据库密码 #test:表示数据库的名称 gunzip <BACKUP_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_(date +\%Y\%m\%d) 2>&1 任务执行日志输出 */2 * * * * sh /home/mysql/backup/scripts/backup.sh >> /home/mysql/backup/logs/job_(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

相关链接参考:

https://tool.lu/crontab/http://blog.itpub.net/26736162/viewspace-2641620/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。