백업 유형 :
핫 백업 : 읽기 및 영향을받지 쓰기
예열 대기 : 만 백업을 수행 읽기
콜드 백업 : 오프라인 백업, 읽기와 쓰기를 실행할 수 없습니다, 백업 종료
논리적 및 물리적 백업 백업
물리적 백업 : 복사 데이터 파일을 빠르고.
논리적 백업 : 텍스트 파일, 필요, 그를 다시 복원 할 수있는 데이터를 내보낼 수 있습니다.
전체 백업, 증분 백업, 차등 백업
전체 백업 : 백업 모든 데이터
데이터 백업은 마지막 전체 백업 이후 변경 : 증분 백업을
차등 백업 : 데이터를 변경 한 후 마지막 백업 또는 증분 백업을 백업
백업 대상? 데이터, 구성 파일, 바이너리 로그, 트랜잭션 로그, - +
의 MyISAM : 논리 볼륨과, 핫 백업을 지원하지 않습니다 (LV) , 또는 유일한 따뜻한 백업과 함께.
이노 디비 : 지원 핫 백업은 어떤 도구를 사용해야합니다 (mysqldummp / xtrabackup 오픈 소스 ) .
mysqldump를 : 논리적 백업 도구 의 MyISAM ( 온도 ) , 이노 디비 ( 핫 스페어 )
mysqlhotcopy : 물리적 백업 도구, 백업 따뜻한 / 차가운 백업
CP : 콜드 백업
LV : 논리 볼륨 스냅 샷 기능, 거의 핫 백업
mysqldump는 백업
원리 : 대량 삽입 문 삽입에 대한 전체 테이블의 데이터 백업
백업 데이터는 보호 조치를하기 전에 완료해야합니다
1, 하드 디스크의 버퍼 메모리의 데이터는, 잠금 테이블을 동기화 : 테이블에 플러시 읽기 잠금을
2, 잠금을 해제하려면 : 테이블 잠금 해제
3, 근접 바이너리 로그 : SE T SQL_LOG_BIN = 0;
4, 롤링 로그 : FLUSH LOGS;
명령 옵션 :
--master 데이터 = {0 | 1 | 2}
0 : 바이너리 로그 파일과 경로를 기록하지 마십시오
1 행 chnage 마스터 기록 위치는 복구 서버에 직접 사용할부터
2 : 에 chnage 마스터 기록 된 위치, 보통 기본값은 주석처럼
Ionndb 핫 백업
거래 --- 단일 ---> 상시 대기 시작 지점
데이터베이스 --- 모든 ---> 모든 라이브러리를 백업
라이브러리 이름, 라이브러리 이름 --databases ---> 백업 지정 라이브러리를
의 MyISAM 예열 대기
모든-tabls --- 잠금 ---> 백업 온도를 수행하는
테이블은 --- 잠금 ---> 하나 개의 테이블을 백업
백업 라이브러리 또는 테이블
[루트 @의 PC2 ~] # mysqldump를 -uroot -p jiaowu JIJ > / 루트 / jiaowu.sql
关键字 选项 库名 表名 导出的路径 备份后的文件名
还原库 或者表
还原之前必须得先创建一个新库(sun)
[root@pc2 ~]# mysql -uroot -p -hlocalhost sun < biao.sql ;
指定库名 导入的路径 备份的文件名
备份策略
每周完全备份+每日增量备份
完全备份:mysqldump
增量备份:备份二进制文件文件(备份之前flush logs)
当我们把整所有库都删掉时,要先去初始化数据库
若启动不起来:killall mysqld
逻辑备份
1、浮点数据丢失精度
2、备份出的数据更占用存储空间,压缩后可 大大节省空间
3、不适合对大数据做完全备份
select备份
备份:select * into outfile '/tmp/ss.txt' from courses;
还原的时候注意:要恢复的表格式要事先创建好,然后才能还原。
还原 load data infile '/tmp/sss.txt' into table 表名
使用LVM快照进行数据库备份
set sql_log_bin=0; --->关闭记录二进制文件,开启=1
show master status; --->查看当前二进制日志
SHOW BINLOG EVENTS IN '日志名'; --->查看二进制日志中的事件
前提:
1、数据文件在逻辑卷上
2、此逻辑卷所在卷组必须有足够的空间够快照卷使用
3、数据文件和事务日志要在同一个逻辑卷中
过程
1、启动一个事务:start transaction;
2、在一个表中插入数据:insert into tutors (Tname) values ('stu001');
3、提交事务:commit;
4、刷新表并且给所有表加锁:flush tables with read lock; 并且执行一次flush logs,滚动日志
5、通过另外一个终端保留二进制日志文件及相关位置信息
mysql -urooot -p -hlocalhost -e 'show master status\G' > /路径/master.info
6、创建快照卷
lvcreate -L 大小 -s -p -r -n名称 lv名称 卷组路径
7、释放锁 mysql> unlock tables;
8、挂载快照卷,备份
mount 、 cp -a
9、删除快照卷
10、增量备份二进制日志
二进制日志相关的几个选项
若进不去mysql字符界面:
[client]
socket=/tmp/mysql.sock
xtrabackup数据库备份
下载xtrabackup这个工具:www.percona.com
安装之前会有依赖包:libev-4.15-1.el6.rf.i686.rpm
perl-DBD-MySQL
使用rpm安装xtrabackup :rpm -ivh percona-xtrabackup-2.3.4-1.el6.i686.rpm
xtrabackup
--defaults-file= //mysql主配置文件
--user=root //mysql 用户
--password='oracle' //mysql密码
--socket=/var/lib/mysql/mysql.sock /data/mysql/backup/full //mysqlsock文件,可选!
备份
innobackupex --user=root /usr 备份整个数据库,备份文件放在/usr/下面
备份完成之后,他会在/usr/目录下创建一个以当前时间命令的文件夹!
在这个文件夹里面都有
xtrabackup_binlog_info:二进制文件信息
xtrabackup_logfile :纯数据文件,
xtrabackup_checkpoints :检查点,
backup-my.cnf :备份命令用到的配置选项信息
现在模拟mysql数据库损坏,service mysqld stop ,然后把/mydata/data目录下的所有数据删除!
在备份之后需要做一些准备操作,在能进行还原
1、将那些已经提交的事务同步到数据文件,从日志文件同步到数据文件。
2、将那些尚未提交的事务给他做回滚
使用--apply-log实现回滚,将那些已经提交的事务同步到数据文件
准备操作
innobackupex --appli-log /usr/2016-05-16_16-57-49/
关键字 选项 指定备份目录
当出现completed OK时,你的准备操作已经完成!
当准备操作完成之后又出现新的数据怎么办?
做即时点还原
首先在mysql中做滚动日志,flush logs;
然后把数据目录中的二进制文件读取出来拷贝到另一个地方,以后可以拿来用就可以了!
cp mysql-bin.000005 /root/ (当前位置在/mydata/data)
还原
还原前要保证数据目录中必须是空的!
要想在一个完全备份中恢复数据,只需要使用--copy-back
innobackupex --copy-back /usr/2016-05-16_16-57-49/
选项 备份文件路径
当出现completed OK!时,还原成功!
然后修改数据目录的权限 chown -R mysql:mysql /mydata/data/
然后再进行即时还原,把我们原先cp出去的那个二进制日志文件制作成sql脚本,导入到mysql中!把mysql还原到崩溃的那一刻。
找到cp出去的那个二进制日志文件,读取那个文件并保存为sql脚本
mysqlbinlog /tmp/mysql-bin.000002 > /tmp/sd.sql
进入mysql页面中:
set sql_log_bin=0;
source /tmp/sd.sql; :执行这个cp出去的sql脚本。
set sql_log__bin=1; :还原回设置
这就是xtrabackup +二进制日志进行备份!
xtrabackup支持对Innodb存储引擎做增量备份。
使用xtrabackup实现增量备份
先进行一次完全备份!
要想实现增量备份,加一个选项 --incermental-dir
第一次增量备份:innobackupex --incremental /存放路径 --incremental-basedir 完全备份文件路径
第二次增量备份:innobackupex --incremental /存放路径 --incremental-basedir 上一次增量备份文件的路径
准备操作!
innobackupex --apply-log --redo-only 完全备份文件夹位置
对第一次增量备份合并到完全备份中去
innobackupex --apply-log --redo-only 指定完全备份文件位置 --incremental-dir=第一次增量备份文件位置
对第二次增量本分合并到完全备份中去
innobackupex --apply-log --redo-only 指定完全备份文件位置 --incremental-dir=第二次增量备份文件位置
现在还原的时候,只还原完全备份就可以了,因为,所有的redo操作都已经合并到完全备份中去了。
使用xtrabackup实现增量备份还原
破坏mysql,把数据目录中的文件都删了!
innobackupex --copy-back 指定完全备份位置