MySQLBackup备份数据库

news/2024/7/7 19:48:09

环境:MySQL 8.0.36

1、安装部署

[root@node5 ~]# wget -c https://edelivery.oracle.com/osdc/softwareDownload?fileName=V1040085-01.zip
[root@node5 ~]# ll
total 22776
-rw-------. 1 root root 1066 Jan 21 14:59 anaconda-ks.cfg
-r–r–r–. 1 root root 23316009 Feb 24 18:50 V1040085-01.zip
[root@node5 ~]# unzip V1040085-01.zip
[root@node5 ~]# yum install mysql-commercial-backup-8.0.36-1.1.el8.x86_64.rpm -y

2 、配置备份管理员

mysql> create user 'mysqlbackup'@'localhost' identified by 'MySQL@123';
Query OK, 0 rows affected (0.09 sec)
mysql> grant all on *.* to 'mysqlbackup'@'localhost';
Query OK, 0 rows affected (0.03 sec)

3、 backup-to-image方式备份数据库

3.1 全量备份

[root@node5 ~]# mkdir /data #创建备份目录
[root@node5 ~]# mysqlbackup --user=mysqlbackup --password=MySQL@123 --socket=/var/lib/mysql/mysql.sock --backup-image=my_full_bak.mbi --backup-dir=/data/backup --show-progress --compress backup-to-image

[root@node5 ~]# ll /data/backup/ #查看备份后的文件
total 4408
-rw-r–r–. 1 root root 255 Feb 24 19:59 backup-my.cnf
drwxr-x—. 2 root root 4096 Feb 24 19:59 datadir
drwxr-x—. 2 root root 4096 Feb 24 19:59 meta
-rw-r-----. 1 root root 4475730 Feb 24 19:59 my_full_bak.mbi
-rw-r-----. 1 root root 19936 Feb 24 19:59 server-all.cnf
-rw-r-----. 1 root root 632 Feb 24 19:59 server-my.cnf

3.2 全量备份还原

1、检验

[root@node5 ~]# mysqlbackup --backup-image=/data/backup/my_full_bak.mbi list-image
#通过list-image查看备份image中的文件内容
[root@node5 ~]# mysqlbackup --backup-image=/data/backup/my_full_bak.mbi validate
#通过validate验证备份image的有效性

[root@node5 ~]# mysql -e 'drop database school' #删库
[root@node5 ~]# mysql -e 'show databases'

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

2、还原image

#这两步必做
[root@node5 ~]# systemctl stop mysqld.service #关闭mysqld服务
[root@node5 ~]# rm -rf /var/lib/mysql/* #清空mysql的datadir目录
[root@node5 ~]# mysqlbackup --datadir=/var/lib/mysql --backup-image=/data/backup/my_full_bak.mbi --backup-dir=/data/backup/tmp --uncompress copy-back-and-apply-log
[root@node5 ~]# chown -R mysql.mysql /var/lib/mysql/* #更改权限
[root@node5 ~]# systemctl start mysqld.service
[root@node5 ~]# mysql -e 'select * from school.stu' #确认恢复

+-----+---------+--------+------+------------------+
| Sno | Sname   | Ssex   | Sage | Sdept            |
+-----+---------+--------+------+------------------+
|   1 | Alice   | Female |   20 | Mathematics      |
|   2 | Bob     | Male   |   22 | Computer Science |
|   3 | Charlie | Male   |   21 | Engineering      |
|   4 | David   | Female |   19 | Literature       |
+-----+---------+--------+------+------------------+

3.2 增量备份

1、第一次增量备份
mysql> INSERT INTO stu (Sno, Sname, Ssex, Sage, Sdept) VALUES (5, 'Emma', 'Female', 20, 'Mathematics'),(6, 'Tom', 'Male', 22, 'Computer Science');

