6.逻辑导出导入

1.数据逻辑导出:

注意点:需要指定导出的文件,在my.cnf中新增secure_file_priv=导出到的文件,且此文件所在目录需要mysql用户的rwx权限

select 需要导出的字段 into outfile '导出到的文件' from 表名;

2.数据逻辑导入:

方法1:需要登录到mysql中

load data local infile '需导入文件全路径' into table 需导入的表名;

方法2:要求导入的文件名必须和数据表名称完全一致

mysqlimport 表所在库名  需导入文件全路径

7.物理备份

1.xtrabackup备份介绍

优点:1.备份速度快、可靠2.支持增量备份3.备份过程不会打断正在执行的事务4基于压缩等功能节约磁盘空间和流量5.自动实现备份检验6.还原速度快

缺点:1.只能innodb增量备份myisam只支持全量备份2.innobackupex备份myisam表之前要对全库加READ LOCK,阻塞写操作,若备份从库会影响主从同步,对innodb表备份不会阻塞读写

2.xtrabackup备份原理

MySQL 备份二进制文件 mysql备份导入_增量备份

 redo log日志?

3.获取xtrabackup备份工具

4.xtrabackup全库备份及恢复

核心思路:1.首先对数据库进行全量备份,备份完成后不能立即恢复(数据不完整,缺少备份过程中的数据)2.预备阶段,备份过程中产生的xtrabackup_log数据应用到全量备份集。

1.数据准备以及账号创建:

1.创建数据库创表(innodb与myisam)
create database db3 default charset=utf8;
create table user1(id int,name varchar(20)) engine=innodb default charset=utf8;
create table user2(id int,name varchar(20)) engine=myisam default charset=utf8;
insert into user1 values (3,'张三');
insert into user2 values (5,'李四');

2.专门创建一个mysql备份账号,开通相应权限
grant reload,process,lock tables,replication client on *.* to 'admin'@'localhost' identified by '123';
flush privileges;
说明:reload 与lock tables权限:值了执行flush tables with read lock
      replication client权限:为了获取binary log位置
      process权限:查询当前会话信息,例如show engine

2.开始备份

innobackupex --user=admin  --password=123 /fullback

第一次备份过程中出现以下错误

MySQL 备份二进制文件 mysql备份导入_增量备份_02

 当前mysql.sock文件位于/tmp下,出现以上报错原因可能有两种原因:

原因1.系统中/etc目录下还有my.cnf文件影响了数据库连接

原因2.innobackupex的默认套接字配置在报错目录下

解决方案:

方案1.软连接
mkdir /var/lib/mysql
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock

方案2.命令加入-S参数并指定mysql.sock的路径
innobackupex  -S=/tmp/mysql.sock  --user=admin  --password=123 /fullback

3.预备阶段,把备份这段时间内产生的日志整合到全量备份中

innobackupex --user=admin  --password=123  --apply-log  /fullback/2022-09-11_00-49-06/

--apply-log 表示整合备份过程中的预备阶段的产生的日志

4.模拟数据库故障

rm -rf /mysql_3306/data/*
pkill mysqld

5.恢复数据库中的数据

innobackupex --copy-back /fullback/2022-09-11_00-49-06/

第一次恢复时报错

MySQL 备份二进制文件 mysql备份导入_数据_03

出现原因:innobackupex工具无法找到mysql中的数据目录

解决方案:把mysql.cnf配置文件传递给innobackupex,让其自动识别这个文件的datadir

innobackupex  --defaults-file=/mysql_3306/my.cnf  --copy-back /fullback/2022-09-11_00-49-06/

6.恢复完后,修改/mysql_3306/data目录下文件权限,否则无法启动

chown -R mysql.mysql /mysql_3306/data/*

5.xtrabackup增量备份及恢复

1.原理

MySQL 备份二进制文件 mysql备份导入_mysql_04

MySQL 备份二进制文件 mysql备份导入_数据_05

2.备份模拟

前两步:参考全量备份前两步

第三步:整合全量备份时产生的日志进行整合

innobackupex --user=admin  --password=123  --apply-log  --redo-only  /fullback/全量备份文件夹名称

--apply-log 表示整合备份过程中的预备阶段的产生的日志
新增--redo-only
--redo-only  表示只应用已提交的事务,不回滚未提交的事务(事务:开启后成功提交会写入硬盘,失败了会回滚)
特别注意:如果已经回滚未提交事务,无法应用增量备份


如果未加入此选项:增量备份时,会产生数据不一致(未提交的事务(有可能未失败)默认回滚,增量备份时事务成功了此事务结果就不一致了)

第四步:做增量备份

innobackupex --user=admin --password=123 --incremental 增量备份目录 --incremental-basedir=此增量基于的全量备份目录

第五步:整合增量的数据以及日志文件到全量备份中

innobackupex --user=admin --password=123 --apply-log  全量备份目录 --incremental-dir=增量备份目录

后续步骤参考全量备份4-6步