数据库运维之数据库备份的多种方法

2023-11-18

数据库备份,数据库为school,素材如下
在这里插入图片描述

1.创建student和score表

CREATE TABLE student (

id INT(10) NOT NULL UNIQUE PRIMARY KEY ,

name VARCHAR(20) NOT NULL ,

sex VARCHAR(4) ,

birth YEAR,

department VARCHAR(20) ,

address VARCHAR(50)

);

创建score表。SQL代码如下:

CREATE TABLE score (

id INT(10) NOT NULL UNIQUE PRIMARY KEY AUTO_INCREMENT ,

stu_id INT(10) NOT NULL ,

c_name VARCHAR(20) ,

grade INT(10)

);

2.为student表和score表增加记录

向student表插入记录的INSERT语句如下:

INSERT INTO student VALUES( 901,‘张老大’, ‘男’,1985,‘计算机系’, ‘北京市海淀区’);

INSERT INTO student VALUES( 902,‘张老二’, ‘男’,1986,‘中文系’, ‘北京市昌平区’);

INSERT INTO student VALUES( 903,‘张三’, ‘女’,1990,‘中文系’, ‘湖南省永州市’);

INSERT INTO student VALUES( 904,‘李四’, ‘男’,1990,‘英语系’, ‘辽宁省阜新市’);

INSERT INTO student VALUES( 905,‘王五’, ‘女’,1991,‘英语系’, ‘福建省厦门市’);

INSERT INTO student VALUES( 906,‘王六’, ‘男’,1988,‘计算机系’, ‘湖南省衡阳市’);

向score表插入记录的INSERT语句如下:

INSERT INTO score VALUES(NULL,901, ‘计算机’,98);

INSERT INTO score VALUES(NULL,901, ‘英语’, 80);

INSERT INTO score VALUES(NULL,902, ‘计算机’,65);

INSERT INTO score VALUES(NULL,902, ‘中文’,88);

INSERT INTO score VALUES(NULL,903, ‘中文’,95);

INSERT INTO score VALUES(NULL,904, ‘计算机’,70);

INSERT INTO score VALUES(NULL,904, ‘英语’,92);

INSERT INTO score VALUES(NULL,905, ‘英语’,94);

INSERT INTO score VALUES(NULL,906, ‘计算机’,90);

INSERT INTO score VALUES(NULL,906, ‘英语’,85);
在这里插入图片描述

3.备份数据库school到/backup目录

mysqldump -uroot -p'123456' --default-character-set=utf8 -B school > /backup/school.$(date +%F).sql

在这里插入图片描述

4.备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库
该题用:mysqldump备份数据库(完全备份+增加备份)方法

完全备份:

mysqldump -uroot -p123456 -B school > /tmp/school.$(date +%F).sql

在这里插入图片描述
修改数据库(删除表score)

drop table score;

在这里插入图片描述

增量备份:
前提: 1)my.cnf,是要开启MySQL log-bin日志功能,重启MySQL log_bin =
/data/mysql/data/mysql-bin
2)存在一个完全备份,生产环境一般凌晨某个时刻进行全备

1、检查全备后的所有binlog
# ls -lrt /usr/local/mysql/data/mysql-bin.*
2、立即刷新并备份出binlog
mysqladmin -uroot -p flush-logs
cp /usr/local/mysql/data/mysql-bin.0000014 /server/backup/
提示:根据时间点及前一个binlog可以知道发现问题时刻前binlog日志为mysql-bin.0000014
3、恢复binlog生成sql语句
mysqlbinlog mysql-bin.0000014 > bin.log

在这里插入图片描述
查看文件,截取数据变动的时间

mysqlbinlog  --base64-output=DECODE-ROWS -vv mysql-bin.000014

在这里插入图片描述
基于时间的增量备份:

[root@www data]# mysqlbinlog mysql-bin.000014 --start-datetime='2023-03-23 22:53:07' --stop-datetime='2023-03-23 22:53:43' -r time.sql

再次新建score表
在这里插入图片描述

恢复增量备份的数据库内容,发现score表自动被删除

[root@www data]# mysql -uroot -p123456 < time.sql

在这里插入图片描述

5.直接将MySQL数据库压缩备份

[root@www data]# tar zcf /tmp/databases-$(date +%F).tar.gz *

在这里插入图片描述

6.备份MySQL数据库某个(些)表。此例备份student表

mysqldump -u root -p school student > /backup/table/school-student

在这里插入图片描述

7.同时备份多个MySQL数据库(其他数据库素材自行准备)

除了school数据库外,我额外创建了it和company数据库

[root@www data]# mysqldump -u root -p123456 -B it company > /tmp/it-and-company

在这里插入图片描述
8.仅仅备份数据库结构

-d只备份库结构,不包含数据内容

[root@www data]# mysqldump -u root -p123456 -B -d school > /tmp/school-structure.sql

