数据库的备份和恢复

备份:完全备份,增量备份

完全备份:将整个数据库完整的进行备份

增量备份:在完全备份基础的之上,对后续新增的内容进行备份

备份的需求

1生产环境中,数据的安全性至关重要,任何数据都可能产生非常严重的后果

2 数据丢失可能是程序操作,运算错误,磁盘故障,人为操作等

冷备份:关机备份,停止mysql服务,然后进行备份

热备份:开机备份,无需停止mysql服务,然后进行备份

物理备份:对数据库系统的物理文件(数据文件,日志文件)进行备份

逻辑备份:只是对数据库的逻辑组件 进行备份(表结构)以mysql语句的形式,把库 结构,表进行备份(直接在数据库系统中删除全部文件(rm -rf 库名),逻辑备份无法恢复)只能使用逻辑的方式(命令行)进行删除

物理备份:完全备份,对整个数据库进行完整的打包备份。

优点:操作简单

缺点:数据库文件占用量是很大的,占用空间太大,备份和恢复的时间都很长。而且需要暂停数据库服务。

打包备份最好把服务关掉,避免有新的数据进入,备覆盖,恢复失败

yum -y install xz

#压缩备份 tar Jcvf /opt/mysql_all_$(date +%F).tar.xz /usr/local/mysql/data/

#解压恢复 tar Jxvf /opt/mysql_all_2020-11-22.tar.xz

物理冷备份

#关闭mysqld

#查看data下文件

#安装一个高压缩率的数据压缩工具(备份恢复先下载好这个)

#打包data

Tar Jcvf:打包

Tar Jxvf: 解压

打包/mysql_all_$(date+%F).tar.xz日期  打包位置

使用xz工具打包 J要大写J

把文件/usr/log/mysql/data打包到/opt/mysql_all_$(data +%F).tar.xz

(把data数据库打包相当于打包全部)

解压打包过来的数据包

#解压出来是

#演示删库(相当于删除所有)

数据备份恢复

数据全部还原了

远程数据迁移:

复制到、/opt 下之后 再保留权限复制到下面/usr/local/mysql/data/下

#再赋权之后 刷新 数据库 数据表格等都有了

重启MySQL

热备份中的逻辑备份

MySQL的自带工具:mysqldump

备份:重定向输出到/opt/下(使用mysqldump用.sql为结尾)

单个库备份

Mysqldump -u root -p --databases kgc > /opt/kgc.sql

多个库备份

Mysqldump -u root -p --databases kgc kgc1 > /opt/kgc1.sql

所有库进行备份

Mysqldump -u root -p --all-databases > /opt/kgc3.sql

恢复库使用mysql 小于号

mysql -u root -p < /opt/kgc_all.sql

##开启端口号、MySQL服务

单个数据库的逻辑热备份

#物理删除Kgc这个库(恢复之后只有库的架构 没有表数据)

#使用命令行的方式进行删除

#指定连接完mysql命令 之后自动退出

mysql -u root -p -e 'show databases;'

-e:指定连接mysql之后执行完命令,自动退出。

#恢复库

物理删除刷新没有了kgc

命令行删除还有恢复数据库

多个数据库的热备份的逻辑

备份全部数据库

如何备份指定库 指定表

指定数据库下 多表恢复

增量备份

优点:

mysgldump支持增量备份。

没有重复数据,备份量小,时间短。

mysgldump增量备份恢复表数据期间,表会锁定。

缺点:

备份时锁表,必然会影响业务。超过10G,耗时会比较长,导致服务不可用。

MySQl二进制日志记录格式有3种

1 statemnet基于sql语句

记录修改的sql语句,高并发情况下,记录sql语句时候的顺序可能会出错,恢复数据时候可能会导致丢失和误差,效率比较高

2 row 基于行

精准记录每一行的数据,准确率高,但是恢复效率低

3、MIXED: 即可以根据sgl语句,也可以根据行

在正常情况下使用STATEMENT,-旦发生高并发,会智能自动切换到ROW行。

增量-备份的过程

mysql 提供的二进制日志间接的实现增量备份。

使用增量备份需要先修改配置文件

设置把二进制文件打开

log-bin=mysql-bin

binlog_format=MIXED

#二进制日志文件的位置

#查看二进制文件的内容

mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000002

mysqladmin -u root -p flush-logs

#刷新命令会生成一个新的mysql00000x记录点

恢复

mysqlbinlog --no-defaults mysql-bin.000001 | mysql -u root -p

基于位置点来进行恢复:

从某一个点开始,恢复到最后

mysqlbinlog --no-defaults --start-position='位置点' 文件名 | mysql - u root -p

从开头,一直恢复到某个位置

mysqlbinlog --no-defaults --stop-position='位置点' 文件名 | mysql - u root -p

从指定点-----指点结束点。

mysqlbinlog --no-defaults --start-position='位置点' --stop-position='位置点' 文件名 | mysql - u root -p

基于时间点进行恢复:

1、从某个时间点开始:

