怎么做网站图片,专业品牌网站建设,wordpress logo img,做家政公司网站物理备份#xff1a; 直接复制数据库文件#xff0c;适用于大型数据库环境#xff0c;不受存储引擎的限制#xff0c;但不能恢复到不同的MySQL版本。
1.完全备份-----完整备份#xff1a;
每次都将所有数据#xff08;不管自第一次备份以来有没有修改过#xff09; 直接复制数据库文件适用于大型数据库环境不受存储引擎的限制但不能恢复到不同的MySQL版本。
1.完全备份-----完整备份
每次都将所有数据不管自第一次备份以来有没有修改过进行一次完整的复制备份后会清除文件的存档属性方便日后增量备份或者差异备份进行版本比较。
特点占用空间大备份速度慢但恢复时一次恢复到位恢复速度快。
2.增量备份: 每次备份上一次备份到现在产生的新数据
在第一次完整备份之后第二次开始每次都将添加了存档属性的文件进行备份并且在备份之后再把这些存档属性清除。为什么要清除存档属性呢这就是为了下一次备份的时候判断是否有文件变化因为用户在每次备份以后修改这些被清除存档属性的文件存档属性就会自动加上相当于用户告诉系统这些文件有变化你下一次就备份这些文件其他没有存档属性的就不需要备份这就是增量备份的工作机制。
特点因每次仅备份自上一次备份注意是上一次不是第一次以来有变化的文件所 以备份体积小备份速度快但是恢复的时候需要按备份时间顺序逐个备份版本进行恢 复恢复时间长。
3.差异备份:只备份跟完整备份不一样的
在第一次完整备份之后第二次开始每次都将所有文件与第一次完整备份的文件做比较把自第一次完整备份以来所有修改过的文件进行备份且以后每次备份都是和第一次完整备份进行比较注意是第一次不是上一次备份自第一次完整备份以来所有的修改过的文件。因此差异备份在备份完毕之后不需要清除文件的存档属性因为这些文件和下一次备份没有什么关系它仅仅和第一次完整备份的数据进行比较第一次完整备份之后是清除存档属性的。 相当于第一次机器人把地板打扫干净了你踩过就会有脚印机器人就把脚印记录下 来但不打扫下次你又有踩脏的机器人就把你这几次所有踩脏的地方都记录下来始终 不打扫每次都这样。机器人每次记录的内容就相当于差异备份的内容 特点占用空间比增量备份大比完整备份小恢复时仅需要恢复第一个完整版本和最后一次的差异版本恢复速度介于完整备份和增量备份之间。
简单的讲完整备份就是不管三七二十一每次都把指定的备份目录完整的复制一遍不管目录下的文件有没有变化增量备份就是每次将之前第一次、第二次、直到前一次做过备份之后有变化的文件进行备份差异备份就是每次都将第一次完整备份以来有变化的文件进行备份。
热备份
数据库启动同时给客户端提供服务的情况下
冷备份
数据库要关掉或者不能给客户端提供服务 1.安装xtrabackup 官网 www.percona.com 安装xtrabackup
# wget http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
# rpm -ivh percona-release-0.1-4.noarch.rpm
[rootmysql-server yum.repos.d]# vim percona-release.repo
修改如下内容将原来的1改为0 [rootmysql-server yum.repos.d]# yum -y install percona-xtrabackup-24.x86_64
我做实验时 使用的是提前下载好的包
将下载到本地的包 导到服务器上
# rz
解压
#tar xzf xtrabackup.tar.gz -C /opt#cd /opt
# cd xtrabackup/
安装所有rpm包
yum localinstall *下载好以后 如果能在命令行 输入innob直接tab出来 innobackupex 则说明下载安装成功完全备份流程
1.1首先创建一个备份目录
[rootlocalhost ~]# mkdir /root/xtrabackup/full -p1.2备份数据
[rootlocalhost ~]# innobackupex --userroot --passwordQianfeng123 /root/xtrabackup/full/user是登录MySQL的系统用户
password是登录MySQL的系统用户密码 语法innobackupex --userroot --password密码 /存放备份的路径 1.3查看备份数据是否成功
[rootlocalhost ~]# cd xtrabackup/full/
[rootlocalhost full]# ls
2023-10-07_18-47-56完全备份恢复流程
1.4停止数据库
# systemctl stop mysqld 提前将防火墙与selinux关闭
1.5清理环境
# rm -rf /var/lib/mysql/*
1.6重演回滚
# innobackupex --apply-log --redo-only /root/xtrabackup/full/2023-10-07_18-47-56/语法 innobackupex --apply-log --redo-only /存放完全备份数据的目录 恢复之前需要确认配置文件内有数据库目录指定不然xtrabackup不知道恢复到哪里
# cat /etc/my.cnf
[mysqld]
datadir/var/lib/mysql
1.7数据恢复
# innobackupex --copy-back /存放完全备份的地址语法 innobackupex --copy-back /存放完全备份地址 1.8更改权限
数据恢复以后会在/var/lib/mysql 下生成新的文件 这些文件在运行启动MySQL服务时 会用到因此这些文件的属组以及属主都得是MySQL
# chown -R mysql.mysql *1.9启动服务
# systemctl start mysqld增量备份流程
实验代替语言
2.1首先一个数据库里面有 表数据
mysql select * from student;
------------------
| id | name | time |
------------------
| 1 | aaa | 1 |
------------------
1 row in set (0.00 sec)2.2完全备份它
首先创建存放完全备份目录
# mkdir /root/xtrabackup/full/ -p
存放增量备份的目录
# mkdir /root/xtrabackup/zlbf/ -p
完全备份
# innobackupex --userroot --passwordQianfeng123 /root/xtrabackup/full/
2.3到数据库插入新的数据
mysql use school;mysql insert into student values(2,bbb,2);
2.4备份新的数据
# innobackupex --userroot --passwordQianfeng123 --incremental /root/xtrabackup/zlbf/ --incremental-basedir /root/xtrabackup/full/2023-10-07_19-23-32/2.5停止服务清理环境
# systemctl stop mysqld
# rm -rf /var/lib/mysql/*
2.6回滚
首先回滚最先开始备份的完全备份好的数据
# innobackupex --apply-log --redo-only /root/xtrabackup/full/2023-10-07_19-23-32/接着回滚增量备份的数据而增量数据实在完全备份以后新增的数据因此
# innobackupex --apply-log --redo-only /root/xtrabackup/full/2023-10-07_19-23-32/ --incremental-dir /root/xtrabackup/zlbf/2023-10-07_19-31-01/回滚非完全备份的数据 语法 innobackupex --apply-log --redo-only /完全备份的数据路径 --incremental-dir /这次要回滚的备份数据 也就是前面是 回滚完全备份的数据 将后面追加的备份数据加到完全备份数据里 2.7恢复
由于前面回滚的时候将全部的备份数据都回滚到完全备份那里因此恢复的时候只需要恢复完全备份的数据即可
# innobackupex --copy-back /root/xtrabackup/full/2023-10-07_19-23-32/ 2.8设置权限
# chown -R mysql.mysql /var/lib/mysql/*
2.9启动服务即可
# systemctl start mysqld
差量备份
以周一周二 周三为例
3.1先完全备份周一增量备份周二
准备数据库
mysql select * from student;
------------------
| id | name | time |
------------------
| 1 | aaa | 1 |
------------------
1 row in set (0.00 sec)完全备份周一
# innobackupex --userroot --passwordQianfeng123 /root/xtrabackup/full/插入数据周二
mysql select * from student;
------------------
| id | name | time |
------------------
| 1 | aaa | 1 |
| 2 | bbb | 2 |
------------------增量备份周二
# innobackupex --userroot --passwordQianfeng123 --incremental /root/xtrabackup/zlbf/ --incremental-basedir /root/xtrabackup/full/2023-10-07_20-09-51/
3.2添加数据周三然后差异备份
ysql select * from student;
------------------
| id | name | time |
------------------
| 1 | aaa | 1 |
| 2 | bbb | 2 |
| 3 | bbb | 3 |
------------------
3 rows in set (0.01 sec)差异备份差异备份是基于上一次完全备份之后的 因此
# innobackupex --userroot --passwordQianfeng123 --incremental /root/xtrabackup/xybf/ --incremental-basedir /root/xtrabackup/full/2023-10-07_20-09-51/删除数据库school
mysql drop database school;
Query OK, 1 row affected (0.01 sec)mysql show databases;
--------------------
| Database |
--------------------
| information_schema |
| mysql |
| performance_schema |
| sys |
--------------------
4 rows in set (0.00 sec)3.3停止服务清理环境
# systemctl stop mysqld
# cd /var/lib/mysql
# rm -rf *3.4回滚
回滚周一
# innobackupex --apply-log --redo-onpy /root/xtrabackup/full/2023-10-07_20-09-51/回滚周三将其回滚到周一中因为周三是差异备份他是基于上一次完全备份以后的因此周三 含有周二 周三的内容
# innobackupex --apply-log --redo-onpy /root/xtrabackup/full/2023-10-07_20-09-51/ --incremental-dir /root/xtrabackup/xybf/2023-10-07_20-21-20/3.5恢复
由于数据都回滚到周一的完全备份当中因此只需要恢复周一内容即可
# innobackupex --copy-back root/xtrabackup/full/2023-10-07_20-09-51/
3.6设置权限
# chown -R mysql.mysql /var/lib/mysql/*
3.7启动服务
# systemctl start mysqld