在这里插入图片描述

9.备份服务器上所有数据库

[root@www data]# mysqldump -u root -p123456 --all-databases > /tmp/all-databases.$(date +%F).sql

在这里插入图片描述

10.还原MySQL数据库

11.还原压缩的MySQL数据库

删除/usr/local/mysql/data/下的所有文件,模拟数据库损坏
在这里插入图片描述
将第五题所做的备份解压,实现数据库的还原

tar xf /tmp/databases-2023-03-22.tar.gz -C ./

在这里插入图片描述

12.使用xtrabackup 备份数据库
innobackupex命令安装

[root@www ~]# yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
[root@www ~]# yum -y  install percona-xtrabackup-24  
[root@www ~]# yum -y  install qpress  ##innobackupex支持压缩导出,这里安装压缩工具
 
[root@www ~]# innobackupex -version  ###如果出现如下提示表示安装成功,我这里2.4.15
xtrabackup: recognized server arguments: --server-id=11 --datadir=/data/mysql_data --tmpdir=/tmp --log_bin=bin.log --innodb_page_size=8192 --innodb_buffer_pool_size=2G --innodb_io_capacity=4000 --innodb_flush_method=O_DIRECT --innodb_undo_tablespaces=3 --innodb_log_file_size=128M --innodb_log_buffer_size=16777216 
innobackupex version 2.4.15 Linux (x86_64) (revision id: 544842a)

使用xtrabackup 备份数据库

innobackupex --user=root --password=123456 --socket=/tmp/mysql.sock /backup/db/databases-xtrabackup.sql

在这里插入图片描述
在这里插入图片描述

13.在另外的数据库服务器上还原xtrabackup 备份

新开一台数据库服务器192.168.15.133(已经有mysql环境)
将备份的数据库文件复制到该台服务器上

