数据的备份
- 借助percona-xtrabackup工具对数据进行备份
工具名称为percona-xtrabackup
可以从官网下载选择对应版本
percona-xtrabackup8.0的版本对应的数据库版本为mysql8.0的版本 请先通过MySQL -V 检查自己数据库的版本
然后通过yum -y install的命令安装此软件即可
使用方法说明:
1.数据库全备份还原
mkdir /backup #首先创建备份目录
innobackupex --user=root --password='password' /backup/full
# 命令解析 innobackupex 是备份命令 需要说明用户和密码 声明路径这种方法为所有数据库全部路径
systemctl stop mysql #模拟数据库出现损坏
rm -rf /var/lib/mysql/* #模拟数据受到损坏和丢失
rm -rf /var/log/mysqld.log #删除日志
innobackupex --apply-log /backup/full/备份文件 #生成回滚数据选择备份还原点
innobackupex --copy-back /backup/full/备份文件 #还原数据
在实际情况中我们很少天天做全备份 所以有一种方法是增量备份
增量备份分为差异备份
增量备份和差异备份是基于全备份的基础上的
区别在于
增量备份会有很多份 恢复的时候需要将数据一一回滚 还原即可
差异备份还原时只需要将全备份和上一次备份节点的备份进行回滚还原即可
下面以增量备份的使用和还原作为说明
innobackupex --user=root --password='password' /backup/full/ #不管增量备份还是差异备份都需要进行一次完整的备份
date 09010102 #手动模拟时间的轮转 更改后时间为2020-09-01-01-02
#对数据库的数据做一些增改如insert 和delete
innobackupex --user=root --password='password' --increatemtal /backup --incretemental-basedir=/backup/full/
#增量备份的备份与完整的备份区别在于需要声明是基于哪个备份点做的增量备份
date 09020102 #手动模拟时间轮转
#对数据库做一些增改的操作
innobackupex --user=root --password='password' --increatemental /backup --incretemental-basedir=/backup/2020-09-01-01-02
#基于上次做的增量备份继续做增量备份
增量备份与差异备份的备份区别
增量备份总是在基于上一个备份继续做备份
差异备份总是在基于最近的完整备份做备份
增量备份的还原
innobackupex --apply-logs --redo-only /backup/full #选择最近的完整备份进行数据回滚
innobackupex --apply-logs --redo-only /backup/full --incremental-dir=/backup/2020-09-01-01-02 #在完整的数据回滚的数据上追加增量备份
innobackupex --apply-logs --redo-only /backup/full --incremental-dir=/backup/2020-09-02-01-02 #继续追加第二个增量备份
innobackupex --copy-back /backup/full/ #增量的备份还原与完整的备份的还原方法相同
增量备份的还原需要一次次追加灾难点前的到完整数据备份之间的所有增量备份 然后还原完整备份即可
差异备份则是只需要追加在在灾难点前的完整数据备份及距离灾难点最近的一次差异备份 然后还原完整备份即可
- 使用二进制文件对数据库进行备份
命令为:
vim /etc/my.cnf #编辑数据库配置文件
log_bin #开启二进制文件 二进制文件只记录数据库的增删改 不记录查询
server_id=1 #定义数据库的id
备份数据
mysqldump -p'password' \ #数据库登录默认当前用户 可以省略-u \为换行符
--all-database --single-tansaction \ 备份所有数据库并翻译成二进制文件
--master_data=2 \ 下面详细说明
--flush_logs \ #刷新日志文件
> /backup/`%data +%y-%d`-all.mql
还原数据库环境
systemctl stop mysql #删除数据库之前需要先停止数据库
rm -rf /var/lib/mysql/* #删除所有数据
rm -rf /var/log/mysqld.log #删除数据库日志
systemctl start mysql #启动数据库
grep 'password' /var/log/mysqld.log #查看数据库初始密码
mysqladmin -uroot -p'Kyzw;u2dq<mh' password 'new-passwd' #修改密码
还原数据库
mysql -p'new-passwd' < /backup/*-all.sql #还原数据
systemctl restart mysqld #重启数据库
通过二进制文件还原数据库
cp -rf /var/lib/mysql/localhost-bin.* /backup/ #将二进制文件复制到/backup里面
mysqlbinlog localhost-bin.000001 localhost-bin.000002 | mysql -p ’new-passwd‘ #通过二进制文件还原