Linux运维:mysql数据库的备份与恢复

更新日期: 2019-05-27阅读: 2.3k标签: Linux
运维工程师的日常工作需要对各种数据进行备份,其中数据库数据的备份当属重点之一,为了方便管理,选择哪种备份方案是很重要的。


数据备份种类

全量备份

全量备份就是指对某一个时间点上的所有数据或应用进行的一个完全拷贝。实际应用中就是用一盘磁带对整个系统进行全量备份,包括其中的系统和所有数据。

特点

  • 备份的数据全面而且最为完整
  • 数据量大的时候备份时间长
  • 备份数据会存在大量重复信息


增量备份

增量备份是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的文件。这就意味着,第一次增量备份的对象是进行全备后所产生的增加和修改的文件;第二次增量备份的对象是进行第一次增量备份后所产生的增加和修改的文件,如此类推。

特点

  • 与全量备份相比,没有重复的备份数据
  • 备份数据量不大,备份恢复的时间短
  • 数据恢复麻烦,必须具有上一次全备份和所有增量备份磁带,并且需要按照全量备份到增量备份的顺序反推进行恢复


差异备份

差异备份是指在一次全备份后到进行差异备份的这段时间内,对那些增加或者修改文件的备份。

特点

  • 备份时间短,节省磁盘空间
  • 恢复所需的磁带少,恢复时间短

比较
数据备份的数据量(大>>小):
全量备份>差异备份>增量备份

数据的恢复时间(快>>慢):
全量备份->差异备份->增量备份


mysql数据库备份工具

mysqldump工具

mysqldump是一款mysql逻辑备份的工具,它将数据库里面的对象(表)导出作为SQL脚本文件。它是mysql备份常用的备份方法,适合于不同版本mysql之间的升级、迁移等,不过在数据库比较大的时候,效率不高。

下面是mysqldump命令的常见用法:

# 备份单个的数据库,如备份db1这个数据库
mysqldump -uroot -p123456 db1 > /backup/db1_`date +%F`.sql

# 备份所有数据库,-A参数
mysqldump -uroot -p123456 -A > /backup/all_db.sql

# 备份远程主机的数据库,-h指定IP地址,-P(大写P)指定端口
mysqldump -uroot -p123456 -h192.168.30.4 -P3306 db1 > /backup/db1.sql

# 只备份表结构,不备份数据,使用-d参数
mysqldump -uroot -p123456 -d db1 > /backup/db1.sql

# 只备份数据,不备份表结构,使用-t参数
mysqldump -uroot -p123456 -t db1 > /backup/db1.sql 

# 备份指定的多个库,-B参数
mysqldump -uroot -p123456 -B db1 db2 db3 > /backup/db123.sql

# 备份指定的表,如备份db1库里面的stu表
mysqldump -uroot -p123456 db1 stu > /backup/db1_stu.sql

# 备份多个表
mysqldump -uroot -p123456 库1 表1 表2 表3... > db_tables.sql

# 恢复数据
mysqldump -uroot -p123456 dbname < xxx.sql
#或者
mysqldump -uroot -p123456 < xxx.sql

其他参数:

参数说明
-R, --routines备份存储过程和函数数据
--triggers备份触发器数据
--master-data={1或者2}告诉你备份后时刻的binlog位置,如果等于1,则将其打印为CHANGE MASTER命令; 如果等于2,那么该命令将以注释符号为前缀。
--single-transaction对innodb引擎进行热备

一条完整的备份语句(适用innodb引擎):

mysqldump -A -R --triggers --master-data=2 --single-transaction | gzip >/backup/all_$(date +%F).sql.gz

适用多引擎混合的一条完整备份语句:

mysqldump -A -R --triggers --master-data=2 |gzip >/backup/all_$(date +%F).sql.gz


备份脚本
日常可以根据需求进行备份工作,常见是使用shell脚本结合任务计划,下面是一个mysql数据库备份脚本示例,mysql_backup.sh脚本内容如下:

