当前位置: 首页 > news >正文

mysql-备份(二)

前章介绍了MySQL的内部数据结构b+tree,这章讲述mysql的备份

1:环境
ubuntu22.04 LST mysql5.7.42 or win10 mysql5.7.44 (这里图简单直接windows部署)
download:https://downloads.mysql.com/archives/community/

2:install
1> unzip mysql-5.7.44-winx64.zip
eg:D:\soft_install\mysql57\mysql-5.7.44-winx64
2>cd D:\soft_install\mysql57\mysql-5.7.44-winx64\bin
create my.ini
my.ini context

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
# 设置3306端口
port = 3306 
# 设置mysql的安装目录
basedir=D:/soft_install\mysql57\mysql-5.7.44-winx64
# 设置mysql数据库的数据的存放目录
datadir=D:/soft_install\mysql57\mysql_basedir\data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为utf8mb4
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODBlog-bin=mysql-bin
#binlog_format 为 binlog 的记录模式,有以下三种
#STATEMENT:每一条会修改数据的 SQL 都会记录到 master 的 binlog 中,slave 在复制的时候,会执行和原来 master 端相同的 SQL。该模式可以减少 binlog 日志量,但是对某些特定的函数进行复制时,slave 端不能正确复制
#ROW:binlog 日志中会记录成每一行数据修改的形式,然后在 slave 端再对相同的数据进行修改。该模式会保证 master 和 slave 的正确复制,但是 binlog 日志量会增加。
#MIXED:前两种模式的结合,MySQL 会根据执行的每一条具体的 SQL 语句来区分对待记录的日志形式,在 STATEMENT 和 ROW 之间选择一种
binlog_format=mixed
# 给服务器分配一个独一无二的 ID 编号 ; n 的取值范围是 1~2 的 32 次方启用二进制日志功能
server-id = 1
#binlog过期清理时间
expire_logs_days = 10
#单个binlog日志文件大小
max_binlog_size = 200M    
slow_query_log=1
slow-query-log-file=D:\soft_install\mysql57\mysql_basedir\log\mysql-slow.log
long_query_time=3

3>安装 mysql 服务
进入MySQL目录下的bin目录,并执行下面的命令
mysqld install or mysqld.exe --install MySQL57_44 --defaults-file=“D:/soft_install\mysql57\mysql-5.7.44-winx64\bin\my.ini”
执行完显示 Service successfully installed.
4>初始化 MySQL 数据库,执行下面的命令(会生成初始root密码请记住):
mysqld --initialize --user=mysql --console
执行完显示
[Note] A temporary password is generated for root@localhost: b!M/g4d6W*5a

5>
启动MySQL服务 net start mysql
停止 MySQL服务 net stop mysql

3:进入修改密码
mysql -uroot -p
b!M/g4d6W*5a

修改密码 为123456 自行修改其他密码
mysql> ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘123456’;

4:全量备份与还原
① DML(Data Manipulation Language)数据操作语言-数据库的基本操作,SQL中处理数据等操作统称为数据操纵语言,简而言之就是实现了基本的“增删改查”操作。包括的关键字有:select、update、delete、insert、merge
② DDL(Data Definition Language)数据定义语言-用于定义和管理 SQL 数据库中的所有对象的语言,对数据库中的某些对象(例如,database,table)进行管理。包括的关键字有:create、alter、drop、truncate、comment、grant、revoke
1>指定数据库开启 binlog
binlog-do-db:指定mysql的binlog日志记录哪个db
(1)binlog_format=STATEMENT时,在用use dbname的格式下,如果dbname没有在binlog-do-db里,DDL和DML语句都不会被记录在binlog里;即使指定具体的DB.table;
(2)在row模式下,在用use dbname的格式下,如果dbname没有在binlog-do-db里,DDL语句都不会被记录在binlog里。即使指定具体的DB.table;DML语句会记录。
(3)在mixed模式下,在用use dbname的格式下,如果dbname没有在binlog-do-db里,DDL、DML语句都不会被记录在binlog里。即使指定具体的DB.table;

binlog_ignore_db 此参数表示不记录指定的数据库的二进制日志

#master配置
[mysqld]
# 指定需要同步的数据库
binlog_do_db = db1
binlog_do_db = db2
binlog_do_db = db3
#不记录指定的数据库的二进制日志
binlog_ignore_db= db11
# 指定不需要同步的数据库(同步到从库去)
replicate-ignore-db = db4
replicate-ignore-db = db5
#参数是在slave上配置
[mysqld]
replicate-do-db = labg1601                   #表示需要复制主服务器上的数据库是labg1601
replicate-ignore-db = mysql                  #表示不从主服务器上复制的数据库mysql(多个可以写多个,不写则以replicate-do-db配置的为准)

