MariaDB/MySQL之备份及恢复
数据备份是包装数据安全的重要策略之一,怎么做备份和怎么备份对于数据库日常管理十分重要;但是备份的最主要作用就是恢复,不能恢复的备份就不仅仅是做无用功的
数据备份是包装数据安全的重要策略之一,怎么做备份和怎么备份对于数据库日常管理十分重要;但是备份的最主要作用就是恢复,不能恢复的备份就不仅仅是做无用功的问题了,所以经常做一下备份的恢复测试就必不可少了,这一点甚至比备份本身更加重要。那么就说说备份和恢复。
(1)根据备份时,数据库服务器是否在线:
cold backup:冷备,停机备份;
warm backup :温备,施加全局锁,进行备份,只可读不可写;
hot backup:热备,,生产中进行备份,只有基于事务的存储引擎才能进行;
(2) 根据备份的数据集:
full backup:完全备份;
partial backup: 部分备份;
(3)根据备份时的接口(直接备份数据文件还是通过mysql服务器导出数据),无论采取什 么方式备份,这两种方式都是必选一的:
physical backup :物理备份,直接复制(归档)数据文件的备份方式;
◆ 优点:直接复制数据文件,不需其他工具;
◆ 缺点:跨平台能力不好;
logical backup :逻辑备份,把数据从库中提出出来保存为文本文件;
◆ 优点:
①、可以使用文本编辑器编辑;
②、跨平台能力强,恢复方式灵活;
③、有助于避免数据损坏;
◆ 缺点:
①、占用空间大(以现在存储硬件行情,这似乎不再是个问题了);
②、无法保证浮点数的精度;
③、数据恢复后,需要重新建立索引;
(4) 根据备份时是备份整个数据还是仅备份变化的数据:
full backup:完全备份;
incremental backup:增量备份;
differential backup:差异备份;
2、备份策略
没有一种备份策略是完美的和适用于所有场景的,制定备份策略应当从一下几个方面来考量:
◆ 备份成本:包括加锁时间、备份时长、备份负载等;
◆ 恢复成本:主要是恢复时长 ;
◆ 备份对象:有数据、配置文件、代码、os相关的配置文件以及与复制相关的配置等;
主要根据以上因素来选择备份方式、备份时间(无论采取什么样的备份方式,都会对数据库产 生影响的,一般要选择影响最小的时候),以进一步来制定备份的策略。
3、备份工具
(1)mysqldump:逻辑备份工具
◆ 可以实现InnoDB热备、MyISAM温备、Aria温备;
◆ 但是备份和恢复过程较慢;
mysqldump的用法:
(1)语法格式: # mysqldump [options] [db_name [tbl_name ...]] (2)备份单个库:mysqldump [options] db_name 恢复时:如果目标库不存在,需要事先手动创建 (3)常用选项 --all-databases: 备份所有库 --databases db1 db2 ...: 备份指定的多个库 备份前要加锁 --lock-all-tables:请求锁定所有表之后再备份,对MyISAM、InnoDB、Aria做温备 --single-transaction: 能够对InnoDB存储引擎实现热备; 备份代码: --events: 备份事件调度器代码 --routines: 备份存储过程和存储函数 --triggers:备份触发器 备份时滚动日志: --flush-logs: 备份前、请求到锁之后滚动日志; 复制时的同步位置标记: --master-data=[0|1|2] 0: 不记录 1:记录为CHANGE MASTER语句 2:记录为注释的CHANGE MASTER语句备份步骤:
1、请求锁:--lock-all-tables或使用--singe-transaction进行innodb热备; 2、滚动日志:--flush-logs 3、选定要备份的库:--databases 4、记录二进制日志文件及位置:--master-data=数据恢复:
恢复时,关闭二进制日志,关闭其它用户连接;
导入数据恢复,Ex:# mysqldump
一般mysqldump备份策略:
备份:mysqldump+二进制日志文件; 周日做一次完全备份:备份的同时滚动日志 周一至周六:备份二进制日志; 恢复: 完全备份+各二进制日志文件中至此刻的事件 对MySQL配置文件,以及与MySQL相关的OS配置文件在每次修改后都应该直接进行备份; (2)mysqldumper: 多线程的mysqldump
◆ 很难实现差异或增量备份。