1.Mysql 数据损坏类型
(1)物理损坏
磁盘损坏:硬件 ,磁道坏,dd,格式化
文件损坏:数据文件损坏,redo损坏
(2)逻辑损坏
Drop Delete Truncate Update
2.运维人员在备份、恢复的职责
设计备份和容灾策略
备份策略:
备份工具选择
备份周期设计
备份监控方法
容灾策略:
备份:用什么备份
架构:高可用,演示从库,灾备库
定期的备份、容灾检查
备份软件 --------> 带库
定期的故障恢复演练
数据损坏时的恢复
数据迁移工作
3.Mysql常用备份工具
(1)逻辑备份方式(备份sql语句)
mysqldump(MDP)
Replication(主从)
Mydumper(自行扩展)
Load data in file(自行扩展)
(2)物理备份方式(表空间文件)
Mysql enterprise Backup (企业)
Percona Xtrabackup(PBK ,XBK)(社区版实现的软件)
4.Mysqldump (MDP)应用 备份sql语句
(1)介绍
逻辑备份工具,备份sql语句。文本形式保存备份,可读性较强。
备份逻辑: 将建库、建表、数据插入语句导出,包存至一个sql文件中。
比较适合于:数据量较小的场景,单表数据行千万级别以内。百G以内的小型数据库.跨版本、跨平台迁移。
可以本地、可以远程备份。
注意: 一般情况下,恢复需要耗费的时间是备份耗费时间的3-5倍。
(2)备份方式
innodb表 快照方式 不锁表
可以采取快照备份 的方式
开启一个独立的事务,获取当前最新的一致性快照
将快照数据,放在临时表中,转换成sql(create database create table insert),保存在SQL文件中
非innodb表 锁表 温备份 可读不可写
需要锁表备份,触发FTWRL,全局锁表。转化成sql(create database create table insert),保存在SQL文件中
5. mysqldump的核心参数
(1)连接参数
Mysqldump -u -p -h -S
(2)备份参数
-A all 全备 是备份全部数据库
恢复:备份出来的数据要想恢复要慎重。因为它是覆盖恢复,如果有表t1,则先删除在创建t1
全备过程:
[root@db01 ~]# mkdir -p /data/backup
[root@db01 ~]# chown -R mysql.mysql /data/*
[root@db01 ~]# mysqldump -uroot -p123456 -S /tmp/mysql.sock -A > /data/backup/full.sql
[root@db01 ~]# vim /data/backup/full.sql
-B 单库或多个库备份
备份单库:
Mysqldump -u root -p -B 库 > /data/baskup/db.sql
备份多库:备份ww 和wyq这2个库
[root@db01 ~]# mysqldump -u root -p -B ww wyq > /data/backup/db.sql
单表或多表备份:
[root@db01 ~]# mysqldump -uroot -p123 world city country >/data/backup/tb.sql
注意:
-A 和 -B 都带有了 create database 和use 语句,直接恢复即可
单表或多表备份方式, 没有 create database 和use 语句,所以要手工进行建库和use,再恢复数据。
如果为了安全:将密码隐藏起来
首先在root下创建隐藏文件
vim .my.cnf
[mysql]
User=root
Password=123456
[mysqldump]
User=root
Password=123456
[root@db01 ~]# mysql --help --verbose | grep my.cnf
(3) 备份高级参数
参数1:--master-data=2
A.等于2 是在备份出来的文件里最前面时打个注释,记录当前备注的binlog日志号,方便我们找发生全备时的gitd号,1直接将change这个命令写入,2是注释写入
B.会自动加GRL锁和解锁(FTWRL ,flush tables with read lock)
C.配合single transaction 可以减少锁表时间?
命令:mysqldump -uroot -p 123 -B wyq --master-data=2 >/data/backup/wyq2.sql
参数2:--single-transation [ˈsɪŋɡl]单一的 快照技