数据库---------完全备份和增量备份的数据恢复,以及断点恢复

目录

一、在数据库表中,分三次录入学生考试成绩

1.1先创建库,创建表,完成三次数据的录入

1.2首次录入成绩后,做该表的完全备份

1.3第二次插入后 做增量备份

1.4第三次插入后 做增量备份

二、模拟数据丢失,并使用增量备份分别基于位置和时间点恢复一班所有学生成绩与二班陈铭与付杰的成绩

2.1用完全备份恢复,获取一班的人的成绩

2.2陈铭的成绩恢复

方法一:

方法二:

2.3付杰的成绩恢复

三、数据库上云迁移的方案?

1.1 方案一:使用脱机冷备份

1.2 方案二:热迁移

四、脚本增量备份

五、温故而知新


某学校进行期中考试要求录入各班考试成绩

为保证数据的可靠性录入学生成绩需要做数据库备份

为了测试备份数据是否可用,模拟数据丢失故障,进行数据还原需求描述

需求描述:

在数据库表中,分三次录入学生考试成绩

首次录入成绩后,做该表的完全备份,后两次成绩的录入之后,分别作增量备份

模拟数据丢失,并使用增量备份分别基于位置和时间点恢复一班所有学生成绩与二班陈铭与付杰的成绩

一、在数据库表中,分三次录入学生考试成绩

1.1先创建库,创建表,完成三次数据的录入

create table class(name varchar(10) unique key,class varchar(4),id int primary key,chinese int,math int,English int,sci int);

insert into class values('张三','一班',20170822,110,105,92,235);
insert into class values('李四','一班',20170820,95,115,110,260);
insert into class values('王五','一班',20170818,95,103,108,270);
insert into class values('赵六','一班',20170816,100,109,112,265);

1.2首次录入成绩后,做该表的完全备份

cd /opt
mkdir backup
mysqldump -uroot -p123123 nanjing class > /opt/backup/nanjing_class.sql
ls /opt/backup/
nanjing_class.sql

这是MySQL自带的备份和恢复工具支持逻辑热备份通过SQL语句的形式进行保存

[root@localhost opt]#cat /opt/backup/nanjing_class.sql
-- MySQL dump 10.13  Distrib 5.7.17, for Linux (x86_64)
--
-- Host: localhost    Database: nanjing
-- ------------------------------------------------------
-- Server version	5.7.17

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `class`
--

