mysql定时备份shell脚本和还原

发布时间:2024年01月10日

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

数据库备份是防止数据丢失的一种重要手段。生产环境中,数据的安全性是至关重要的,任何数据的丢失都可能产生严重的后果。
数据库备份的重要性主要体现在:

  • 提高系统的高可用性和灾难可恢复性,在数据库系统崩溃时,没有数据库备份就没法找到数据。
  • 使用数据库备份还原数据库,是数据库崩溃时提供数据恢复最小代价的最优方案,如果让用户重新- 添加数据,代价未免太大。
  • 没有数据就没有一切,数据库备份是一种防范灾难的强力手段。

数据库备份分类

  • 物理备份:对数据库物理文件的备份
  • 逻辑备份:对数据库对象和对象数据的备份,mysql使用mysqldump将数据库中的对象和数据以sql的形式导出。以下介绍的是使用mysqldump进行数据库的备份。

mysqldump命令

命令格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 参数1,参数2… > 备份文件.sql
主要参数:

  • databases
    指定要备份的数据库
    参数后面所有名字参量都被看作数据库名。
  • tz-utc
    tz-utc 参数是 mysqldump 的默认参数,会使得 mysqldump 的导出文件的顶部加上一个设置时区的语句 SET TIME_ZONE=‘+00:00’ ,这个时区是格林威治时间,也就是0时区。这样当导出 timestamp 时间戳字段时,会把在服务器设置的当前时区下显示的 timestamp 时间值转化为在格林威治时间下显示的时间。比如我们数据库采用北京时间东八区,mysqldump 导出的文件当中显示的 timestamp 时间值相对于通过数据库查询显示的时间倒退了8个小时。
  • skip-tz-utc
    skip-tz-utc 的含义就是当 mysqldump 导出数据时,不使用格林威治时间,而使用当前 mysql 服务器的时区进行导出,这样导出的数据中显示的 timestamp 时间值也和表中查询出来的时间值相同。
  • compact
    压缩模式,产生更少的输出
    去掉注释和头尾等结构。

备份计划

1.每日备份,保留30天备份文件

shell脚本如下:
在这里插入图片描述

2.每月1号备份,保留12个月备份文件

定时调度

使用crontab命令
crontab -e
#每日凌晨备份
0 0 * * * /opt/backup.sh >> /tmp/backup_error.log 2>&1

还原

./mysql -h 127.0.0.1 -u root -p’xxxxx’ <backup_2024-01-09.sql
还原时常见问题(略)

总结

数据库备份是生产环境必做的一项工作。备份时参数很重要,否则在还原时会遇到各类问题。还原时也时常出现问题。更详细的内容请点击下载

文章来源:https://blog.csdn.net/gwc791224/article/details/135471239
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。