当前位置: 首页 > 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…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而&#xff0c;传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案&#xff0c;能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…...

鸿蒙(HarmonyOS5)实现跳一跳小游戏

下面我将介绍如何使用鸿蒙的ArkUI框架&#xff0c;实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...