mysqlbinlog --no-defaults --start-datetime='时间点' 文件 | mysql -u root -p

2、从开头,到指定的结尾时间点:

mysqlbinlog --no-defaults --stop-datetime='时间点' 文件 | mysql -u root -p

3、指定时间范围:

mysqlbinlog --no-defaults --start-datetime='时间点' --stop-datetime='时间点' 文件 | mysql -u root -p

时间点要加-

At :数字是位置点

时间点 位置点

如何打开MySQL的默认日志

MySQL 的日志默认保存位置为 /usr/local/mysql/data

vim /etc/my.cnf

[mysqld]

log-error=/usr/local/mysql/data/mysql_error.log

#指定日志的保存位置和文件名

##错误日志,用来记录当MySQL启动、停止或运行时发生的错误信息,默认已开启

general_log=ON

general_log_file=/usr/local/mysql/data/mysql_general.log

##通用查询日志,用来记录MySQL的所有连接和语句,默认是关闭的

log-bin=mysql-bin

 #也可以 log_bin=mysql-bin

##二进制日志(binlog),用来记录所有更新了数据或者已经潜在更新了数据的语句,记录了数据的更改,可用于数据恢复,默认已开启

slow_query_log=ON

slow_query_log_file=/usr/local/mysql/data/mysql_slow_query.log

long_query_time=5

##慢查询日志,用来记录所有执行时间超过long_query_time秒的语句,可以找到哪些查询语句执行时间长,

以便于优化,默认是关闭的

#设置超过5秒执行的语句被记录,缺省时为10秒

systemctl restart mysqld

mysql -u root -p

show variables like 'general%'; #查看通用查询日志是否开启

show variables like 'log_bin%'; #查看二进制日志是否开启

show variables like '%slow%'; #查看慢查询日功能是否开启

show variables like 'long_query_time'; #查看慢查询时间设置

set global slow_query_log=ON;               #在数据库中设置开启慢查询的方法

附加题:写一个脚本,每个月的20号,对数据库打一个断点

断点之后进行增量备份

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【计算机架构】程序指令计数 | 功耗计算 | 电力功耗 | 安德尔定律(Amdahl‘s Law)

0x00 程序的指令计数 程序的指令计数&#xff08;Instruction Count&#xff09;由程序本身、ISA&#xff08;指令集架构&#xff09;和编译器决定。这表示一个程序中包含的指令数量受到程序编写方式、计算机体系结构和编译器的影响。 每条指令的平均周期数&#xff08;Averag…

人体姿态估计和手部姿态估计任务中神经网络的选择

一、人体姿态估计任务适合使用卷积神经网络&#xff08;CNN&#xff09;来解决。 人体姿态估计任务的目标是从给定的图像或视频中推断出人体的关节位置和姿势。这是一个具有挑战性的计算机视觉任务&#xff0c;而CNN在处理图像数据方面表现出色。 使用CNN进行人体姿态估计的一种…

Uniapp 中,能够同时兼容H5、web、app、微信小程序的引入高德地图的语法格式

在 Uniapp 中&#xff0c;可以通过使用 uni-app 统一的 API 来同时兼容 H5、web、App 和微信小程序&#xff0c;而引入高德地图则有以下两种语法格式供选择&#xff1a; 使用 Vue.js 的语法格式&#xff1a; <template><view><map :longitude"longitude&…

在云上jupylab(codelab)常用的shell命令

1、切换当前文件目录位置&#xff1a; %cd /project/train/ 2、删除目标文件夹和文件夹下面的内容&#xff0c;注意这个r是不能少的&#xff1a; !rm -r /project/train/src_repo/dataset 3、创建数据集相关文件夹 !mkdir /project/train/src_repo/dataset 4、复制指定…

想学计算机编程从什么学起?零基础如何自学计算机编程?中文编程开发语言工具箱之渐变标签组构件

想学计算机编程从什么学起&#xff1f;零基础如何自学计算机编程&#xff1f; 给大家分享一款中文编程工具&#xff0c;零基础轻松学编程&#xff0c;不需英语基础&#xff0c;编程工具可下载。 这款工具不但可以连接部分硬件&#xff0c;而且可以开发大型的软件&#xff0c;…

LeetCode 0318. 最大单词长度乘积

【LetMeFly】318.最大单词长度乘积 力扣题目链接&#xff1a;https://leetcode.cn/problems/maximum-product-of-word-lengths/ 给你一个字符串数组 words &#xff0c;找出并返回 length(words[i]) * length(words[j]) 的最大值&#xff0c;并且这两个单词不含有公共字母。如…

FastDFS整合nginx

从您提供的步骤来看&#xff0c;FastDFS整合nginx的过程包括准备工作、安装FastDFS的nginx模块、配置nginx以及启动nginx服务。接下来我将基于您提供的信息对步骤进行修改和补充&#xff0c;以确保更加清晰易懂。 1. 安装前配置fastdfs-nginx-module 1.1 上传并解压fastdfs-n…

