首页 > 数据库 >MySQL增量备份

MySQL增量备份

时间:2024-07-15 19:56:05浏览次数:13  
标签:none add1 -- backup 备份 MySQL 增量 root

增备1

做增量备份前,是需要进行一次完成备份的

1、做数据修改

创建一个add1.t1

t1 包含:id,name

加2条数据

id | name |
+----+------+
| 1  | add1 |
| 2  | add2 |
+----+------+

操作如下:

MySQL root@(none):(none)> show databases;
+--------------------+
| Database           |
+--------------------+
| db711              |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

5 rows in set
Time: 0.022s
MySQL root@(none):(none)> create database add1;
Query OK, 1 row affected
Time: 0.006s

MySQL root@(none):(none)> use add1;
You are now connected to database "add1" as user "root"
Time: 0.000s
MySQL root@(none):add1> create table t1 (id int,name varchar(10));
Query OK, 0 rows affected
Time: 0.024s
MySQL root@(none):add1> desc t1;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int         | YES  |     | <null>  |       |
| name  | varchar(10) | YES  |     | <null>  |       |
+-------+-------------+------+-----+---------+-------+

2 rows in set
Time: 0.017s
MySQL root@(none):add1> insert into t1 values (1,'add1'),(2,'add2');
Query OK, 2 rows affected
Time: 0.026s
MySQL root@(none):add1> select * from t1;
+----+------+
| id | name |
+----+------+
| 1  | add1 |
| 2  | add2 |
+----+------+

2 rows in set
Time: 0.012s

MySQL root@(none):add1> show databases;
+--------------------+
| Database           |
+--------------------+
| add1               |
| db711              |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+


2、开始增量备份

xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/backup/inc1/  --incremental-basedir=/data/backup/base/ -u root -pLixinyi@123 -H localhost -P 3306 --no-server-version-check

注释:

--defaults-file 		默认文件
--backup        		备份
--target-dir    		备份存放的目录,要单独存放 此时为/data/backup/inc1/
						注意此时就不要放在完全备份的文件夹(data/backup/base)中
						如果还放在这里,无法进行区分,会产生冲突
incremental-basedir  	增量备份参照的文件(参照谁进行增量)

显示如下,表示增量备份完成:
请添加图片描述

增备2:

1、进行数据修改,

在上面用到过的表add1.t1,添加数据

id 3, name “增量2”

id 4 , name “增量2”

MySQL root@(none):(none)> use add1;
You are now connected to database "add1" as user "root"
Time: 0.001s
MySQL root@(none):add1> select * from t1;
+----+------+
| id | name |
+----+------+
| 1  | add1 |
| 2  | add2 |
+----+------+

2 rows in set
Time: 0.012s
MySQL root@(none):add1> insert into t1 values (3,'增量2'),(4,'增量2');
Query OK, 2 rows affected
Time: 0.004s
MySQL root@(none):add1> select * from t1;
+----+-------+
| id | name  |
+----+-------+
| 1  | add1  |
| 2  | add2  |
| 3  | 增量2 |
| 4  | 增量2 |
+----+-------+

2、开始增量备份

xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/backup/inc2/  --incremental-basedir=/data/backup/inc1/ -u root  -pLixinyi@123 -H localhost -P 3306 --no-server-version-check

--target-dir=/data/backup/inc2/ 			用了存储第二次的增量备份文件
incremental-basedir=/data/backup/inc1/  	第二次要参照第一次进行备份(增量备份参照上一次)

恢复增量备份
  • 还原的时候,要先准备好完整备份

  • 然后再还原增量备份,这样数据才是完整的

注意最后一次把增量备份恢复到全部不要加 --apply-log-only

应用完整备份:

xtrabackup --defaults-file=/etc/my.cnf --prepare --apply-log-only --target-dir=/data/backup/base/ --no-server-version-check

应用增量1:

xtrabackup --defaults-file=/etc/my.cnf --prepare --apply-log-only --target-dir=/data/backup/base/ --incremental-dir=/data/backup/inc1/  --no-server-version-check

应用增量2:

注意不要偷懒

注意,这是最后一次的增量,就 不要输入–apply-log-only

xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/data/backup/base/ --incremental-dir=/data/backup/inc2 --no-server-version-check

这几步 --defaults-file=““ 选项可以不用加

恢复到数据目录

全库级恢复要先停止数据库并清空数据目录