[root@node5 ~]# mysqlbackup --user=mysqlbackup --password=MySQL@123 --socket=/var/lib/mysql/mysql.sock --compress --incremental --incremental-base=dir:/data/backup --backup-dir=/data/backup/incr1 --backup-image=my_inc1_bak.mbi backup-to-image
[root@node5 ~]# ll /data/backup/incr1/
total 1792
-rw-r–r–. 1 root root 255 Feb 24 20:22 backup-my.cnf
drwxr-x—. 2 root root 4096 Feb 24 20:22 datadir
drwxr-x—. 2 root root 4096 Feb 24 20:22 meta
-rw-r-----. 1 root root 1796619 Feb 24 20:22 my_inc1_bak.mbi
-rw-r-----. 1 root root 19936 Feb 24 20:22 server-all.cnf
-rw-r-----. 1 root root 505 Feb 24 20:22 server-my.cnf

2、第二次增量备份
mysql> INSERT INTO stu (Sno, Sname, Ssex, Sage, Sdept) VALUES (7, 'Lily', 'Female', 21, 'Engineering'),(8, 'Jack', 'Male', 19, 'Literature');

[root@node5 ~]# mysqlbackup --user=mysqlbackup --password=MySQL@123 --socket=/var/lib/mysql/mysql.sock --compress --incremental --incremental-base=history:last_backup --backup-dir=/data/backup/incr2 --backup-image=my_inc_bak.mbi backup-to-image
#–incremental-base 可以写成history:last_backup不用写上次备份的dir,两个方法都可以

[root@node5 ~]# ll /data/backup/incr2/
total 1700
-rw-r–r–. 1 root root 255 Feb 24 20:28 backup-my.cnf
drwxr-x—. 2 root root 4096 Feb 24 20:28 datadir
drwxr-x—. 2 root root 4096 Feb 24 20:28 meta
-rw-r-----. 1 root root 1696167 Feb 24 20:28 my_inc_bak.mbi
-rw-r-----. 1 root root 19936 Feb 24 20:28 server-all.cnf
-rw-r-----. 1 root root 632 Feb 24 20:28 server-my.cnf

3.3 增量备份还原

[root@node5 ~]# mysql -e 'drop database school' #删库
[root@node5 ~]# mysql -e 'show databases'

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

[root@node5 ~]# systemctl stop mysqld.service #关闭mysqld服务
[root@node5 ~]# rm -rf /var/lib/mysql/* #清空mysql的datadir目录

1、先还原完全备份
[root@node5 ~]# mysqlbackup --datadir=/var/lib/mysql --backup-image=/data/backup/my_full_bak.mbi --backup-dir=/data/backup/tmp1 --uncompress copy-back-and-apply-log
#注意backup-dir刚才是/data/backup/tmp,这里得换一个

2、第一次增量备份还原
[root@node5 ~]# mysqlbackup --backup-image=/data/backup/incr1/my_inc1_bak.mbi --backup-dir=/data/backup/incr1/tmp2 --datadir=/var/lib/mysql/ --incremental copy-back-and-apply-log

3、第二次增量备份还原
[root@node5 ~]# mysqlbackup --backup-image=/data/backup/incr2/my_inc_bak.mbi --backup-dir=/data/backup/incr2/tmp3 --datadir=/var/lib/mysql/ --incremental copy-back-and-apply-log

[root@node5 ~]# chown -R mysql.mysql /var/lib/mysql/*
[root@node5 ~]# systemctl start mysqld.service
[root@node5 ~]# mysql -e 'select * from school.stu'

+-----+---------+--------+------+------------------+
| Sno | Sname   | Ssex   | Sage | Sdept            |
+-----+---------+--------+------+------------------+
|   1 | Alice   | Female |   20 | Mathematics      |
|   2 | Bob     | Male   |   22 | Computer Science |
|   3 | Charlie | Male   |   21 | Engineering      |
|   4 | David   | Female |   19 | Literature       |
|   5 | Emma    | Female |   20 | Mathematics      |
|   6 | Tom     | Male   |   22 | Computer Science |
|   7 | Lily    | Female |   21 | Engineering      |
|   8 | Jack    | Male   |   19 | Literature       |
+-----+---------+--------+------+------------------+

4、datafile方式备份数据库

环境:最好恢复初始环境,或只把上次备份的目录删了

4.1 完全备份

