欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

MariaDB/MySQL之备份及恢复

程序员文章站 2024-04-02 23:27:10
...

数据备份是包装数据安全的重要策略之一,怎么做备份和怎么备份对于数据库日常管理十分重要;但是备份的最主要作用就是恢复,不能恢复的备份就不仅仅是做无用功的

数据备份是包装数据安全的重要策略之一,怎么做备份和怎么备份对于数据库日常管理十分重要;但是备份的最主要作用就是恢复,不能恢复的备份就不仅仅是做无用功的问题了,所以经常做一下备份的恢复测试就必不可少了,这一点甚至比备份本身更加重要。那么就说说备份和恢复。

(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

◆ 很难实现差异或增量备份。