如果不这样做,当前数据库内有某张表,又还原进同样的表,会产生冲突

 systemctl stop mysqld
 rm -rf /var/lib/mysql/*
 xtrabackup --defaults-file=/etc/my.cnf --copy-back --target-dir=/data/backup/base/
 chown -R mysql.mysql /var/lib/mysql
 systemctl start mysqld
 mycli -uroot -pLxinyi@123

查看数据的完整性:

成功!

[root@localhost ~]# mycli -uroot -pLixinyi@123
Connecting to socket /var/lib/mysql/mysql.sock, owned by user mysql
MySQL
mycli 1.27.2
Home: http://mycli.net
Bug tracker: https://github.com/dbcli/mycli/issues
Thanks to the contributor - Jerome Provensal
MySQL root@(none):(none)> show  databases;
+--------------------+
| Database           |
+--------------------+
| add1               |
| db711              |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

6 rows in set
Time: 0.020s
MySQL root@(none):(none)> use add1;
You are now connected to database "add1" as user "root"
Time: 0.000s
MySQL root@(none):add1> select * from t1;
+----+-------+
| id | name  |
+----+-------+
| 1  | add1  |
| 2  | add2  |
| 3  | 增量2 |
| 4  | 增量2 |
+----+-------+

4 rows in set
Time: 0.029s

标签:none,add1,--,backup,备份,MySQL,增量,root
From: https://blog.csdn.net/l_789rty/article/details/140447366

相关文章

  • MySQL差异备份
    只需准备第一次和最后一次即可1、清理之前的备份内容rm-rf/data/backup/*2、进行完整备份#mkdir-p/data/backup/#xtrabackup--defaults-file=/etc/my.cnf--backup--target-dir=/data/backup/base/-uroot-pLixinyi@123-Hlocalhost-P3306--no-ser......
  • MySQL时间戳转成日期格式
    将时间戳转换为日期格式:--如果时间戳为毫秒级长度为13位,需要先除以1000SELECTid,`task_name`,FROM_UNIXTIME(`task_register_begin_time`/1000,'%Y-%m-%d%H:%i:%s')astask_register_begin_time,FROM_UNIXTIME(`task_register_end_time`/1000,'%Y-%m-%d%H:%i:%s')ast......
  • 基于Java+ Java Swing Mysql 实现的学生宿舍管理系统设计与实现
    一、前言介绍:1.1项目摘要随着高校招生规模的不断扩大,学生宿舍管理面临着越来越多的挑战。传统的学生宿舍管理方式往往依赖于人工记录、纸质档案和口头通知,这种方式不仅效率低下,而且容易出错,给宿舍管理带来了诸多不便。因此,开发一套高效、便捷、准确的学生宿舍管理系统成......
  • 基于Java+Ssm+Mysql实现的Java Web酒店管理项目系统设计与实现
    一、前言介绍:1.1项目摘要随着信息技术的快速发展和互联网的普及,传统酒店行业面临着转型升级的压力。为了提高酒店的经营管理水平,提升客户体验,酒店管理系统应运而生。酒店管理系统通过整合酒店内部资源,实现信息的快速传递和处理,为酒店提供了高效、便捷的管理手段。课题“......
  • Day1_1--通过jdbc驱动程序连接mysql数据库+测试(hamcrest+junit)
    idea项目导入mysql对应版本jar包驱动File->ProjectStructure->Libraries点击加号添加驱动并Apply参考代码importorg.junit.Test;importjava.sql.*;/***@authornanzhi*@date2024/7/159:52*/publicclassk1_jdbc{publicstaticvoidmain(String[]ar......
  • 14 mysql 函数
    在mysql中,函数主要分为内置函数(系统函数)和自定义函数不管是内置函数还是自定义函数,都是使用select函数名(参数列表);字符串函数char_length():判断字符串的字符数length():判断字符串的字节数(字符集有关)SELECTchar_length('你好,中国'),length('你好,中国');--返回结果:51......
  • MySQL PXC集群多个节点同时大量并发update同一行
    如本文标题,MySQLPXC集群多个节点同时大量并发update同一行数据,会怎样?为此,本人做了一个测试,来验证到底会怎样!一、生成测试数据mysql>CREATETABLEtest(->`a`int(11)NOTNULLDEFAULT0,->`b`int(11)DEFAULTNULL,->`c`int(11)DEFAULTNULL,......
  • 为什么MySQL会选择B+树作为索引
    为什么MySQL会选择B+树作为索引在数据库管理系统中,索引是提升查询效率的关键技术之一。MySQL作为广泛使用的关系型数据库管理系统,其核心存储引擎InnoDB选择B+树作为其索引结构,这一选择背后蕴含了深刻的性能和存储效率考量。本文将简要介绍B+树的基本概念,阐述MySQL选择B+树......
  • 来聊一聊MySQL InnoDB的LSN
    前言在MySQL的InnoDB存储引擎中,LSN(日志序列号)其实是一个非常重要的概念。它用来标识数据库某一特点时间点和状态。并在事务管理,崩溃恢复和数据一致性维护中发生重要作用。下面,我们来讲下LSN的实现机制。包括其生成、管理和使用方式。什么是LSNLSN是全局递增的序列号。......
  • mysql备份还原——binlog查看工具之show binlog的使用
    (4.8)mysql备份还原——binlog查看工具之mysqlbinlog及showbinlog的使用关键词:showbinlog,mysqlbinlog查看,二进制文件查看,binlog查看工具,binlog查看方法 0、使用showmasterstatus; 使用它可以直接查看binlog日志信息;总结:指定文件:showbinlogeventsin'b......