#!/bin/bash 
bakdir=/data/backup # 定义备份文件存放目录
d=`date +%F` # 以日期为命名格式

# 备份三个数据库bbs,blog,db2
for db in bbs blog db2
do
    mysqldump -uroot -p123456 $db > $bakdir/$db\_$d.sql
done
cd $bakdir
# 对备份文件进行压缩
gzip *_$d.sql
# 对备份时间超过一个月的文件进行删除
find ./ -name "*.gz" -mtime +30 |xargs rm

添加任务计划:

[root@moli_linux1 data]$ chmod +x /usr/local/sbin/mysql_backup.sh
[root@moli_linux1 data]$ crontab  -e
# 添加内容
30 3 * * * /bin/bash /usr/local/sbin/mysql_backup.sh >/tmp/mysql_backup.log 2>/tmp/mysql_backup.log
# 任务计划内容是:
# 每天凌晨3点30分执行备份脚本,并将正确与错误输出写进mysql_backup.log文件

链接: https://www.fly63.com/article/detial/3446

putty对Linux上传下载文件或文件夹

putty是一个开源软件,目前为止最新版本为0.70。对于文件或文件夹的上传下载,在Windows下它提供了pscp和psftp两个命令。pscp在命令提示符中使用,只要putty(ssh)能够远程,就能使用该命令。

sed 和 awk,所有的 Linux 管理员都应该会的技能!

我曾经有一次在 Reddit 看到一个帖子。这是一个很简单的需求,就像我们常用 Unix 的人每天遇到的一样。他的问题是,如何删除文件中的重复行,只保留不重复的。 这听起来似乎很简单,但是当文件足够大时,就会有些复杂。

在linux上部署自己开发的web项目

相信有很多做开发的小伙伴和我之前一样,只会在windows环境下,利用开发工具开发运行web项目,但是却不知道怎么把开发好的项目部署到linux服务器上去,并能够外网访问,这里是我自己摸索总结的过程

w3m浏览网页_linux在命令符界面如何浏览网页

w3m是个开放源代码的命令行下面的网页浏览器。 它支持表格、框架、SSL连线、颜色。如果是在适当的terminal上,支持多种操作系统,在命令行终端可以很好的支持中文。即使在没有鼠标支持的情况下也可以检查网页的输出。本文列出常用的快捷键。

linux系统启动过程

首先计算机之中在主板上,有一个东西叫ROM(Read Only Memor),在ROM上固话了一些程序,被称为BIOS(基本输入输出系统),由于系统刚刚启动时处于实模式,关于什么是实模式,以及保护模式

Linux下4种禁用Root登陆的方法,你掌握了哪几种呢?

我们都知道 Linux 下 Root 用户的权限是最大的,因此一般不推荐直接使用 Root 用户操作。通常都是使用普通用户,在必要时通过 Sudo 命令来提权。在 Ubuntu 中,更是直接把 Root 用户直接禁用了。那么如何在 Linux 中禁止Root 登陆呢?今天,我们就来介绍几种常用的方法。

安全强化你的Linux服务器的七个步骤

这篇入门文章将向你介绍基本的 Linux 服务器安全知识。虽然主要针对 Debian/Ubuntu,但是你可以将此处介绍的所有内容应用于其他 Linux 发行版。我也鼓励你研究这份材料,并在适用的情况下进行扩展。

处理Linux文件的3个技巧

Linux 提供了许多用于查找、计数和重命名文件的命令。这有一些有用的选择。Linux 提供了多种用于处理文件的命令,这些命令可以节省你的时间

如何查看Linux哪些用户拥有sudo权限

本教程将讲解如何查看Linux用户是否有sudo权限。您还将学习如何查看Linux系统上的所有sudo用户。如何查看Linux哪些用户拥有sudo权限

linux搭建ftp服务器

运行以下命令安装 vsftpd;查看vsftpd文件夹;说明:/etc/vsftpd/vsftpd.conf 是核心配置文件。/etc/vsftpd/ftpusers 是黑名单文件,此文件里的用户不允许访问 FTP 服务器。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!