2>对所有数据库 完全备份
mysqldump -u root -p --opt --all-databases > /backup/all-data.sql
3>多库备份
mysqldump -u root -p --databases auth mysql > /backup/databases-auth-mysql.sql
4>单库备份
mysqldump -u root -p school > /opt/school.sql
5>备份表(某库下的某张表) mysqldump -u username -ppassword dbname table1 table2…… > backupname.sql

5:恢复
eg: 备份单库 并恢复(testdb)
全备份在 update test1 set num=22 wherw id=1 ;之前执行的,备份时 id=1 num=2
在这里插入图片描述
恢复
mysql -uroot -p < d:/temp/testdb.sql
在这里插入图片描述

5:增量备份与还原
当前testdb.test1 数据
mysql> select * from test1;
±—±-------±-----+
| id | name | num |
±—±-------±-----+
| 11 | name11 | 11 |
| 12 | name12 | 12 |
| 13 | name13 | 13 |
| 14 | name14 | 14 |
±—±-------±-----+
4 rows in set (0.00 sec)

--master-data=2		表示在备份过程中记录主库的binlog和pos点,并在备份文件中注释掉这一行;
--master-data=1		表示在备份过程中记录主库的binlog和pos点,并在备份文件中不注释掉这一行,即恢复时会执行;
--dump-slave=2		表示在备份过程中,在从库备份,mysqldump进程也要在从库执行,记录当时主库的binlog和pos点,并在备份文件中注释掉这一行;
--dump-slave=1		表示在备份过程中,在从库备份,mysqldump进程也要在从库执行,记录当时主库的binlog和pos点,并在备份文件中不注释掉这一行;
注意:在从库上执行备份时,即--dump-slave=2,这时整个备份过程都是stop io_thread的状态

参考 https://help.aliyun.com/zh/rds/apsaradb-rds-for-mysql/rds-mysql-mysqldump-options
在这里插入图片描述

1>查看logs

#查看master binary logs
mysql> SHOW MASTER LOGS;
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| mysql-bin.000001 |       154 |
+------------------+-----------+
1 row in set (0.00 sec)
#查看当前的Binlog日志文件
mysql> show binary logs;
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| mysql-bin.000001 |       154 |
+------------------+-----------+
1 row in set (0.00 sec)
#清理日志
mysql> RESET MASTER;
Query OK, 0 rows affected (0.18 sec)

2>全备份
注意记得 加 --flush-logs 重新生成新的log 便于
D:\soft_install\mysql57\mysql-5.7.44-winx64\bin>mysqldump -u root -p --lock-all-tables --flush-logs --master-data=2 --databases testdb > d:/temp/incremental_backup.sql
Enter password: ******

mysql> show binary logs;
±-----------------±----------+
| Log_name | File_size |
±-----------------±----------+
| mysql-bin.000001 | 201 |
| mysql-bin.000002 | 154 |
±-----------------±----------+
2 rows in set (0.00 sec)

#全备完后,插入一条数据 ,更新一条数据 作为增量日志
在这里插入图片描述
step2:全量还原
step3:增量还原到420位置
mysql> insert into test1 values(20,‘name20’,20); #还没执行
step4:增量还原到451位置,
mysql> insert into test1 values(20,‘name20’,20); 已经执行完,
mysql> update test1 set num=1212 where id =12; 未开始执行
在这里插入图片描述

(1)一般的恢复:备份的二进制日志内容全部恢复
格式:
mysqlbinlog [–no-defaults] 增量备份文件 | mysql -u 用户名 -p 密码
(2)基于时间点的恢复:便于跳过某个发生错误的时间点实现数据恢复
格式:
从日志开头截止到某个时间点的恢复:
mysqlbinlog [–no-defaults] --stop-datetime=’年-月-日 小时:分钟:秒’ 二进制日志 | mysql -u用户名 -p密码
从某个时间点到日志结尾的恢复:
mysqlbinlog [–no-defaults] --start-datetime=’年-月-日 小时:分钟:秒’ 二进制日志 | mysql -u用户名 -p密码
从某个时间点到某个时间点的恢复:
mysqlbinlog [–no-defaults] --start-datetime=’年-月-日 小时:分钟:秒’ --stop-datetime=’年-月-日 小时:分钟:秒’ 二进制日志 | mysql -u 用户名 -p 密码

(3)基于位置的恢复:可能在同一时间点既有错误的操作也有正确的操作,基于位置 进行恢复更加精准
格式:
mysqlbinlog --stop-position=’操作 id’ 二进制日志 |mysql -u 用户名 -p 密码
mysqlbinlog --start-position=’操作 id’ 二进制日志 |mysql -u 用户名 -p 密码