DROP TABLE IF EXISTS `class`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `class` (
  `name` varchar(10) DEFAULT NULL,
  `class` varchar(4) DEFAULT NULL,
  `id` int(11) NOT NULL,
  `chinese` int(11) DEFAULT NULL,
  `math` int(11) DEFAULT NULL,
  `English` int(11) DEFAULT NULL,
  `sci` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `class`
--

LOCK TABLES `class` WRITE;
/*!40000 ALTER TABLE `class` DISABLE KEYS */;
INSERT INTO `class` VALUES ('赵六','一班',20170816,100,109,112,265),('王五','一班',20170818,95,103,108,270),('李四','一班',20170820,95,115,110,260),('张三','一班',20170822,110,105,92,235);
/*!40000 ALTER TABLE `class` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2024-03-30 23:52:25

1.3第二次插入后 做增量备份

insert into class values('李宁','二班',20170824,92,98,105,235);
insert into class values('陈铭','二班',20170826,111,107,96,204);

开启二进制日志

log-error=/usr/local/mysql/data/mysql_error.log
general_log=ON
general_log_file=/usr/local/mysql/data/mysql_general.log
log-bin=mysql-bin
slow_query_log=ON
slow_query_log_file=/usr/local/mysql/data/mysql_slow_query.log
long_query_time=5
binlog_format = MIXED

mysqladmin -uroot -p123123 flush-logs
mv mysql-bin.000001 /opt/backup/mysql-bin.000001.$(date +%F_%T)
[root@localhost /opt/backup]#mysqlbinlog --no-defaults --base64-output=decode-rows -v 指定二进制日志备份文件

为什么空的?是由于没有在插入数据前,开启二进制日志,所以切记切记,一定要在开启二进制日志后,才可以插入数据,不然二进制日志识别不到哦

开启二进制日志后,先把之前错误的数据删除,然后我们在重复新插入数据

查看二进制日志

[root@localhost data]#mysqlbinlog --no-defaults --base64-output=decode-rows -v /usr/local/mysql/data/mysql-bin.000002 
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#240331 10:57:36 server id 1  end_log_pos 123 CRC32 0x68d67970 	Start: binlog v 4, server v 5.7.17-log created 240331 10:57:36
# Warning: this binlog is either in use or was not closed properly.
# at 123
#240331 10:57:36 server id 1  end_log_pos 154 CRC32 0x53f83afb 	Previous-GTIDs
# [empty]
# at 154
#240331 11:35:29 server id 1  end_log_pos 219 CRC32 0x8e1dc01f 	Anonymous_GTID	last_committed=0	sequence_number=1
SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
# at 219
#240331 11:35:29 server id 1  end_log_pos 304 CRC32 0xffd43c1e 	Query	thread_id=4	exec_time=0	error_code=0
SET TIMESTAMP=1711856129/*!*/;
SET @@session.pseudo_thread_id=4/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=1437073414/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8 *//*!*/;
SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=33/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
BEGIN
/*!*/;
# at 304
#240331 11:35:29 server id 1  end_log_pos 421 CRC32 0x31a6b5eb 	Query	thread_id=4	exec_time=0	error_code=0
use `nanjing`/*!*/;
SET TIMESTAMP=1711856129/*!*/;
delete from class where name='李宁'
/*!*/;
# at 421
#240331 11:35:29 server id 1  end_log_pos 452 CRC32 0x57775191 	Xid = 8
COMMIT/*!*/;
# at 452
#240331 11:37:44 server id 1  end_log_pos 517 CRC32 0xb2bce275 	Anonymous_GTID	last_committed=1	sequence_number=2
SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
# at 517
#240331 11:37:44 server id 1  end_log_pos 602 CRC32 0x826c35bf 	Query	thread_id=4	exec_time=0	error_code=0
SET TIMESTAMP=1711856264/*!*/;
BEGIN
/*!*/;
# at 602
#240331 11:37:44 server id 1  end_log_pos 719 CRC32 0x4d30d3d9 	Query	thread_id=4	exec_time=0	error_code=0
SET TIMESTAMP=1711856264/*!*/;
delete from class where name='李宁'
/*!*/;
# at 719
#240331 11:37:44 server id 1  end_log_pos 805 CRC32 0x0effbaa6 	Query	thread_id=4	exec_time=0	error_code=0
SET TIMESTAMP=1711856264/*!*/;
COMMIT
/*!*/;
# at 805
#240331 11:38:09 server id 1  end_log_pos 870 CRC32 0x531b5239 	Anonymous_GTID	last_committed=2	sequence_number=3
SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
# at 870
#240331 11:38:09 server id 1  end_log_pos 955 CRC32 0x7e377af7 	Query	thread_id=4	exec_time=0	error_code=0
SET TIMESTAMP=1711856289/*!*/;
BEGIN
/*!*/;
# at 955
#240331 11:38:09 server id 1  end_log_pos 1072 CRC32 0x7f128ff4 	Query	thread_id=4	exec_time=0 error_code=0
SET TIMESTAMP=1711856289/*!*/;
delete from class where name='陈铭'
/*!*/;
# at 1072
#240331 11:38:09 server id 1  end_log_pos 1103 CRC32 0xe6e93731 	Xid = 10
COMMIT/*!*/;
# at 1103
#240331 11:38:34 server id 1  end_log_pos 1168 CRC32 0xd340a8d1 	Anonymous_GTID	last_committed=3    sequence_number=4
SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
# at 1168
#240331 11:38:34 server id 1  end_log_pos 1253 CRC32 0xb2d9ce6b 	Query	thread_id=4	exec_time=0 error_code=0
SET TIMESTAMP=1711856314/*!*/;
BEGIN
/*!*/;
# at 1253
#240331 11:38:34 server id 1  end_log_pos 1399 CRC32 0x62bc5441 	Query	thread_id=4	exec_time=0 error_code=0
SET TIMESTAMP=1711856314/*!*/;
insert into class values('李宁','二班',20170824,92,98,105,235)
/*!*/;
# at 1399
#240331 11:38:34 server id 1  end_log_pos 1430 CRC32 0xd85c6c10 	Xid = 12
COMMIT/*!*/;
# at 1430
#240331 11:38:39 server id 1  end_log_pos 1495 CRC32 0x0674a180 	Anonymous_GTID	last_committed=4    sequence_number=5
SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
# at 1495
#240331 11:38:39 server id 1  end_log_pos 1580 CRC32 0xed5f16ee 	Query	thread_id=4	exec_time=0 error_code=0
SET TIMESTAMP=1711856319/*!*/;
BEGIN
/*!*/;
# at 1580
#240331 11:38:39 server id 1  end_log_pos 1727 CRC32 0xd5dc66ea 	Query	thread_id=4	exec_time=0 error_code=0
SET TIMESTAMP=1711856319/*!*/;
insert into class values('陈铭','二班',20170826,111,107,96,204)
/*!*/;
# at 1727
#240331 11:38:39 server id 1  end_log_pos 1758 CRC32 0xd4119983 	Xid = 13
COMMIT/*!*/;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

接下来开始做增量备份:

[root@localhost backup]#mysqlbinlog --no-defaults --base64-output=decode-rows -v /opt/backup/mysql-bin.000002.2024-03-31_11:58:58

[root@localhost backup]#mysqlbinlog --no-defaults --base64-output=decode-rows -v /opt/backup/mysql-bin.000002.2024-03-31_11:58:58
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#240331 10:57:36 server id 1  end_log_pos 123 CRC32 0x68d67970 	Start: binlog v 4, server v 5.7.17-log created 240331 10:57:36
# at 123
#240331 10:57:36 server id 1  end_log_pos 154 CRC32 0x53f83afb 	Previous-GTIDs
# [empty]
# at 154
#240331 11:35:29 server id 1  end_log_pos 219 CRC32 0x8e1dc01f 	Anonymous_GTID	last_committed=0	sequence_number=1
SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
# at 219
#240331 11:35:29 server id 1  end_log_pos 304 CRC32 0xffd43c1e 	Query	thread_id=4	exec_time=0	error_code=0
SET TIMESTAMP=1711856129/*!*/;
SET @@session.pseudo_thread_id=4/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=1437073414/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8 *//*!*/;
SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=33/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
BEGIN
/*!*/;
# at 304
#240331 11:35:29 server id 1  end_log_pos 421 CRC32 0x31a6b5eb 	Query	thread_id=4	exec_time=0	error_code=0
use `nanjing`/*!*/;
SET TIMESTAMP=1711856129/*!*/;
delete from class where name='李宁'
/*!*/;
# at 421
#240331 11:35:29 server id 1  end_log_pos 452 CRC32 0x57775191 	Xid = 8
COMMIT/*!*/;
# at 452
#240331 11:37:44 server id 1  end_log_pos 517 CRC32 0xb2bce275 	Anonymous_GTID	last_committed=1	sequence_number=2
SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
# at 517
#240331 11:37:44 server id 1  end_log_pos 602 CRC32 0x826c35bf 	Query	thread_id=4	exec_time=0	error_code=0
SET TIMESTAMP=1711856264/*!*/;
BEGIN
/*!*/;
# at 602
#240331 11:37:44 server id 1  end_log_pos 719 CRC32 0x4d30d3d9 	Query	thread_id=4	exec_time=0	error_code=0
SET TIMESTAMP=1711856264/*!*/;
delete from class where name='李宁'
/*!*/;
# at 719
#240331 11:37:44 server id 1  end_log_pos 805 CRC32 0x0effbaa6 	Query	thread_id=4	exec_time=0	error_code=0
SET TIMESTAMP=1711856264/*!*/;
COMMIT
/*!*/;
# at 805
#240331 11:38:09 server id 1  end_log_pos 870 CRC32 0x531b5239 	Anonymous_GTID	last_committed=2	sequence_number=3
SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
# at 870
#240331 11:38:09 server id 1  end_log_pos 955 CRC32 0x7e377af7 	Query	thread_id=4	exec_time=0	error_code=0
SET TIMESTAMP=1711856289/*!*/;
BEGIN
/*!*/;
# at 955
#240331 11:38:09 server id 1  end_log_pos 1072 CRC32 0x7f128ff4 	Query	thread_id=4	exec_time=0 error_code=0
SET TIMESTAMP=1711856289/*!*/;
delete from class where name='陈铭'
/*!*/;
# at 1072
#240331 11:38:09 server id 1  end_log_pos 1103 CRC32 0xe6e93731 	Xid = 10
COMMIT/*!*/;
# at 1103
#240331 11:38:34 server id 1  end_log_pos 1168 CRC32 0xd340a8d1 	Anonymous_GTID	last_committed=3    sequence_number=4
SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
# at 1168
#240331 11:38:34 server id 1  end_log_pos 1253 CRC32 0xb2d9ce6b 	Query	thread_id=4	exec_time=0 error_code=0
SET TIMESTAMP=1711856314/*!*/;
BEGIN
/*!*/;
# at 1253
#240331 11:38:34 server id 1  end_log_pos 1399 CRC32 0x62bc5441 	Query	thread_id=4	exec_time=0 error_code=0
SET TIMESTAMP=1711856314/*!*/;
insert into class values('李宁','二班',20170824,92,98,105,235)
/*!*/;
# at 1399
#240331 11:38:34 server id 1  end_log_pos 1430 CRC32 0xd85c6c10 	Xid = 12
COMMIT/*!*/;
# at 1430
#240331 11:38:39 server id 1  end_log_pos 1495 CRC32 0x0674a180 	Anonymous_GTID	last_committed=4    sequence_number=5
SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
# at 1495
#240331 11:38:39 server id 1  end_log_pos 1580 CRC32 0xed5f16ee 	Query	thread_id=4	exec_time=0 error_code=0
SET TIMESTAMP=1711856319/*!*/;
BEGIN
/*!*/;
# at 1580
#240331 11:38:39 server id 1  end_log_pos 1727 CRC32 0xd5dc66ea 	Query	thread_id=4	exec_time=0 error_code=0
SET TIMESTAMP=1711856319/*!*/;
insert into class values('陈铭','二班',20170826,111,107,96,204)
/*!*/;
# at 1727
#240331 11:38:39 server id 1  end_log_pos 1758 CRC32 0xd4119983 	Xid = 13
COMMIT/*!*/;
# at 1758
#240331 11:58:28 server id 1  end_log_pos 1805 CRC32 0xb246b44f 	Rotate to mysql-bin.000003  pos: 4
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
[root@localhost backup]#

1.4第三次插入后 做增量备份

insert into class values('付杰','二班',20170828,115,118,116,268);
insert into class values('郭尚','二班',20170830,111,99,80,259);

二、模拟数据丢失,并使用增量备份分别基于位置和时间点恢复一班所有学生成绩与二班陈铭与付杰的成绩

模拟整个数据全部丢失,然后分析需要恢复一班的成绩那么就是将完全备份进行恢复,需要恢复陈铭和付杰的成绩,那么就是分别对第2和第3次的增量数据做断点恢复

2.1用完全备份恢复,获取一班的人的成绩

数据恢复:

mysql -uroot -p123123 nanjing < /opt/backup/nanjing_class.sql

注意路径哦

2.2陈铭的成绩恢复

mysqlbinlog --no-defaults --base64-output=decode-rows -v /opt/backup/mysql-bin.000002.2024-03-31_11:58:58

查看断点信息

方法一:

mysqlbinlog --no-defaults --start-position='1580' /opt/backup/mysql-bin.000002.2024-03-31_11:58:58|mysql -uroot -p123123

方法二:

mysqlbinlog --no-defaults --start-position='1580' --stop-position='1758' /opt/backup/mysql-bin.000002.2024-03-31_11:58:58|mysql -uroot -p123123

2.3付杰的成绩恢复

mysqlbinlog --no-defaults --base64-output=decode-rows -v /opt/backup/mysql-bin.000003.2024-03-31_12:13:22

数据恢复

mysqlbinlog --no-defaults --start-datetime='2024-03-31 12:07:14' --stop-datetime='2024-03-31 12:07:58' /opt/backup/mysql-bin.000003.2024-03-31_12:13:22|mysql -uroot -p123123

三、数据库上云迁移的方案?

1.1 方案一:使用脱机冷备份

冷迁移----物理冷备
首先需要关闭数据库服务;
然后用tar对数据库进行打包
再将tar包传给另一台主机
然后将其解压再恢复

1.2 方案二:热迁移

热迁移---阿里云自带的热迁移工具DTS(数据传输服务)

四、脚本增量备份

#!/bin/bash
##增量备份脚本
DIRLOGS=/var/log/mysql
LOGS_HOME=/usr/local/mysql/data
TODAY=$(data +%F)
YESTERDAY=$(date -d '-1 day' +%F)
USER=root
PASSWORD=abc123
 
#先判断收集备份文件的目录是否存在,不存在则创建目录
[ -d $DIRLOGS ]||mkdir -p $DIRLOGS
 
##备份二进制日志的索引文件到指定目录并加入时间标记
\cp  $LOGS_HOME/mysql_bin.index $DIRLOGS/mysql_bin.index.$TODAY
 
#先判断昨天的二进制日志的索引文件是否存在,存在则作为过滤条件过滤出今天需要备份的二进制日志文件名称
if [ -f $DIRLOGS/mysql_bin.index.$YESTERDAY ];then
    BINGLOG=$(cat $DIRLOGS/mysql_bin.index.$TODAY|grep -v $(cat $DIRLOGS/mysql_bin.index.$YESTERDAY)|awk -F/ '{print $2}')
  else
    BINGLOG=$(cat $DIRLOGS/mysql_bin.index.$TODAY|awk -F/ '{print $2}')
fi
 
##刷新生成新的二进制日志文件,便于收集最新的二进制日志
mysqladmin -u"$USER" -p"$PASSWORD" flush-logs &>/dev/null
 
##使用for循环,对所有的新产生的binlog文件进行备份
for i in $BINGLOG
do
mv $LOGS_HOME/$i  $DIRLOGS/$i.$TODAY
done

五、温故而知新

备份方法
物理备份:直接对数据库的物理文件(数据文件、日志文件等)进行备份
逻辑备份:对数据库的库和表对象以SQL语言的形式导出进行备份
 
备份策略
完全备份:每次备份都备份完整的库或者表数据
差异备份:只备份上一次完全备份后的更新数据
增量备份:每次备份只备份上一次完全备份或增量备份后的更新数据
 
 
数据库上云迁移     冷迁移     物理冷备      先关闭数据库,再打包备份+恢复
                   热迁移     阿里云 DTS
 
完全备份
物理冷备:先关闭数据库,使用tar命令打包备份数据库的数据目录和文件  mysql/data/
 
mysqldump逻辑热备
mysqldump -uXXX -pXXX  --databases 库1 [库2 ....] > XXX.sql       备份一个或多个库及库中所有的表数据
mysqldump -uXXX -pXXX  --all-databases > XXX.sql                  备份所有的库
mysqldump -uXXX -pXXX  库名 > XXX.sql                             备份指定库中的所有的表数据,不包含库对象
mysqldump -uXXX -pXXX  库名 表1 [表2 ....] > XXX.sql              备份指定库中的一个或多个表数据,不包含库对象
 
xtrabackup物理热备
 
 
完全恢复
先登录到数据库,再执行 source XXX.sql (如果sql文件是只备份了表数据的文件,需要先创建库并 use 切换库后再执行)
 
mysql -uXXX -pXXX < XXX.sql         cat XXX.sql | mysql -uXXX -pXXX                          恢复库
mysql -uXXX -pXXX 库名 < XXX.sql    cat XXX.sql | mysql -uXXX -pXXX 库名                     恢复表
 
 
增量备份
通过刷新二进制日志间接实现增量备份
mysqladmin -uXXX -pXXX flush-logs
 
查看二进制日志内容
mysqlbinlog --no-defaults --base64-output=decode-rows -v <BINLOG>
 
使用二进制日志增量恢复
mysqlbinlog --no-defaults <BINLOG> | mysql -uXXX -pXXX
 
断点恢复
基于位置点恢复
mysqlbinlog --no-defaults --start-position='开始位置点' --stop-position='结束位置点'  <BINLOG> | mysql -uXXX -pXXX
 
基于时间点恢复
mysqlbinlog --no-defaults --start-datetime='YYYY-mm-dd HH:MM:SS' --stop-position='YYYY-mm-dd HH:MM:SS'  <BINLOG> | mysql -uXXX -pXXX
 
如果需要恢复到某条sql语句之前的所有数据,就stop在这个语句的位置点或时间点之前
如果需要恢复某条sql语句及其之后的所有数据,就从这个语句的位置点或时间点开始start

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/506792.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Ubuntu】用 VMware 安装 macOS

本教程使用 Ubuntu 20.04.6 LTS&#xff0c;VMware Workstation Pro 17.5.1&#xff0c;macOS Sonoma 14.4。文中所有需要的下载链接均以 Markdown 的形式体现在文字上。 下载 VMware Workstation Pro&#xff0c;目前最新版本是 17.5.1。 使用密钥&#xff0c;进行破解。 VM…

苹果应用上架流程解析

苹果上架要求是苹果公司对于提交应用程序到苹果商店上架的要求和规定。这些要求主要是为了保证用户体验、应用程序的质量和安全性。以下是苹果上架要求的详细介绍&#xff1a;1. 应用程序的内容和功能必须符合苹果公司的规 苹果上架要求是苹果公司对于提交应用程序到苹果商店上…

如何使用免费的ChatGpt3.5

如何使用免费的ChatGpt 最近免费的gpt3.5很多都不怎么行了实在是太给力了尾声 最近免费的gpt3.5很多都不怎么行了 原因是什么呢&#xff1f;因为openai已经取消了免费的5刀赠送&#xff0c;那么这些人手上的免费的sses-key 用完后&#xff0c;就基本上全军覆没了&#xff0c;再…

从零开始学Python数据分析:菜鸟也能成高手(文末送书)

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

分类预测 | Matlab实现CNN-GRU-Mutilhead-Attention卷积神经网络-门控循环单元融合多头注意力机制多特征分类预测

分类预测 | Matlab实现CNN-GRU-Mutilhead-Attention卷积神经网络-门控循环单元融合多头注意力机制多特征分类预测 目录 分类预测 | Matlab实现CNN-GRU-Mutilhead-Attention卷积神经网络-门控循环单元融合多头注意力机制多特征分类预测分类效果基本介绍模型描述程序设计参考资料…

Proteus 12V to 5V buck电路仿真练习及遇到的一些问题汇总

基础电路仿真实验记录贴&#xff01;&#xff01;&#xff01;如有写的不对的地方欢迎交流指正&#xff01;&#xff01;&#xff01; 平台&#xff1a;PC win10 软件&#xff1a;Proteus8.10 仿真目标&#xff1a;buck降压电路&#xff08;PWM控制输出电压&#xff09; 写在…

zabbix通过jmx监控Tongweb7企业版(by lqw)

一.tongweb配置相关启动参数 参考Zabbix 监控 Tomcat 服务 可以在控制台页面&#xff0c;或者在tongweb的安装目录的bin目录下&#xff0c;找到external.vmoptions&#xff0c;进行配置&#xff1a; 配置内容如下&#xff1a; -Dcom.sun.management.jmxremote -Dcom.sun.mana…

邀请媒体采访报道对企业宣传有何意义?

传媒如春雨&#xff0c;润物细无声的&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 邀请媒体采访报道对企业宣传具有多重意义&#xff1a; 提升品牌知名度和曝光度&#xff1a;媒体是信息传播的重要渠道&#xff0c;通过媒体的报道&#xff0c;企业及其活动、产品能够…

Methotrexate ELISA kit(甲氨蝶呤ELISA试剂盒),比色竞争法免疫测定试剂盒

甲氨蝶呤(Methotrexate)是一种治疗癌症和自身免疫性疾病的药物&#xff0c;可以通过抑制叶酸代谢阻止细胞代谢。甲氨蝶呤有两种不同的作用机制。在癌症治疗中&#xff0c;甲氨蝶呤通过阻断叶酸的结合&#xff0c;竞争性地抑制二氢叶酸还原酶(DHFR)。DHFR将二氢叶酸转化为活性四…

干货分享|PyTorch 2.0 GPU开发环境搭建

在搭建PyTorch深度学习开发环境时&#xff0c;Python运行环境安装完毕后&#xff0c;接下来的重点就是安装PyTorch 2.0。由于CPU版本的PyTorch相对GPU版本的PyTorch来说&#xff0c;运行速度较慢&#xff0c;我们推荐安装GPU版本的PyTorch。 1. Nvidia 10/20/30/40系列显卡选择…

java数据结构与算法刷题-----LeetCode127. 单词接龙

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目录 广度优先双分裂蛇 广度优先双分裂蛇 解题思路&#xff1a;时间复…

前端学习<二>CSS基础——15-Sass入门

Sass简介 大家都知道&#xff0c;js 中可以自定义变量&#xff0c;css 仅仅是一个标记语言&#xff0c;不是编程语言&#xff0c;因此不可以自定义变量、不可以引用等等。 面对这些问题&#xff0c;我们现在来引入 Sass&#xff0c;简单的说&#xff0c;他是 css 的升级版&am…

1.10 类、方法、封装、继承、多态、装饰器

一、介绍类 类(class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例 实例化&#xff1a;创建一个类的实例&#xff0c;类的具体对象。 对象&#xff1a;通过类定义的数据结构实例。对象包括两个数据成员&#x…

mysql 本地电脑服务部署

前提&#xff1a; 下载mysql 新建配置文档 在安装mysql目录新建 my.ini [mysqld] # 设置3306端口 port3306#设置mysql的安装目录 basedirC:\Program Files\MySQL\MySQL Server 8.3 #切记此处一定要用双斜杠\\,单斜杠我这里会出错&#xff0c;不过看别人的教程&#xff0c;有…

使用Pilotfish扩展Sui执行能力

Pilotfish第一个多机智能合约执行引擎&#xff0c;使Sui网络的验证节点可以利用多台机器&#xff0c;并在负载增加时自动扩展以执行更多的交易。这一目标实现不会影响可靠性或功能完整性。 Pilotfish可以从内部执行机器的故障中恢复&#xff0c;并支持Sui的全面动态操作。其流…

openstack云计算(一)————openstack安装教程,创建空白虚拟机,虚拟机的环境准备

1、创建空白虚拟机 需要注意的步骤会截图一下&#xff0c;其它的基本都是下一步&#xff0c;默认的即可 ----------------------------------------------------------- 2、在所建的空白虚拟机上安装CentOS 7操作系统 &#xff08;1&#xff09;、在安装CentOS 7的启动界面中…

杨元庆:AI是创新者的赛跑,必须打造自研自创产品

在2024/25财年誓师大会上&#xff0c;联想集团董事长兼CEO杨元庆宣布公司未来十年的新使命——引领人工智能变革。在杨元庆看来&#xff0c;这次誓师大会吹响了联想第五个十年征程集结号&#xff1a;在联想稳健穿越周期、恢复增长&#xff0c;迎来成立40周年的里程碑时刻&#…

【嵌入式智能产品开发实战】(十二)—— 政安晨:通过ARM-Linux掌握基本技能【C语言程序的安装运行】

目录 程序的安装 程序安装的本质 在Linux下制作软件安装包 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: 嵌入式智能产品开发实战 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xf…

机器学习 -- 随机森林DEMO

场景 之前看一些歌手或者演员选取节目的时候&#xff0c;上面不是一个评委&#xff0c;少则三五个&#xff0c;多则几十个&#xff0c;当做重要决定时&#xff0c;大家可能都会考虑吸取多个专家而不只是一个人的意见。机器学习也是一样的&#xff0c;机器学习中分为两种&#…

开源AI引擎:自然语言处理技术在人岗匹配中的应用

一、应用场景介绍 如何从海量的求职者中精准地匹配到合适的候选人&#xff0c;是每个人力资源部门都需要解决的问题。自然语言处理&#xff08;NLP&#xff09;技术的发展为人岗匹配提供了新的解决方案。通过信息抽取和文本分类技术&#xff0c;企业可以更高效地分析职位描述和…