scp -r /backup/db/databases-xtrabackup.sql/* 192.168.15.133:/backup/db/

查看该台服务器上的mysql数据库
在这里插入图片描述
可以看出该台服务器相较于前一台服务器没有it和school数据库。
开始备份:

完全备份中恢复数据 # innobackupex --apply-log /backup/db/databases-xtrabackup.sql/2023-03-22_23-52-02
停止数据库 # systemctl stop mysqld
还原数据库到默认目录 innobackupex --copy-back /backup/db/databases-xtrabackup.sql/2023-03-22_23-52-02
修改数据文件属主属组
# chown -R mysql.mysql /usr/local/mysql/data/
启动数据库 # systemctl start mysql

14.使用mydumper备份数据库

 mydumper -u root -p 123456 -B school -S /tmp/mysql.sock -o /backup/db/school

在这里插入图片描述

15.使用mydumper恢复数据库
模拟数据库被破坏:
在这里插入图片描述
恢复数据库:

myloader -u root -p 123456 -S /tmp/mysql.sock -d /backup/db/school/ -B school

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据库运维之数据库备份的多种方法 的相关文章

  • 如何计算 Postgres 上图表中所有连接的节点(行)?

    我的桌子有account id and device id One account id可以有多个device ids 反之亦然 我正在尝试计算每个连接的多对多关系的深度 Ex account id device id 1 10 1 11
  • TSQL - 生成文字浮点值

    我理解比较浮点数时遇到的许多问题 并对它们在这种情况下的使用感到遗憾 但我不是表格作者 只有一个小障碍需要克服 有人决定使用浮点数 就像您期望使用 GUID 一样 我需要检索具有特定浮点值的所有记录 sp help MyTable Colu
  • 自动删除主键序列中的间隙

    我正在创建一个网页 该网页根据用户操作将数据存储到 MySQL 数据库中 数据库有很多行 行的主键是列 rowID 它只是按顺序对行进行编号 例如 1 2 3 4 用户可以选择删除行 问题是当用户删除最后一行以外的行时 rowID 中有一个
  • java库维护数据库结构

    我的应用程序一直在开发 所以偶尔 当版本升级时 需要创建 更改 删除一些表 修改一些数据等 通常需要执行一些sql代码 是否有一个 Java 库可用于使我的数据库结构保持最新 通过分析类似 db structure version 信息并执
  • C# using 语句、SQL 和 SqlConnection

    使用 using 语句 C SQL 可以吗 private static void CreateCommand string queryString string connectionString using SqlConnection c
  • 分组和切换列和行

    我不知道这是否会被正式称为枢轴 但我想要的结果是这样的 Alex Charley Liza 213 345 1 23 111 5 42 52 2 323 5 23 1 324 5 我的输入数据采用这种形式 Apt Name
  • 选择多列 按一列分组 按计数排序

    我在Oracle中有以下数据集 c1 c2 c3 1A2 cat black 1G2 dog red B11 frog green 1G2 girl red 试图得到以下结果 基本上我首先尝试获取具有重复 c1 的行 c1 c2 c3 1G
  • NVARCHAR 变量在Where 子句中不起作用

    在 SQL Server 我想是 2018 我不知道如何判断 中 我的变量不起作用WHERE的条款NVARCHAR 比较应该返回值 但它什么也没返回 如果我只是手动输入声明的文本 它会突然起作用并返回值 没有任何逻辑原因应该有任何不同 类型
  • postgresql:插入...(选择*...)

    我不确定它是否是标准 SQL INSERT INTO tblA SELECT id time FROM tblB WHERE time gt 1000 我正在寻找的是 如果 tblA 和 tblB 位于不同的数据库服务器中怎么办 Postg
  • 3 个表的 SQL 查询(或联接)

    第一次在 Stack Overflow 上问问题 很棒的资源 但是只有一件事真正让我作为 SQL 新手感到困惑 我有三个表 我想获取与鲍勃的学生相关的所有导师的姓名 表 1 教师 ID Name 1 Bob 表 2 学生 STUDENT I
  • H2 SQL 日期比较

    在 H2 数据库中 如何在 TIMESTAMP 类型的列上运行查询 SELECT FROM RECORDS WHERE TRAN DATE lt 2012 07 24 Try 2012 07 24
  • SQL 使用另一列的键和最大值设置列

    我需要根据同一 ID 的 duration 列的最大值更新 max register 列 将值设置为 1 其他值设置为 0 初始表 Id duration max register 1 0 0 1 7 0 1 3 0 2 10 0 2 5
  • 如何拥有引用另一个表的检查约束?

    我在 SQL Server 2008 数据库中有以下表 tblItem 其中有一个ItemID field 好项目 它还有一个 ItemID 字段 并且有一个指向 tblItem 的外键 tblBadItem 它也有一个 ItemID 字段
  • 在Oracle中使用IW和MM

    我使用 IW 表示每周结果 使用 MM 表示每月结果 但我总是收到错误 ORA 00979 not a GROUP BY expression 00979 00000 not a GROUP BY expression 我的疑问是这些 We
  • SQL 标准是否允许函数名和括号之间有空格

    检查一些 RDBMS 我发现类似的事情 SELECT COUNT a SUM b FROM TABLE 允许 注意聚合函数和括号之间的空格 谁能提供一个指向 SQL 标准本身定义的指针 任何版本都可以 编辑 以上在postgres中工作 m
  • SQL Server使用in关键字传递字符串数组查询

    我认为 IN 子句不能接受具有多个值的绑定参数 Oracle 不能 需要几分钟 查询是 declare setting varchar max set setting Sales Entry Grid Cursor Customer Man
  • 通过 C# SqlCommand 执行合并语句不起作用

    我正在第一次尝试使用临时表和MERGE语句通过更新 SQL 表SqlCommandC 中的对象 我正在开发的程序旨在首先将大量记录 最多 20k 导出到 Excel 电子表格中 然后 用户可以搜索并替换特定值 并根据需要更新任意多记录中的任
  • SQL:如何从一个表中获取另一个表中每一行的随机行数

    我有两个数据不相关的表 对于表 A 中的每一行 我想要例如表 B 中的 3 个随机行 使用光标这相当容易 但速度非常慢 那么我该如何用单个语句来表达这一点以避免 RBAR 呢 要获得 0 到 N 1 之间的随机数 可以使用 abs chec
  • 具有不同组合的产品和产品包的数据库模型

    您将如何设计数据库来实现此功能 考虑一个场景 我们想要创建一个产品关系 封装 假设我们创建一个产品表 prod id prod name prod fee 1 prepaid A 19 usd 2 prepaid B 29 usd 3 pr
  • 多边形内的 SQL 地理点在 STIntersect 上不返回 true(但使用 Geometry 返回 true)

    我不想仅仅为了在 STIntersect 中返回 true 而将地理数据转换为几何图形 下面是 SQL 中的代码 DECLARE point GEOGRAPHY GEOGRAPHY Point 1 1 4326 DECLARE polygo

随机推荐

  • 列表转链表+链表合并

    列表转链表 思路 生成一个头节点 current指向该节点 再生成新节点 给该节点赋值val 更新current位置 依次类推 class ListNode object def int self val 0 next None self
  • 腾讯28-整数反转

    腾讯28 整数反转leetcode7 给出一个 32 位的有符号整数 你需要将这个整数中每位上的数字进行反转 示例 1 输入 123 输出 321 示例 2 输入 123 输出 321 示例 3 输入 120 输出 21 注意 假设我们的环
  • mac xmind

    1 首先要安装包 XMind For Mac 本人下载的这个版本xmind8update9 2 下载破解包 XMindCrack jar 链接 https pan baidu com s 1jqpodMvKQTNQyenAIy0Y3w 密码
  • vue反向代理解决跨域及部署nginx端口转发解决跨域

    1 前言 本文是为了解决vue反向代理解决跨域及部署服务器nginx端口转发解决跨域 因为踩了不少的坑 百度了很多 也试了太多的方法 最终得以解决 所以记录一下 希望遇到同样问题的友友们可以高效的解决自己项目中遇到的问题 2 为什么会出现跨
  • 自写控件:滑动呈现控件(实现了两个以上控件间的切换)师傅的

    public class NavigatePanel Panel public enum Direction LeftToRight RightToLeft private NavigateArgs mArgs Navigate参数 pri
  • JS基础,从JS的组成到JS函数写法

    一 计算机的组成 计算机 软件 硬件 输入设备 输出设备 CPU 硬盘 内存 二 JS的组成 1 ECMAScript 是由ECMA国际 原欧洲计算机制造商协会 进行标准化的一门编程语言 这种语言在万维网上应用广泛 它往往被称为JavaSc
  • Selenium定位页面元素的方法

    一 Selenium定位页面元素的方法 selenium提供如下强大的定位元素的方法 id id name name dom javascriptExpression xpath xpathExpression link textPatte
  • java 基础重学(五)-底层-JVM

    1 JVM JVM内存结构 class 文件格式 运行时数据区 堆和栈的区别 java中对象一定在堆上分配吗 java 内存模型 计算机内存模型 缓存一致性 MESI协议 原子性 可见性 顺序性 happens before 内存屏蔽 sy
  • 刷题day65:分割等和子集

    题意描述 给你一个 只包含正整数 的 非空 数组 nums 请你判断是否可以将这个数组分割成两个子集 使得两个子集的元素和相等 思路 使用01背包 背包的体积为sum 2 背包要放入的商品 集合里的元素 重量为 元素的数值 价值也为元素的数
  • 解决qemu虚拟机图形界面卡死问题

    1 基础环境 Virtio gpu双heads 4 9 0内核 xserver1 9 3 modesettings0 5 0驱动 2 问题描述 终端中打开大量文字内容 不停上下滑动 或cat大量内容的文件 操作过程中用户界面卡死 如下 3
  • 吴恩达深度学习笔记——改善深层神经网络:超参数调整,正则化,最优化(Hyperparameter Tuning)

    深度学习笔记导航 前言 传送门 改善深层神经网络 超参数调整 正则化 最优化 Improving Deep Neural Networks Hyperparameter Tuning Regularization and Optimizat
  • 安装或更新 Android Studio

    在开始用 Jetpack Compose 来编写软件之前 我们需要 1 一台可以联网的电脑 2 安装或更新到 最新版的 Android Studio 3 选择创建 Empty Compose Activity 4 保持版本更新 尝试使用最新
  • Retrofit动态代理+注解+反射简析

    1 定义注解 Get注解 用来定义网络请求类型 Target ElementType METHOD Retention RetentionPolicy RUNTIME public interface Get String value Qu
  • sort()函数的用法说明

    sort 排序是一种简单的快速排序 用于对数组的排序 时间复杂度为n log2 n sort 函数必须是在 cpp 的文件中才能运行 头文件为 include
  • jmeter——BeanShell 预处理程序

    jmeter BeanShell 预处理程序 一 BeanShell 预处理程序描述和作用 二 BeanShell 预处理程序的使用 三 BeanShell 预处理程序的注意事项 四 BeanShell 预处理程序的拓展 一 BeanShe
  • 什么是ADT

    Abstract Data Type 抽象数据类型 是指数据结构作为一个软件组件的实现 ADT的接口用一种类型和该类型上的一组操作来定义 每个操作由它的输入和输出定义 ADT并不会指定数据类型如何实现 这些实现细节对于ADT的用户来说是隐藏
  • php 验证密码大、小写英文字母、数字、特殊字符4选3;且长度大于等于8位

    param password string 明文密码 return array 检测密码合法性 大 小写英文字母 数字 特殊字符 4选3 且长度大于等于8位 function check password legal KaTeX parse
  • pandas把索引变成列

    pandas把索引变成列 只需要使用reset index 这样index就会变成一列变量出现在元数据表中 比如原来的数据表是上面这样 使用reset index 就变成这样 具体reset index 还有一些更细的应用 后续随着学习再继
  • 判断电脑是否插入移动磁盘U盘等并显示结果

    VC 检测判断电脑是否插入移动磁盘U盘等并显示结果 判断手机 U盘 存储卡等设备是否插入到电脑接口中 若检测到某设备 则将设备盘符显示于窗口中 项目源代码 部分代码 程序运行截图
  • 数据库运维之数据库备份的多种方法

    数据库备份 数据库为school 素材如下 1 创建student和score表 CREATE TABLE student id INT 10 NOT NULL UNIQUE PRIMARY KEY name VARCHAR 20 NOT