mysqlbinlog -v /path/mysql-bin.000002 --start-position=’操作 id’ --stop-position=’操作 id’ | mysql -uroot -p

备份与恢复工具
备份方法		备份速度		恢复速度			便捷性						功能		一般用于
cp			快			快			一般、灵活性低						很弱	 	少量数据备份
mysqldump	慢			慢		一般、可无视存储引擎的差异  				一般	   中小型数据量的备份
lvm2快照	快			快		一般、支持几乎热备、速度快				一般	   中小型数据量的备份
xtrabackup	较快		较快 	实现innodb热备、对存储引擎有要求			强大		较大规模的备份

6:如果觉得有用,麻烦点个赞,加个收藏

相关文章:

mysql-备份(二)

前章介绍了MySQL的内部数据结构btree&#xff0c;这章讲述mysql的备份 1&#xff1a;环境 ubuntu22.04 LST mysql5.7.42 or win10 mysql5.7.44 (这里图简单直接windows部署) download:https://downloads.mysql.com/archives/community/ 2:install 1> unzip mysql-5.7.44-w…...

Tailwind CSS 和 UnoCSS简单比较

UnoCSS 和 Tailwind CSS 都是流行的原子化 CSS 框架&#xff0c;但它们在设计理念、性能和使用方式上有一些重要的区别。下面是对它们的详细对比&#xff1a; 1. 概述 Tailwind CSS&#xff1a;Tailwind 是一个原子化的 CSS 框架&#xff0c;提供了大量的预定义类&#xff08;…...

unity3d————范围检测

目录 知识点一&#xff1a;什么是范围检测 知识点二&#xff1a;如何进行范围检测 问题&#xff1a; Physics.queriesHitTriggers 怎么查看是不是true&#xff1f; QueryTriggerInteraction.UseGlobal 参数意味着是否检测触发器将依据全局设置 Physics.queriesHitTrigge…...

修改this.$confirm的按钮位置、图标、文字及标题

在Vue.js项目中&#xff0c;this.$confirm 通常是基于某些UI库&#xff08;如Element UI或Ant Design Vue&#xff09;的对话框确认方法。 以下是基于Element UI的this.$confirm的用法示例。 在此之前&#xff0c;你的项目要已经安装了Element UI&#xff0c;如果没安装话就打…...

SQL MID() 函数详解

SQL MID() 函数详解 SQL 中的 MID() 函数是一个非常有用的字符串处理工具&#xff0c;它允许用户从字符串中提取特定位置的子字符串。这个函数在数据库查询和报告中特别有用&#xff0c;尤其是在需要从较长的文本字段中提取特定信息时。本文将详细介绍 MID() 函数的用法、参数…...

【蓝桥杯备赛】123(前缀和的复杂应用)

5. 前缀和的复杂应用 5.1. 123&#xff08;4 星&#xff09; 5.1.1. 题目解析 这道题仍然是求一段区间的和&#xff0c;很容易能够想到前缀和找规律&#xff1a; 1------------------1 号块 1 2----------------2 号块 1 2 3--------------3 号块 1 2 3 4------------4 号…...

MINES

MINES (m)6A (I)dentification Using (N)anopor(E) (S)equencing Tombo(v1.4) 命令在 MINES 之前执行&#xff1a; &#xff08;仅在 fast5 文件中尚未包含 fastq 时需要&#xff09; tombo preprocess annotate_raw_with_fastqs --fast5-basedir /fast5_dir/ --fastq-file…...

H.265流媒体播放器EasyPlayer.js H5流媒体播放器关于如何查看手机端的日志信息并保存下来

现今流媒体播放器的发展趋势将更加多元化和个性化。人工智能的应用将深入内容创作、用户体验优化等多个方面&#xff0c;带来前所未有的个性化体验。 EasyPlayer.js H.265流媒体播放器属于一款高效、精炼、稳定且免费的流媒体播放器&#xff0c;可支持多种流媒体协议播放&#…...

uni-app快速入门(十一)--常用JS API(上)

在前面学习了uni-app的布局、组件、路由等知识点以后&#xff0c;还要掌握uni-app的JS API ,也可以理解为基于uni-app的java script。本节介绍uni-app的request请求、文件上传、数据缓存、获取位置、获取系统信息、获取手机的网络状态、拨打电话API。 一、request请求 使用uni…...

Flink任务提交到yarn上slot数量为0的问题