[root@node5 ~]# mysqlbackup --user=mysqlbackup --password=MySQL@123 --socket=/var/lib/mysql/mysql.sock --backup-dir=/data/backup --show-progress --compress backup
[root@node5 ~]# ll /data/backup/
total 36
-rw-r–r–. 1 root root 255 Feb 24 20:53 backup-my.cnf
drwxr-x—. 6 root root 4096 Feb 24 20:53 datadir
drwxr-x—. 2 root root 4096 Feb 24 20:53 meta
-rw-r-----. 1 root root 19936 Feb 24 20:53 server-all.cnf
-rw-r-----. 1 root root 632 Feb 24 20:53 server-my.cnf

4.2 完全备份恢复

[root@node5 ~]# mysql -e 'drop database school'
[root@node5 ~]# mysql -e 'show databases'

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

[root@node5 ~]# systemctl restart mysqld.service
[root@node5 ~]# systemctl stop mysqld.service
[root@node5 ~]# rm -rf /var/lib/mysql/*

[root@node5 ~]# mysqlbackup --backup-dir=/data/backup apply-log #备份过程中产生的日志文件
[root@node5 ~]# mysqlbackup --datadir=/var/lib/mysql/ --backup-dir=/data/backup copy-back-and-apply-log #将备份的文件拷贝到datadir下

[root@node5 ~]# chown -R mysql.mysql /var/lib/mysql/*
[root@node5 ~]# systemctl start mysqld.service
[root@node5 ~]# mysql -e 'select * from school.stu'

+-----+---------+--------+------+------------------+
| Sno | Sname   | Ssex   | Sage | Sdept            |
+-----+---------+--------+------+------------------+
|   1 | Alice   | Female |   20 | Mathematics      |
|   2 | Bob     | Male   |   22 | Computer Science |
|   3 | Charlie | Male   |   21 | Engineering      |
|   4 | David   | Female |   19 | Literature       |
+-----+---------+--------+------+------------------+

4.2 增量备份

1、第一次增量备份
mysql> INSERT INTO stu (Sno, Sname, Ssex, Sage, Sdept) VALUES (5, 'Emma', 'Female', 20, 'Mathematics'),(6, 'Tom', 'Male', 22, 'Computer Science');

[root@node5 ~]# mysqlbackup --user=mysqlbackup --password=MySQL@123 --socket=/var/lib/mysql/mysql.sock --compress --incremental --incremental-base=dir:/data/backup --incremental-backup-dir=/data/backup/incr1 backup

[root@node5 ~]# ll /data/backup/incr1/
total 36
-rw-r–r–. 1 root root 255 Feb 24 21:55 backup-my.cnf
drwxr-x—. 6 root root 4096 Feb 24 21:55 datadir
drwxr-x—. 2 root root 4096 Feb 24 21:55 meta
-rw-r-----. 1 root root 19936 Feb 24 21:55 server-all.cnf
-rw-r-----. 1 root root 632 Feb 24 21:55 server-my.cnf

2、第二次增量备份
mysql> INSERT INTO stu (Sno, Sname, Ssex, Sage, Sdept) VALUES (7, 'Lily', 'Female', 21, 'Engineering'),(8, 'Jack', 'Male', 19, 'Literature');

[root@node5 ~]# mysqlbackup --user=mysqlbackup --password=MySQL@123 --socket=/var/lib/mysql/mysql.sock --compress --incremental --incremental-base=history:last_backup --incremental-backup-dir=/data/backup/incr2 backup

[root@node5 ~]# ll /data/backup/incr2/
total 36
-rw-r–r–. 1 root root 255 Feb 24 21:56 backup-my.cnf
drwxr-x—. 6 root root 4096 Feb 24 21:56 datadir
drwxr-x—. 2 root root 4096 Feb 24 21:56 meta
-rw-r-----. 1 root root 19936 Feb 24 21:56 server-all.cnf
-rw-r-----. 1 root root 632 Feb 24 21:56 server-my.cnf

4.3 增量备份还原

[root@node5 ~]# mysql -e 'drop database school' #删库
[root@node5 ~]# mysql -e 'show databases'

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

