Backup &recovery备份和还原

备份类型(backup type)
物理和逻辑备份(Physical Versus Logical Backup)
        物理备份是指直接复制存储数据库内容的目录和文件,这种类型的备份适用于出现问题时须要快速恢复的大型重要数据库。
        逻辑备份保存以逻辑数据库结构(create database、create table)和内容(insert 语句)表示的信息,也就是保存的是建立数据库、建立表和插入数据的sql语句。这种类型的备份适用于较小数量的数据,能够在其中编辑数据值或表结构,或者在不一样的机器架构上从新建立数据。
物理备份特色以下:
(1)备份由数据库目录和文件副本组成,一般是MySQL整个或者部分数据目录;
(2)物理备份比逻辑备份要快,由于它只是复制文件,并不须要作什么转化;
(3)比逻辑备份更紧凑或者压缩性更好;
(4)由于备份速度和紧凑性对于繁忙、重要的数据库很是重要,MySQL企业版执行物理备份;
(5)备份的粒度范围从整个数据目录的级别到各个文件的级别。这可能提供表级粒度,也可能不提供,这取决于存储引擎。例如,InnoDB表能够单独存储在一个文件中,也能够与其余InnoDB表共享文件存储空间;每一个MyISAM表只对应于一组文件。
(6)除了数据库以外,备份还能够包括任何相关文件,如日志或配置文件。
(7)以这种方式备分内存表中的数据比较困难,由于它们的内容并不存储在磁盘上。
(8)备份只能移植到具备相同或相似硬件特征的其余机器上;
(9)能够在MySQL服务器不运行时执行备份。若是服务器正在运行,则有必要执行适当的锁定,以便服务器在备份期间不会更改数据库内容。MySQL Enterprise Backup自动锁定备份的表;
(10)物理备份工具包括用于InnoDB或任何其余表的MySQL企业备份的mysqlbackup,或用于MyISAM表的文件系统级命令(如cp、scp、tar、rsync)。
逻辑备份特色以下:
(1)逻辑备份工具包括mysqldump程序和SELECT…INTO OUTFILE语句,适用于任何存储引擎,甚至内存;
(2)在运行MySQL服务器时执行逻辑备份;
(3)以逻辑格式存储的备份与机器无关,而且具备高度的可移植性;
(4)备份不包括日志或配置文件,或不属于数据库的其余与数据库相关的文件;
(5)不管任何存储引擎,备份和恢复粒度可用于服务器级别(全部数据库)、数据库级别(特定数据库中的全部表)或表级别;
(6)备份的输出比物理备份大,尤为是以文本格式保存时;
(7)和物理备份相比,要慢些,由于服务器必须访问数据库信息并将其转换为逻辑格式。若是输出写在客户端,服务器还必须将其发送到备份程序。
 
全量和增量备份(Full Versus Incremental Backups)
        全量备份是指某个时间点MySQL服务器管理的全部数据的备份,增量备份是指备份一个时间点到另外一个时间点变化的数据,全量备份和增量备份区别是很明显的,第一次备份使用全量备份是必须的,可是每次都是全量备份,势必浪费时间和磁盘空间,特别是数据库变化很小的状况下,此时使用增量备份是一个比较好的选择。
实践
mysqldump命令
        它是MySQL自带的命令,先备份buffer中数据,而后再备份磁盘中的数据。生成的是一个包好sql语句的备份文件。下面分别以全库,单个数据库,单个表,表结构,表数据的备份为例说明它的基本用法。
备份全库
能够以下备份全库
mysqldump -uroot -proot --all-databases --single-transaction > 20190201-1325_all_backup.sql
-uroot:数据库登陆用户为root;
-proot:数据库登陆密码root,为了安全,建议使用-p,密码在执行命令后输入;
--all-databases:表示备份全库;
--singe-trasanction:保证了mysqldump看到的数据是一致的,此时其余事务对数据的修改,mysqldump是看不到的,其实在执行更名前,得到了全部数据库中全部表上的一个全局读锁(read lock);
>:输出符号;
20190201-1325_all_backup.sql:sql文件名,执行备份命令后,备份结果就保存在这个文件中,文件名中最好要包含备份时间、备份范围、backup关键字等信息,例如文件表示备份时间是2019年2月1日下午1点25分,all表示文件包含的是全库信息,backup表示这个文件时备份文件。

备份单个数据库
以备份单个test数据库为例,命令以下:
mysqldump -uroot -proot --single-transaction test > 20190201-1325_test_backup.sql
恢复test数据库的命令,以下:
mysql -uroot -proot test < 20190201-1325_test_backup.sql
---------------------
做者:leboop
来源:CSDN
原文:https://blog.csdn.net/L_15156024189/article/details/87521511
相关文章
相关标签/搜索