做网站泰州,校园网站建设的请示,快速企业建站,网站开发的概要设计模板一.备份概述 备份的主要目的是灾难恢复#xff0c;备份还可以测试应用、回滚数据修改、查询历史数据、审计等。
1.数据备份的重要性 在企业中数据的价值至关重要#xff0c;数据保障了企业业务的正常运行。因此#xff0c;数据的安全性及数据的可靠性是运维的重中之重…一.备份概述 备份的主要目的是灾难恢复备份还可以测试应用、回滚数据修改、查询历史数据、审计等。
1.数据备份的重要性 在企业中数据的价值至关重要数据保障了企业业务的正常运行。因此数据的安全性及数据的可靠性是运维的重中之重任何数据的丢失都可能对企业产生严重的后果。通常情况下造成数据丢失的原因有如下几种
程序错误。 人为操作错误运算错误。磁盘故障。灾难如火灾、地震和盗窃。
2.数据库备份类型
1从物理与逻辑的角度分类 数据库备份可以分为物理备份和逻辑备份。物理备份是对数据库操作系统的物理文件如数据文件、口志文件等的备份。这种类型的备份适用于在出现问题时需要快速恢复的大型重要数据库。 物理备份又可以分为冷备份脱机备份、热备份联机备份和温备份。
冷备份在数据库关闭状态下进行备份操作。热备份在数据处于运行状态时进行备份操作该备份方法依赖数据库的日志文件。温备份数据库锁定表格不可写入但可读的状态下进行备份操作。 逻辑备份是对数据库逻辑组件的备份如表等数据库对象表示为逻辑数据库结构和内容的信息。这种类型的备份适用于可以编辑数据值或表结构较小的数据量或者在不同的机器体系结构上重新创建数据。
2 从数据库的备份策略角度分类
从数据库的各份策略角度数据库的各份可分为完全备份、差异各份和增量备份。
完全备份每次对数据进行完整的备份即对整个数据库、数据库结构和文件结构的备份保存的是备份完成时刻的数据库是差异备份与增量备份的基础。完全备份的备份与恢复操作都非常简单方便但是数据存在大量的重复并且会占用大量的磁盘空间各份的时间也很长。差异备份备份那些自从上次完全备份之后被修改过的所有文件备份的时间节点是从上次完整备份起备份数据量会越来越大。恢复数据时只需恢复上次的完全备份与最近的次差异备份。 增量备份只有那些在上次完全备份或者增量备份后被修改的文件才会被备份。以上次完整备份或上次增量备份的时间为时间点仅备份这之间的数据变化因而备份的数据量小占用空间小备份速度快。但恢复时需要从上一次的完整备份开始到最后一次增量备份之间的所有增量依次恢复如中间某次的各份数据损坏将导致数据的丢失
3.常见的备份方法 MySQL数据库的各份可以采用很多种方式如直接打包数据库文件物理冷备份、专用备份工具mysqldump、二进制日志增量备份、第三方工具备份等。
1物理冷备份 物理冷备份时需要在数据库处于关闭状态下能够较好地保证数据库的完整性。物理冷备份一般用于非核心业务这类业务一般都允许中断物理冷备份的特点就是速度快恢复时也是最为简单的。通常通过直接打包数据库文件夹本章中的数据库文件夹位于usrlocal/mysqldata来实现备份。
2专用备份工具mysqldump或mysqihotcopy mysqldump程序和mysqlhotcopy都可以做备份。mysqldump是客户端常用逻辑备份程序能够产生一组被执行以后再现原始数据库对象定义和表数据的SQL语句。它可以转储一个到多个MySQL数据库对其进行备份或传输到远程SQL服务器。mysqldump更为通用因为它可以备份各种表。mysqlhotcopy仅适用于某些存储引擎。 mysqlhotcopy是由TimBunce最初编写和贡献的Perl脚本。mysqlhotcopy仅用于备份MyISAM和ARCHIVE表。它只能运行在UNI或Linux上。因为使用范围很小因此本文中不做详细介绍如果同学们有兴趣可以在课下研究。
3通过启用二进制日志进行增量备份 MySQL支持增量备份进行增量备份时必须启用二进制日志。二进制日志文件为用户提供复制对执行备份点后进行的数据库更改所需的信息进行恢复。如果进行增量备份包含自上次完全备份或增量各份以来发生的数据修改需要刷新二进制日志。
4通过第三方工具备份 PerconaXtraBackup是一个免费的MySQL热备份软件支持在线热备份Innodb和XtraDB也可以支持MySQL表备份不过MyISAM表的各份要在表锁的情况下进行。
二.数据库完全备份操作
1.物理冷备份与恢复
1先关闭mysqld服务
[rootlocalhost ~]# systemctl stop mysqld
2创建一个存储目录
[rootlocalhost ~]# mkdir /backup 3使用tar创建备份文件
[rootlocalhost local]# tar zcvf /backup/mysql_$(date %F).tar.gz mysql/
4恢复数据库
[rootlocalhost ~]# systemctl stop mysqld
[rootlocalhost ~]# cd /backup/
[rootlocalhost backup]# tar zxvf mysql_2023-06-08.tar.gz[rootlocalhost backup]# cd /usr/local/
[rootlocalhost local]# mv mysql/ mysql.bak[rootlocalhost local]# cd /backup/
[rootlocalhost backup]# mv mysql /usr/local/
[rootlocalhost backup]# systemctl start mysqld
[rootlocalhost backup]# mysql -u root -p -e select * from auth.users;
2.mysqldump备份与恢复 通过mysqldump命令可以将指定的库表或全部的库导出为SQL脚本便于该命令在不同版本的MySQL服务器上使用。例如当需要升级MySQL服务器时可以先试用mysqldump命令将原有库信息导出然后直接在升级后的MySQL服务器中导入即可。
1备份数据库 使用mysqldump命令导出数据时默认会直接在终端显示若要保存到文件还需要结合Shell的“重定向输出操作。
模式一备份指定库中的部分表
mysqldump 【选项】 库名 【表名1】 【表名2】…/备份文件路径/文件名
模式二备份一个或多个完整的库
mysqldump 【选项】 --database 库名1 库名2…/备份文件路径/文件名 模式三备份MySQL服务器中所有的库
mysqldump 【选项】 --all-databases/备份路径/备份文件名
备注常用的选项包括“-u”“-p”分别用于指定数据库的用户和密码当导出的数据量较大时可以添加“--opt”选项以优化执行速度
2恢复数据库 使用mysqldump命令导出的SQL备份脚本在需要恢复时可以通过mysql命令对其进行导入操作格式
mysql 【选项】【库名】 【表名】/备份路径/备份文件名 三.mysql增量备份与恢复 使用mysqldump进行完全备份备份的数据中有重复数据份时间与恢复时间过长而增量备份就是自上一次备份之后增加或改变的内容
1.特点 与完全备份不同增量备份没有重复数据备份量不大时间短但其恢复麻烦需要上次完全备份及完全备份之后所有的增量备份才能恢复而且要对所有增量备份进行逐个反推恢复。MySQL没有提供直接的增量备份办法可以通过MySQL提供的二进制日志binanylogs间接实现增量备份。
2.意义 进制日志保存了所有更新数据库的操作。二进制日志在启动MySQL服务器后开始记录并在文件达到二进制日志所设置的最大值或者接收到flush logs命令后重新创建新的日志文件生成二进制文件序列并及时把这些日志保存到安全的存储位置即可完成一个时间段的增量备份。使用max_binlog_size配置项可以设置二进制口志文件的最大值如果二进制文件的大小超过了max_binlog_size 它就会自动创建新的二进制文件
3.增量备份 要进行MySQL的增量备份首先要开启二进制日志功能。开启MySQL的二进制日志功能的实现方法有很多种最常用的是在MySQL配置文件的mysqld项加入“log-bin/文件路径/文件名”前如log-bin/usr/local/mysql/mysql-bin然后重启MySQL服务就可以在指定路径下查看二进制日志文件了。默认情况下二进制日志文件的扩展名是一个六位的数字如mysql-bin.000001 1修改MySQL主配置文件my.cnf
在[mysqld]模块中添加log-binmysql-binserver-id1binlog——formatMIXED[rootlocalhost ~]# systemctl restart mysqld2生成日志内容
[rootlocalhost ~]# cd /usr/local/mysql/data/
[rootlocalhost data]# mysqladmin -u root -p flush-logs
3查看新的日志文件
mysqlbinlog --no-defaults mysql-bin.000002
注意如果sql语句被加密了可以使用以下指令
mysqlbinlog --no-defaults --base64-outputDECODE-ROWS mysql-bin.000002
4.MySQL增量恢复 常用的增量恢复的方法有三种一般恢复、基子位置的恢复、基于时间点的恢复般恢复将所有备份的二进制日志内容全部恢复命令格式如下所示。
1.一般恢复
将所有备份的二进制日志内容全部恢复命令格式如下
mysqlbinlog --no-defaults 增量备份文件 | mysql -u 用户 -p 密码
2.基于位置恢复
数据库管理员在操作数据库时可能在同一时间点既有错误的操作也有正确的操作通过基于位置进行恢复可以使恢复更加精确。
1恢复数据到指定位置
mysqlbinlog --stop-position操作id 二进制日志 | mysql -u 用户名 -p 密码2从指定的位置开始恢复
mysqlbinlog --start-opsition操作id 二进制日志 | mysql -u 用户名 -p 密码
3.基于时间点
跳过某个发生错误的时间点实现数据恢复而基于时间点的恢复可以分为三种情况
1从日志开头截止到某个时间点
mysqlbinlog --no-defaults --stop-datetime时间 二进制日志 | mysql -u 用户 -p 密码
2从某个时间点到日志结尾的恢复
mysqlbinlog --no-defaults --start-detatime时间 二进制日志 | grep -u 用户名 -p 密码
3从某个时间点到某个时间点的恢复
mysqlbinlog --no-defaults --start-datetime时间 --stop-datetime时间 二进制日志 | mysql -u 用户名 -p 密码