数据结构实验二停车场

内容仅供个人复习 *设停车场内只有一个的停放 n 辆汽车的狭长通道&#xff0c;且只有一个大门可供汽车进出。汽车 在停车场内按车辆到达时间的先后顺序&#xff0c;依次由北向南排列&#xff08;大门在最南端&#xff0c;最先到达的第 一辆车停放在车场的最北端&#xff09;&am…

linux硬盘挂载(linux 修改某个磁盘挂载到新目录\lvm扩容)

文章目录 一、什么是硬盘挂载二、linux 修改某个磁盘挂载到新目录三、Esxi下扩容硬盘1. 判断一个已有的文件系统是否使用了LVM(逻辑卷管理)2. 原本文件系统没有使用lvm&#xff0c;还可以lvm扩容吗&#xff1f;3. 原有文件系统使用lvm场景下扩容(lvm扩容)了解LVMEsxi LVM扩容步…

NOIP2000提高组第二轮T4:方格取数

题目链接 [NOIP2000 提高组] 方格取数 题目描述 设有 N N N \times N NN 的方格图 ( N ≤ 9 ) (N \le 9) (N≤9)&#xff0c;我们将其中的某些方格中填入正整数&#xff0c;而其他的方格中则放入数字 0 0 0。如下图所示&#xff08;见样例&#xff09;: 某人从图的左上…

ES 报错问题汇总

报错1&#xff1a; curl -XGET http://192.168.56.115:9200/_license解决方式 在 es/config/elasticsearch.yml文件,把开启密码验证把此处也修改成false xpack.security.enabled: false 报错2&#xff1a; 解决方式&#xff1a; 查看服务器es的license信息&#xff0c;发现 …

用「埋点」记录自己,不妄过一生

最近有朋友问我「埋点怎么做」&#xff0c;给朋友讲了一些互联网广告的案例&#xff0c;从源头的数据采集讲到末尾的应用分析和流量分配等&#xff08;此处省略N多字&#xff09; 解释完以后&#xff0c;我想到一个问题&#xff1a;有了埋点可以做分析&#xff0c;那我们对自己…

lvs dr+keepalived

基于keepalived(主从双主) LVS(DR模型) DNS实现http高可用集群 keepalived高可用主机IP&#xff1a;172.21.5.22和172.21.5.21 http服务高可用主机IP&#xff1a;172.21.5.16和172.21.5.18 VIP采用172.16.32.5 各虚拟机及主机名和IP对应关系如下所示&#xff1a; 虚拟机主机…

Java中使用 MD5 工具进行对密码进行加密

基于MD5 的双重加密 package com.goods.springbootmybatisgoods.util;import java.security.MessageDigest; import java.security.NoSuchAlgorithmException;/*** MD5加密工具类*/ public class MD5Util {/*** 生成盐值* param source 需要加密的字符串* return 加密后的字符…

机器学习概论

一、机器学习概述 1、机器学习与人工智能、深度学习的关系 人工智能&#xff1a;机器展现的人类智能机器学习&#xff1a;计算机利用已有的数据(经验)&#xff0c;得出了某种模型&#xff0c;并利用此模型预测未来的一种方法。深度学习&#xff1a;实现机器学习的一种技术 2…

牛客网 CM11.链表分割

目录 1.解题思路2.代码实现 1.解题思路 此题目思路相对简单&#xff0c;利用双指针&#xff0c;一个指针指向小于val的&#xff0c;一个指针指向大于等于val的&#xff0c;但实现起来&#xff0c;如果仅仅使用单链表&#xff0c;那么还需特别判断第一个指针是否为空从而特意做…

yum

什么是yum? Linux中我们也要进行工具/指令/程序&#xff0c;安装&#xff0c;检查卸载等&#xff0c;需要yum的软件 安装软件的方式&#xff1a; 1.源代码安装--交叉编译工作 2.rpm包直接安装 3.yum / apt-get yum:yum是我们linux预装的一个指令&#xff0c;搜索&#x…

【数据结构】顺序表和链表

顺序表和链表 1.线性表 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列、字符串… 线性表在逻辑上是线性结构&#xff0c;也就说是连…

uniapp 省市区三级联动选择器

还有半个小时下班&#xff0c;总想着发点光亮照耀他人。IT技术这东西&#xff0c;尤其是UI方面的东西&#xff0c;于用户体验至关重要&#xff0c;想想最近使用uni-data-picker的丑陋页面&#xff0c;自己重构了这个功能&#xff0c;新加实现&#xff0c;效果图如下&#xff0c…

SRC实战 | CORS跨资源共享漏洞

CORS跨资源共享 跨源资源共享 (CORS) 是一种浏览器机制&#xff0c;允许网页使用来自其他页面或域的资产和数据。 大多数站点需要使用资源和图像来运行它们的脚本。这些嵌入式资产存在安全风险&#xff0c;因为这些资产可能包含病毒或允许服务器访问黑客。 CORS响应头 CORS通…