mysql备份

1.完全备份

冷备份 VS 热备份

---

冷备份在mysql服务关闭的情况下进行备份,则热备份反之.

mysql 数据库文件路径

/var/lib/mysql  

若不知路径,可通过mysql环境下:

show variables like "%datadir%";

| datadir                                 | /var/lib/mysql/   

两种冷备份方法

归纳法

cp -r /var/lib/mysql /bakdir/mysql.bak 拷贝数据源文件

压缩法

tar -zcvf /bakdir/mysql.tar.gz ./*  打包压缩数据源文件

# 归纳不会保存之前的权限,压缩可保存

#归纳恢复数据,需要对mysql下所有文件目录: chown -R  mysql:mysql /var/lib/mysql/

热备份

通过mysqldump命令备份数据

//备份一张表
mysqldump -uroot -paaa  tarena salary > /bakdir/tarena_salary.sql
//备份多个表
mysqldump -uroot -paaa  tarena salary user > /bakdir/tarena_salary.sql
//备份库
mysqldump -uroot -paaa  -B tarena > /bakdir/tarena_salary.sql
//备份多个库
mysqldump -uroot -paaa  -B tarena db1 > /bakdir/tarena_salary.sql
//备份全部A
mysqldump -uroot -paaa  -A > /bakdir/tarena_salary.sql

重定向恢复数据

mysql -uroot -paaa < /bakdir/tarena.sql

2.增量备份

补充:

PERCONA Xtrabackup是一款强大的在线热备份工具,备份过程中不锁库表,适合生产环境。支持完全备份与恢复、增量备份与恢复、差异备份与恢复。

本地软件包:percona-xtrabackup-8.0.26-18-Linux-x86_64.glibc2.12-minimal.tar.gz

需要安装的依赖: perl-DBD-MySQL  //Perl-DBD-MySQL是Perl编程语言的一个模块,它是Perl DBI(Database Interface)的一个驱动程序,用于连接和操作MySQL数据库。

解压软件包源码:

tar -xf percona-xtrabackup-8.0.26-18-Linux-x86_64.glibc2.12-minimal.tar.gz

将命令添加到系统环境变量中(/etc/bashrc)

        添加如下:  export PATH=...../percona/bin:$PATH  //....为解压软件源码的目录

刷新环境变量配置:   source /etc/bashrc 

定义:

备份原来的的数据更新所产生的数据,恢复所有数据麻烦,单个备份所占空间小

举例问题:

对周一进行全部备份,周二备份周一新产生的数据,周三备份周二新产生的数据,以此类推,周日备份上一天周六新产生的数据

 增量备份过程:

xtrabackup --host=127.0.0.1 --user=root --password=aaa --backup --target-dir=/fullbak --datadir=/var/lib/mysql
//今天是周一,备份所有的数据库
//target-dir 备份后的目标目录
//datadir 需要被备份的数据库目录

xtrabackup --host=127.0.0.1 --user=root --password=aaa --backup --target-dir=/new2 --incremental-basedir=/fullbak  --datadir=/var/lib/mysql
//今天是周二,备份周一产生的数据
//-incremental-basedir 指明从哪个数据开始备份的起点

xtrabackup --host=127.0.0.1 --user=root --password=aaa --backup --target-dir=/new3 --incremental-basedir=/new2  --datadir=/var/lib/mysql

//以此类推,一直到周日

//生成的目录有: fullbak new2 new3 new4 new5 new6 new7

 恢复过程:

//对备份文件进行预处理,仅应用事务日志到备份数据中,但不进行其他物理文件变更,使得备份数据能够用于进一步的增量备份或其他恢复操作。
xtrabackup --prepare --apply-log-only --target-dir=/fullbak
//将周二的备份合并到fullback备份目录中
xtrabackup --prepare --apply-log-only --target-dir=/fullbak --incremental-dir=/new2

//以下以此类推,合并周二到周日的数据备份
xtrabackup --prepare --apply-log-only --target-dir=/fullbak --incremental-dir=/new7

//缺点:如果恢复所有的数据备份,需要对各个备份文件进行合并

//恢复数据库
xtrabackup --copy-back --target-dir=/fullbak
//修改datadir下权限为mysql
chown -R mysql:mysql /var/lib/mysql

 

3.差异备份

定义: 

备份原来到现在所产生的数据,恢复起来方便,备份数据占空间大

举例问题:

备份七天的数据,每一天的差异备份的备份起点都是周一那天

备份过程:

//周一完全备份
xtrabackup --host=127.0.0.1 --user=root --password=aaa--backup --target-dir=/allbak --datadir=/var/lib/mysql

//周二差异备份,备份周一备份后产生的数据
xtrabackup --host=127.0.0.1 --user=root --password=aaa --backup --target-dir=/dir2 --incremental-basedir=/allbak --datadir=/var/lib/mysql

//周三 差异备份
xtrabackup --host=127.0.0.1 --user=root --password=aaa --backup --target-dir=/dir3 --incremental-basedir=/allbak  --datadir=/var/lib/mysql

//以下以此类推,周日...
xtrabackup --host=127.0.0.1 --user=root --password=aaa --backup --target-dir=/dir7 --incremental-basedir=/allbak  --datadir=/var/lib/mysql

 恢复过程:

//首先预处理
xtrabackup --prepare --apply-log-only --target-dir=/allbak
//只需要合并周一和周日的备份数据就可
xtrabackup --prepare --apply-log-only --target-dir=/allbak --incremental-dir=/dir7

//恢复datadir并授权
xtrabackup --copy-back --target-dir=/allbak
chown -R mysql:mysql /var/lib/mysql

4.binlog日志

定义

mysql服务日志文件,保存除了查询之外的sql命令,可以用数据的备份和恢复,配置mysql主从同步的必要要求

相关操作

show master status; //查看目前使用的哪个日志
reset master;   //重置所有日志,删除所有的日志
flush logs;    //刷新日志,生成新的日志
show binary logs;  查看所有的日志
purge master logs to "mysql1.000001";  //删除该日志之前的所有日志
show binlog events in "mysql1.000001";   //查看该日志的内容

日志内容:

  • Log_name: 日志文件名。
  • Pos: 命令在日志文件中的起始位置。
  • Event_type: 事件类型,例如 Query、Table_map、Write_rows 等。
  • Server_id: 服务器 ID。
  • End_log_pos:命令在文件中的结束位置,以字节为单位。
  • Info : 执行命令信息

数据库文件/var/lib/mysql目录

  • backup-my.cnf
    • mysql配置文件,通常在xtrabackup进行备份时被引用,用于提供备份过程中所需的mysql服务器配置信息
  • mysql.ibd
    • 这是InnoDB存储引擎中某个数据库(在这个案例中是名为'mysql'的系统数据库)中某个表的数据文件。每个InnoDB表都有一个对应的.ibd文件,其中存储了该表的数据和索引。
  • xtrabackup_binlog_info
    • 这个文件由Xtrabackup工具生成,在进行增量备份时保存了二进制日志的相关信息,包括备份结束时的二进制日志文件名和偏移位置,用于后续的增量备份。
  • xtrabackup_checkpoints:
    • Xtrabackup在备份过程中会产生一系列的检查点文件,记录了备份的状态和进度信息,有助于在恢复时定位和应用事务日志。
  • xtrabackup_info
    • 包含了Xtrabackup备份操作的详细信息,例如备份的类型(完整、增量等)、时间戳、备份的数据库列表等。
  • binlog.000004binlog.index
    • 这些是MySQL的二进制日志文件及其索引文件,记录了所有的DDL和DML操作,用于数据库的恢复和复制。
  • performance_schemasys
    • 这是MySQL数据库中的两个系统数据库,前者提供了详细的服务器性能指标,后者则包含了一些元数据和诊断信息。
  • b_buffer_pool
    • InnoDB缓冲池数据文件,用于缓存表的数据和索引页。
  • ibdata1
    • InnoDB共享表空间文件,存储了表空间信息、系统表数据、双写缓冲区(doublewrite buffer)、插入缓存(insert buffer)等。
  • undo_001undo_002
    • InnoDB的回滚段(Undo Space)文件,用于实现事务的回滚操作。
  • tarena
    • 这是用户自定义的数据库,其对应的.ibd文件存储了该数据库中InnoDB表的数据。
  • xtrabackup_logfile:
    • 若存在,可能是Xtrabackup在备份过程中使用的临时事务日志文件。
  • 18
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值