当前位置: 代码网 > it编程>数据库>Mysql > MySQLBackup备份数据库的操作过程

MySQLBackup备份数据库的操作过程

2024年05月18日 Mysql 我要评论
环境:mysql 8.0.361、安装部署[root@node5 ~]# wget -c https://edelivery.oracle.com/osdc/softwaredownload?file

环境: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.3增量备份

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.4增量备份还原

[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       |
+-----+---------+--------+------+------------------+

到此这篇关于mysqlbackup备份数据库的文章就介绍到这了,更多相关mysqlbackup备份数据库内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com