Linux学习之MySQL备份
xtrabackup资源下载
完全备份与恢复
# 1.物理备份与恢复
# 冷备份,需停止数据库服务 适合线下服务器。
[root@mysql50 ~]# systemctl stop mysqld
[root@mysql50 ~]# mkdir /bakdir
[root@mysql50 ~]# cp -r /var/lib/mysql /bakdir/mysql.bak
[root@mysql50 ~]# cd /var/lib/mysql
[root@mysql50 mysql]# tar -zcvf /bakdir/mysql.tar.gz ./*...
[root@mysql50 mysql]# ls /bakdir/
mysql.bak mysql.tar.gz
# 删除数据
[root@mysql50 mysql]# rm -rf /var/lib/mysql/*
# 恢复数据(也可以使用cp拷贝的备份文件恢复数据)
[root@mysql50 mysql]# tar -xf /bakdir/mysql.tar.gz -C /var/lib/mysql/
[root@mysql50 mysql]# systemctl start mysqld
[root@mysql50 mysql]# mysql -uroot -p
Enter password:
...mysql> show databases;
+--------------------+
| Database |
+--------------------+
| db1 |
| information_schema |
| mysql |
| performance_schema |
| phpmyadmin |
| studb |
| sys |
| tarena |
| tarena1 |
+--------------------+
9 rows in set (0.00 sec)
# 2.mysqldump备份与恢复
# 热备份,备份和恢复数据库服务必须是运行的
# 备份1张表
[root@mysql50 mysql]# mysqldump -uroot -p123456 tarena salary> /bakdir/tarena_salary.sql;
# 备份多张表
[root@mysql50 mysql]# mysqldump -uroot -p123456 tarena employees departments> /bakdir/tarena_departments_employees.sql;
# 备份1个库
[root@mysql50 mysql]# mysqldump -uroot -p123456 -B tarena >/bakdir/tarena.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
# 备份多个库
[root@mysql50 mysql]# mysqldump -uroot -p123456 -B studb db1 >/bakdir/stu_db1.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
# 备份所有库
[root@mysql50 mysql]# mysqldump -uroot -p123456 -A > /bakdir/allbak.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
# 恢复数据(覆盖恢复数据)
[root@mysql50 mysql]# mysql -uroot -p
Enter password:
...
mysql>
mysql> drop database tarena; # 删除库
Query OK, 6 rows affected (1.83 sec)
mysql> exit
Bye
[root@mysql50 mysql]# mysql -uroot -p123456 < /bakdir/tarena.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@mysql50 mysql]# mysql -uroot -p
Enter password:
...
mysql> use tarena; # 进库
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables; # 看表
+------------------+
| Tables_in_tarena |
+------------------+
| departments |
| employees |
| salary |
| user |
| user2 |
| wage_grade |
+------------------+
6 rows in set (0.00 sec)
# 删除表记录
mysql> delete from salary; //删除表记录
Query OK, 8055 rows affected (0.11 sec)
mysql> exit
Bye
# 使用备份文件恢复数据
[root@mysql50 ~]# mysql -uroot -p123456 tarena < /bakdir/tarena_salary.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
mysql> select count(*) from tarena.salary;
+----------+
| count(*) |
+----------+
| 8055 |
+----------+
1 row in set (0.00 sec)
# 分析[Mysqldump 备份和恢复数据时会锁表,锁表期间无法对表做写访问,mysqldump适合备份数据量比较小的数据或在数据库服务器访问量少的时候备份。]# 通过备份脚本定时备份数据库
[root@mysql50 mysql]# vim /root/backsql.sh
#!/bin/bash
mysqldump -uroot -p123456 -B tarena > /bakdir/"tarena_$(date +%F)".sql
[root@mysql50 mysql]# chmod +x /root/backsql.sh
# 设定计划任务,每天18:00备份数据库,可以根据自己需求来设定时间
[root@mysql50 mysql]# crontab -e
00 18 * * * /root/backsql.sh
分 时 日 月 周
增量备份与恢复
增量备份:备份上次备份后,新产生的数据。
Percona Xtrabackup是一款强大的在线热备份工具,备份过程中不锁库表,适合生产环境。支持完全备份与恢复、增量备份与恢复、差异备份与恢复。
# 数据增量备份
# 解压源码(在50,51两台机器上安装)
[root@mysql50 ~]# tar xf percona-xtrabackup-8.0.26-18-Linux-x86_64.glibc2.12-minimal.tar.gz
# 安装依赖
[root@mysql50 ~]# yum install -y perl-DBD-MySQL
# 移动并改名
[root@host50 ~ ]# mv percona-xtrabackup-8.0.26-18-Linux-x86_64.glibc2.12-minimal /usr/local/percona
//把命令添加到系统环境变量
[root@host50 ~ ]# vim /etc/bashrc
export PATH=/usr/local/percona/bin:$PATH 添加在文件末尾
:wq
[root@host50 ~ ]# source /etc/bashrc
//查看帮助信息
[root@host50 ~ ]# man xtrabackup (按q 退出)
#对数据做增量备份前,必须先有一次备份,也就是首次备份,通常是备份所有数据;比如每周周日完全备份,接下来进行增量备份。# ---周日完全备份
[root@mysql50 ~]# xtrabackup --host=127.0.0.1 --user=root --password=123456 --backup --target-dir=/fullbak --datadir=/var/lib/mysql
...
xtrabackup: Transaction log of lsn (23970132) to (23970152) was copied.
230913 14:37:47 completed OK!
# ---开始增量备份
[root@mysql50 ~]# xtrabackup --host=127.0.0.1 --user=root --password=123456 --backup --target-dir=/new2 --incremental-basedir=/fullbak --datadir=/var/lib/mysql
# ----在50服务器上创建一个数据库并创建一个表
mysql> create database first;
Query OK, 1 row affected (0.09 sec)mysql> use first;
Database changed
mysql> create table s1(id int,name varchar(30));
Query OK, 0 rows affected (0.78 sec)# 数据增量恢复
1.准备恢复数据
2.合并数据
3.清空数据库目录
4.拷贝数据
5.修改数据库目录所有者/组为mysql
6.重启数据库服务
# 将50服务器上备份的数据拷贝到51服务器
[root@mysql51 ~]# scp -r 192.168.88.50:/fullbak /root/
[root@mysql51 ~]# scp -r 192.168.88.50:/new2 /root/
# 准备恢复数据
[root@mysql51 ~]# xtrabackup --prepare --apply-log-only --target-dir=/root/fullbak
# 合并数据,如果有多个增量,同理,将所有增量数据依次进行合并,都合并至完全备份目录
[root@mysql51 ~]# xtrabackup --prepare --apply-log-only --target-dir=/root/fullbak --incremental-dir=/root/new2/
# 清空数据库目录
[root@mysql51 ~]# rm -rf /var/lib/mysql/*
# 拷贝数据
[root@mysql51 ~]# xtrabackup --copy-back --target-dir=/root/fullbak
# 修改数据库目录所有者/组
[root@mysql51 ~]# chown -R mysql.mysql /var/lib/mysql
# 重启数据库
[root@mysql51 ~]# systemctl start mysqld
# 连接数据库查看信息,能查看到first数据库
[root@mysql51 ~]# mysql -uroot -p123456
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| db1 |
| first |
| information_schema |
| mysql |
| performance_schema |
| phpmyadmin |
| studb |
| sys |
| tarena |
| tarena1 |
+--------------------+
10 rows in set (0.00 sec)
差异备份与恢复
差异备份:备份完全备份后,新产生的数据。
# 对数据做差异备份前,必须先有一次备份,也就是首次备份,通常是备份所有数据;比如每周周一完全备份,周二到周日差异备份。
# 完全备份数据
[root@mysql50 ~]# xtrabackup --host=127.0.0.1 --user=root --password=123456 --backup --datadir=/var/lib/mysql --target-dir=/allbak
# 添加增量数据
[root@mysql50 ~]# mysql -uroot -p
Enter password: mysql> create database second;
Query OK, 1 row affected (0.49 sec)mysql> use second;
Database changed
mysql> create table a1(id int,name char(10));
Query OK, 0 rows affected (1.09 sec)
# 差异备份和增量备份类似,只是每次备份是基于完全备份的
[root@mysql50 ~]# xtrabackup --host=127.0.0.1 --user=root --password=123456 --backup --datadir=/var/lib/mysql --target-dir=/dir2 --incremental-basedir=/allbak
# 在second库的a1表中插入数据
mysql> insert into a1 values(1,'a'),(2,'b');
# 再次差异备份
[root@mysql50 ~]# xtrabackup --host=127.0.0.1 --user=root --password=123456 --backup --datadir=/var/lib/mysql --target-dir=/dir3 --incremental-basedir=/allbak# 差异恢复
1.准备恢复数据
2.合并数据
3.清空数据库目录
4.拷贝数据
5.修改数据库目录所有者/组用户为mysql
6.重启数据库服务
# MySQL51 拷贝 MySQL50 的备份文件到 本机的根目录下,拷贝时只需要拷贝完全备份和最后一次差异备份的目录即可
[root@mysql51 ~]# scp -r 192.168.88.50:/allbak /root/
[root@mysql51 ~]# scp -r 192.168.88.50:/dir3 /root/
# 准备恢复数据
[root@mysql51 ~]# xtrabackup --prepare --apply-log-only --target-dir=/root/allbak
# 合并数据
[root@mysql51 ~]# xtrabackup --prepare --apply-log-only --target-dir=/root/allbak --incremental-dir=/root/dir3
# 清空数据库目录
[root@mysql51 ~]# rm -rf /var/lib/mysql/*
# 拷贝数据
[root@mysql51 ~]# xtrabackup --copy-back --target-dir=/root/allbak
# 修改数据库目录所有者/组
[root@mysql51 ~]# chown -R mysql.mysql /var/lib/mysql
# 启动数据库服务器
[root@mysql51 ~]# systemctl start mysqld
# 连接服务查看数据
[root@mysql51 ~]# mysql -uroot -p
Enter password:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| db1 |
| first |
| information_schema |
| mysql |
| performance_schema |
| phpmyadmin |
| second |
| studb |
| sys |
| tarena |
| tarena1 |
+--------------------+
11 rows in set (0.01 sec)mysql> select * from second.a1;
+------+------+
| id | name |
+------+------+
| 1 | a |
| 2 | b |
+------+------+
2 rows in set (0.00 sec)
相关文章:
Linux学习之MySQL备份
xtrabackup资源下载 完全备份与恢复 # 1.物理备份与恢复 # 冷备份,需停止数据库服务 适合线下服务器。 [rootmysql50 ~]# systemctl stop mysqld [rootmysql50 ~]# mkdir /bakdir [rootmysql50 ~]# cp -r /var/lib/mysql /bakdir/mysql.bak [rootmysql50 ~]# cd /…...
时序分解 | MATLAB实现北方苍鹰优化算法NGO优化VMD信号分量可视化
时序分解 | MATLAB实现北方苍鹰优化算法NGO优化VMD信号分量可视化 目录 时序分解 | MATLAB实现北方苍鹰优化算法NGO优化VMD信号分量可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 北方苍鹰优化算法NGO优化VMD,对其分解层数,惩罚因子数做优化…...
分类预测 | Matlab实现RBF-Adaboost多特征分类预测
分类预测 | Matlab实现RBF-Adaboost多特征分类预测 目录 分类预测 | Matlab实现RBF-Adaboost多特征分类预测效果一览基本介绍研究内容程序设计参考资料 效果一览 基本介绍 1.Matlab实现基于RBF-Adaboost数据分类预测(Matlab完整程序和数据) 2.多特征输入…...
【Java代码规范】阿里编码规约 VS CheckStyle
全文速览: 1、关于代码编码质量2、如何小成本有效管理企业内的编码规范 2.1 阿里编码规约IDE插件2.2 CheckStyle IDE插件 3、如何在代码提交中检验规范 3.1 阿里编码规约配置git precommit check3.2 CheckStyle配置git precommit check3.3 实践 1、关于代码编码质…...
iPhone苹果15手机圆点怎么设置让屏幕上显示出来圆形图标?
iPhone苹果15手机圆点怎么设置让屏幕上显示出来圆形图标? 1、在iPhone苹果手机上找到「设置」并点击打开; 2、在苹果iPhone设置内找到「辅助功能」并点击打开; 3、在苹果iPhone手机辅助功能内的动作交互内找到「触控」并点击打开;…...
kibana报错内存溢出问题解决
一、背景: kibana内存溢出,进程被kill掉,导致前端页面访问不到。 报错内容 二、报错原因: 发现是前端 js 报的内存 oom 异常,通过网上资料发现node.js 的默认内存大小为1.4G Node 中通过 JavaScript 使用内存时只能…...
【C语法】1124循环结构
#include <stdio.h> int main(){ //输入一个数。倒叙输出各个位上的数。 //123456 6 5 4 3 2 1 // 1输出个位上的数 %10 // 2将这个数去掉个位上的数。 / 10 // 3当这个数最后变成0时结束 int a 0; printf("请输入一个正整数:"); scanf…...
在PHP8中向数组添加元素-PHP8知识详解
在php8中向数组添加元素有多种方法,在这里主要讲解几个常用的方法:使用方括号[]添加元素、使用array_unshift()函数,向数组的头部添加元素、使用array_push()函数,向数组的尾部添加元素、使用array_splice()函数添加元素。 1、使用…...
Drupal __ 8.5.0 __ XSS文件上传 __CVE-2019-6341
Drupal __ 8.5.0 __ XSS文件上传 __CVE-2019-6341 说明内容漏洞编号CVE-2019-6341漏洞名称Drupal XSS漏洞漏洞评级中危影响范围在7.65之前的Drupal 7版本中; 8.6.13之前的Drupal 8.6版本; 8.5.14之前的Drupal 8.5版本。漏洞描述Drupal诞生于2000年,是一…...
Pycharm中配置Celery启动
Pycharm中配置Celery启动 前置条件 目录结构 ----FerDemo --------celery_demo ------------tasks.py tasks.py文件代码 import sys import time from celery import Celeryapp Celery(demo,backendredis://:password127.0.0.1/0,brokerredis://:password127.0.0.1/1,broker…...
Jmeter —— 常用的几种断言方法(基本用法)
在使用JMeter进行性能测试或者接口自动化测试工作中,经常会用到的一个功能,就是断言,断言相当于检查点,它是用来判断系统返回的响应结果是否正确,以此帮我们判断测试是否通过,本文 主要介绍几种常用的断言&…...
mybatis bean属性识别丢失【NoSuchPropertyException】
背景 发现线上报错日志 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error evaluating expression Cause: org.apache.ibatis.ognl.NoSuchPropertyException: 参考 https://github.com/mybatis/mybatis-…...
点云从入门到精通技术详解100篇-基于补全点云与图像像素级融合的障碍物识别
目录 前言 感知融合技术研究现状及问题 感知融合技术概述 特征级融合研究现状...
商品分类显示scroll-view布局实现
快捷键 view{菜单数据$}*40 回车后即可快速生成 <view class="cates"> <!-- 搜索开始 --><SearchBar></SearchBar> <!-- 搜索结束 --> <view class="cates_container"> <!-- 左侧菜单 开始 --> <scroll-vie…...
基本的SELECT语句——“MySQL数据库”
各位CSDN的uu们好呀,好久没有更新小雅兰的MySQL数据库专栏啦,接下来一段时间,小雅兰都会更新MySQL数据库的知识,下面,让我们进入今天的主题吧——基本的SELECT语句!!! SQL概述 SQL语…...
DedeCMS5.7远程文件包含漏洞分析
看一段php代码 <?php foreach(Array(_GET,_POST,_COOKIE) as $_request){foreach($$_request as $_k > $_v) ${$_k} $_v; }echo a:.$a;echo b:.$b;这段代码可以实现创建变量并赋值的操作,而且参数都是可控的。 如果之前已经有了相应参数,那就会…...
GpsAndMap模块开源,欢迎测评
背景 之前的文章有提到,最近在使用folium的过程中,深感对于一个非专业人员来说,GPS坐标以及其所隐含的GPS坐标系,以及不同GPS坐标系之间的相互转换关系,不是一个十分清晰的概念,往往造成在使用GPS坐标在fo…...
DHT11 温湿度传感器
目录 1.DHT11 温湿度传感器概述 2.检测DHT11温湿度传感器模块是否存在 3.通过编写代码读取温湿度数据编辑 4.将读取到的温湿度数据通过串口上传 1.DHT11 温湿度传感器概述 DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,应用领域&am…...
vue3 自定义Hooks
文章目录 前言一、Hooks是什么?二、图片转换Base641.Hooks2.使用 三、监听元素宽高(自定义指令Hooks)1.Hooks2.使用 总结 前言 本文主要记录了vue3学习中自定义Hooks和vue2中Mixins的使用与案例。 一、Hooks是什么? Hooks用来处…...
计算机组成与设计硬件软件接口学习1
计算机的算术运算 子字并行 (大致浏览)pdf 170页左右 浮点加法不满足结合律: 适用于整型数据类型的并行执行策略并不适用于浮点数据类型 ,原因如上↑ 处理器 流水线 流水线是一种能使多条指令重叠执行的实现技术 流水线技术通…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...
MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)
macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 🍺 最新版brew安装慢到怀疑人生?别怕,教你轻松起飞! 最近Homebrew更新至最新版,每次执行 brew 命令时都会自动从官方地址 https://formulae.…...
【Kafka】Kafka从入门到实战:构建高吞吐量分布式消息系统
Kafka从入门到实战:构建高吞吐量分布式消息系统 一、Kafka概述 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,后成为Apache顶级项目。它被设计用于高吞吐量、低延迟的消息处理,能够处理来自多个生产者的海量数据,并将这些数据实时传递给消费者。 Kafka核心特…...
AD学习(3)
1 PCB封装元素组成及简单的PCB封装创建 封装的组成部分: (1)PCB焊盘:表层的铜 ,top层的铜 (2)管脚序号:用来关联原理图中的管脚的序号,原理图的序号需要和PCB封装一一…...
链式法则中 复合函数的推导路径 多变量“信息传递路径”
非常好,我们将之前关于偏导数链式法则中不能“约掉”偏导符号的问题,统一使用 二重复合函数: z f ( u ( x , y ) , v ( x , y ) ) \boxed{z f(u(x,y),\ v(x,y))} zf(u(x,y), v(x,y)) 来全面说明。我们会展示其全微分形式(偏导…...
高保真组件库:开关
一:制作关状态 拖入一个矩形作为关闭的底色:44 x 22,填充灰色CCCCCC,圆角23,边框宽度0,文本为”关“,右对齐,边距2,2,6,2,文本颜色白色FFFFFF。 拖拽一个椭圆,尺寸18 x 18,边框为0。3. 全选转为动态面板状态1命名为”关“。 二:制作开状态 复制关状态并命名为”开…...
第14节 Node.js 全局对象
JavaScript 中有一个特殊的对象,称为全局对象(Global Object),它及其所有属性都可以在程序的任何地方访问,即全局变量。 在浏览器 JavaScript 中,通常 window 是全局对象, 而 Node.js 中的全局…...
