centos mysql 实战 第十二节课 备份恢复 备份方案 备份可以分为几种形式 mysqldump 在不同版本里对性能会不会有影响? mysqldump 的用户需要什么权限 mysqldump 支持Where条件 备份评估
阿里云
Percona-live 2016-4
基于Innodb物理复制
mysql5.7没有线程池,需要用percona版本mysql才有,percona的定位是做免费的企业版mysql
mysql5.6的memcached插件只是提供memcached API,让memcached可以直接访问innodb表,而不是mysql提供memcached功能
备份恢复
备份是怎么样一个定位呢
教育项目 使用mysql 出现了数据页的损坏
20G数据文件大小
16万,做的数据恢复
做备份需要增加
1. 备份硬件成本
2. 备份的管理成本
10000G = 10T
Disk -> Disk-> 备份网络里面
对于超大容量文件传送到Ceph 分布式文件系统
备份方案
最后救命稻草
同样也包含了开发测试环境,每天做一个全备 mysqldump
恢复时间
没有备份会出现什么问题
1. 做备份
2. 学会看日志
如果大家在线上做SQL更新,先做备份
备份可以分为几种形式
冷备 & 热备
冷备 数据处理静止状态 把数据库关掉
2016-5-12 16:00:00
cp -r /data/mysql/msyql3376/ /data/backup/mysql3376_2016-05-12
mv /data/mysql/mysql3376/ /data/mysql/mysql3376_20160512210000_bak
mkdir /data/mysql/mysql3376
cp -r /data/backup/mysql3376_20160512/* /data/mysql/mysql3376/
chown -R mysql:mysql /data/mysql/mysql3376/*
热备 不停数据备做备份 逻辑,物理
逻辑备份: 生成的SQL文件,通过SQL执行恢复
mysqldump
mydumper 要锁表的 基于glibc 库 percona在维护
mysqlpump 5.7
逻辑备份的核心都是调用select into outfile
物理备份 :在线的copy物理文件进行备份
MySQL Enterprise BACKUP Facebook在用
Percona Xtrabackup
现在用的比较多的就是Xtrabackup这个工具
从备份量上来看,可以分为:
1. 全备
2. 增备/差备
增量备份在MySQL里有两种实现方式
1. 备份binlog
/usr/local/mysql/bin/mysqldump -u root -p -h 127.0.0.1 --master-data=2 --single-transaction --databases glc > dumpglc.sql
--single-transaction开启RR隔离级别
change master to master_log_file=xxxx ,master_log_pos =xxx;
flush tables:表结构变更未刷新到磁盘的,刷新到磁盘
FLUSH TABLES WITH READ LOCK:整个数据库只能读,不能写
FLUSH TABLES WITH READ LOCK =========================
53 Query SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
53 Query START TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */
53 Query SHOW MASTER STATUS
53 Query UNLOCK TABLES =============================
SAVEPOINT sp
select * from tb1
ROLLBACK TO SAVEPOINT sp
select * from tb2
RELEASE SAVEPOINT sp 回滚事务
mysqldump工具流程
刷新表结构
锁全库
开一个事务,设置会话为RR隔离级别,读取快照
获得SHOW MASTER STATUS 里面的master_log_file=xxxx ,master_log_pos =xxx;
解锁库
开一个保存点,不停循环select 库里的表,select完一个继续回到保存点select 下一个
万一中途出意外回滚整个保存点
FLUSH TABLES WITH READ LOCK 和UNLOCK TABLES 之间不能写
4点开始备份, 5点结束, 这个备份是几点的?
mysqldump 4点
xtrabackup 5点
mysqldump 在不同版本里对性能会不会有影响?
60G
35G
16G
Buffer pool 12G
60G 30Min就搞定
35G 60Min
mysqldump 35G库里有一张很大的Log表
解决:
1、在slave上备份
2、不备份Log这个表,减少清洗buffer_pool
innodb_buffer_pool 命中 急剧下降
5.6 以下, 不要在Master上做备份
5.6 做了改善
mysqldump备份都是/sql no cache/ cache指的是query-cache(Query_cache 禁掉GLOBAL MUTEX)
mysqldump 的用户需要什么权限
如果要做备份平台需要注意:
select
lock tables 高版本 super 低版本
show trigger
show view
mysqldump参数
mysql里的视图就是表,所以没有单独的导出视图参数
mysqldump 支持Where条件
db1 每表张导出来1万条记录
mysqldump --single-transcation -w "1=1 limit 10000" db1 > db1_10000.sql
where 1=1 limit 10000
set-gtid-purged=off 不记录gtid,这是从gtid 备份到非gtid 才加,一般不加这个参数,默认是on的
-c —complete-insert 生成完整的insert语句
作业
1. 利用mysqldump做一个备份,能说明这个备份是几点的,备份完成Binlog的位置信息是什么?
2. 利用mysqldump 在线建一个从库
3. mysqldump 工作原理
5.1.50 以前 表丢失
meta data lock 没进来
select * from tb1 xxx
rename table tb1 to tb1_old;
alter table tb1 add xxxx;
DDL不受事务框架保护的
tb1 前面是4个字段, 后面是5个字段
mysql5.5.3 引入Meta data lock ddl也可以备份
备份评估
1. 备份的定位
2. 备份数据量
3. 备份存储
4. 备份的有效性校验
5. 备份的恢复形式
5.6 是支持延迟复制的
备份信息入库
集中备份
对备份监控,你们会关注什么信息呢
xtrabackup 要偿试一下做一下Apply-log
f