[root@node5 ~]# systemctl stop mysqld.service #关闭mysqld服务
[root@node5 ~]# rm -rf /var/lib/mysql/* #清空mysql的datadir目录

[root@node5 ~]# mysqlbackup --backup-dir=/data/backup apply-log #备份过程中产生的日志文件
[root@node5 ~]# mysqlbackup --incremental-backup-dir=/data/backup/incr1 --backup-dir=/data/backup/ apply-incremental-backup #增备apply-incremental-backup

[root@node5 ~]# mysqlbackup --incremental-backup-dir=/data/backup/incr2 --backup-dir=/data/backup/ apply-incremental-backup

[root@node5 ~]# mysqlbackup --datadir=/var/lib/mysql --backup-dir=/data/backup/ copy-back-and-apply-log #将几次备份搞得文件拷到datadir

[root@node5 ~]# chown -R mysql.mysql /var/lib/mysql/*
[root@node5 ~]# systemctl start mysqld.service
[root@node5 ~]# mysql -e 'select * from school.stu'

+-----+---------+--------+------+------------------+
| Sno | Sname   | Ssex   | Sage | Sdept            |
+-----+---------+--------+------+------------------+
|   1 | Alice   | Female |   20 | Mathematics      |
|   2 | Bob     | Male   |   22 | Computer Science |
|   3 | Charlie | Male   |   21 | Engineering      |
|   4 | David   | Female |   19 | Literature       |
|   5 | Emma    | Female |   20 | Mathematics      |
|   6 | Tom     | Male   |   22 | Computer Science |
|   7 | Lily    | Female |   21 | Engineering      |
|   8 | Jack    | Male   |   19 | Literature       |
+-----+---------+--------+------+------------------+

http://lihuaxi.xjx100.cn/news/2056300.html

相关文章

【Linux】进程优先级以及Linux内核进程调度队列的简要介绍

进程优先级 基本概念查看系统进程修改进程的优先级Linux2.6内核进程调度队列的简要介绍和进程优先级有关的概念进程切换 基本概念 为什么会存在进程优先级?   进程优先级用于确定在资源竞争的情况下,哪个进程将被操作系统调度为下一个运行的进程。进程…

Java的编程之旅31——多态

1.多态的简介 在Java中,多态是指通过父类的引用调用子类的对象,实现不同类型的对象的方法调用。 Java中的多态通过继承和重写实现。当子类继承父类并重写父类的方法时,可以通过父类的引用调用子类的对象,并且根据运行时实际的类型…

Orange3数据预处理(索引选择器组件)

组件描述 数据行即使在某些或全部原始变量被来自原始变量的计算变量替换时,也保持其身份。 此小部件获取两个数据表(“数据”和“数据子集”),它们可以追溯到同一来源。基于行身份而非实际数据,它会从“数据”中选择所…

老卫带你学---leetcode刷题(191. 位1的个数)

191. 位1的个数 问题 编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。 提示: 请注意,在某些语言&…

周鸿祎免费课演示AI新品,瞬时流量暴增现场增加服务器

2月29日,360创始人周鸿祎首堂AI免费课开讲,吸引千万网友围观。演讲现场周鸿祎演示了两款AI驱动的新产品。在演示测试版360AI搜索时,由于用户体验火爆,瞬时流量暴增44倍,为满足用户和全网用户需求临时增加了服务器。产品…

nginx(三)实现反向代理客户端 IP透传

正常情况下,客户端去访问代理服务器,然后代理服务器再取访问真实服务器,在真实服务器上,只能显示代理服务器的ip地址,而不显示客户端的ip地址,如果想让客户端的ip地址也能在真实服务端看见,这一…

Python中简单正则获取百度新闻页面所有超链接示例

一、示例代码: import re import requestsheaders {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/""85.0.4183.83 Safari/537.36"} resp requests.get(http://news.…

中国汽车电子行业发展现状分析及投资前景预测报告

全版价格:壹捌零零 报告版本:下单后会更新至最新版本 交货时间:1-2天 第一章 汽车电子相关概述 1.1 汽车的相关介绍 1.1.1 汽车的概念 我国国家最新标准《汽车和挂车类型的术语和定义》(GB/T3730.1—2001&…