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.000004 和 binlog.index
- 这些是MySQL的二进制日志文件及其索引文件,记录了所有的DDL和DML操作,用于数据库的恢复和复制。
- performance_schema 和 sys
- 这是MySQL数据库中的两个系统数据库,前者提供了详细的服务器性能指标,后者则包含了一些元数据和诊断信息。
- b_buffer_pool
- InnoDB缓冲池数据文件,用于缓存表的数据和索引页。
- ibdata1
- InnoDB共享表空间文件,存储了表空间信息、系统表数据、双写缓冲区(doublewrite buffer)、插入缓存(insert buffer)等。
- undo_001 和 undo_002
- InnoDB的回滚段(Undo Space)文件,用于实现事务的回滚操作。
- tarena
- 这是用户自定义的数据库,其对应的.ibd文件存储了该数据库中InnoDB表的数据。
- xtrabackup_logfile:
- 若存在,可能是Xtrabackup在备份过程中使用的临时事务日志文件。