现象&#xff1a;Flink提交到yarn上slot数量为0的问题 解决方法&#xff1a; 参考论坛上的方案&#xff0c;修改flink-conf.yaml文件都不管用 最终解决方法&#xff1a; $FLINK_HOME/lib 路径下有2个非.jar结尾的文件&#xff0c;把这几个文件移走之后&#xff0c;再启就可…...

vue3怎么根据字符串获取组件实例

例子&#xff1a; 我在使用vue2开发的时候&#xff0c;定义了一个方法 handler(strRef){ this.$refs[strRef].innerText hello world }&#xff0c; 我在点击某个按钮的时候&#xff0c;调用了方法handler&#xff0c;传递了一个参数是字符串 condition&#xff0c;然后方法…...

ISUP协议视频平台EasyCVR私有化视频平台新能源汽车充电停车管理方案的创新与实践

在环保意识提升和能源转型的大背景下&#xff0c;新能源汽车作为低碳出行的选择&#xff0c;正在全球迅速推广。但这种快速增长也引发了充电基础设施短缺和停车秩序混乱等挑战&#xff0c;特别是在城市中心和人口密集的居住区&#xff0c;这些问题更加明显。因此&#xff0c;开…...

智领未来: 宏集物联网HMI驱动食品与包装行业迈向智能化新高度

行业现状与挑战 食品与包装行业对设备的自动化、智能化水平要求日益提高&#xff0c;特别是瓶装和灌装生产线需要实现高速、高效的生产。此外&#xff0c;该行业还需遵循严格的卫生标准和安全规范&#xff0c;以保证产品质量符合消费者需求。在提高生产效率的同时&#xff0c;…...

redis-击穿、穿透、雪崩

击穿、穿透、雪崩经常听人说吧&#xff1f; 那他到底是啥呢&#xff1f;无非就是在有缓存层的情况下&#xff0c;对各种绕过缓存层从而直接落到了DB上的情况进行的分类。 概念性的东西大概如下&#xff0c;我是记不住&#xff0c;后期具体使用与规避这些问题才是大事&#xff…...

【Redis】服务器异常重启,导致redis启动失败

redis启动失败日志提示信息&#xff1a;Bad file format reading the append only file: make a backup of your AOF file, then use ./redis-check-aof --fix <filename> 错误日志示例图&#xff08;看最后一句&#xff09; 错误原因解析 这个错误通常是由于Redis的…...

Springboot+Vue的项目搭建(三)

一、拦截器 拦截器&#xff08;Interceptor&#xff09;是一种重要的软件设计模式&#xff0c;它在程序执行过程中能够拦截或截取特定的操作或事件&#xff0c;并在操作发生之前、之后或替代操作本身进行自定义的处理。以下是对拦截器知识点的详细归纳&#xff1a; 拦截器的定…...

【Word】一键批量引用论文上标——将正文字体改为上标格式

【Word】一键批量引用论文上标——将正文字体改为上标格式 写在最前面Word一键批量引用论文上标技巧分享核心思路&#xff1a;Word 替换功能 通配符步骤详解1. 打开 Word 替换功能2. 输入通配符模式3. 设置替换格式为上标4. 批量替换 实际效果展示技巧扩展 &#x1f308;你好呀…...

DAY1 网络编程(TCP客户端服务器)

作业&#xff1a; TCP客户端服务器。 server服务器代码&#xff1a; #include <myhead.h> #define IP "192.168.110.52" #define PORT 8886 #define BACKLOG 20 int main(int argc, const char *argv[]) {int oldfdsocket(AF_INET,SOCK_STREAM,0);//IPV4通信…...

如何在Ubuntu当中利用CloudCompare软件进行点云配准拼接?

1.首先需要安装相应的cloudcompare软件&#xff0c;以下有两种方式&#xff1a;第一种直接在ubuntu的软件商店里搜索CloudCompare软件进行install&#xff0c;我这里已经安装完毕。 方式二&#xff1a;可以直接原码安装&#xff1a; github地址&#xff1a; https://github.co…...

AWTK 最新动态:支持鸿蒙系统(HarmonyOS Next)

HarmonyOS是全球第三大移动操作系统&#xff0c;有巨大的市场潜力&#xff0c;在国产替代的背景下&#xff0c;机会多多&#xff0c;AWTK支持HarmonyOS&#xff0c;让AWTK开发者也能享受HarmonyOS生态的红利。 AWTK全称为Toolkit AnyWhere&#xff0c;是ZLG倾心打造的一套基于C…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...

Spring是如何解决Bean的循环依赖:三级缓存机制

1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间‌互相持有对方引用‌,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案&#xff1a;Java 字节码技术实战分享&#xff08;仅供学习&#xff09; 一、Aspose.PDF 简介二、说明&#xff08;⚠️仅供学习与研究使用&#xff09;三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...