网络运维Day19
文章目录
- 环境准备
- 数据备份
- 为什么要备份
- 什么是备份
- 备份到哪里
- 什么时候备份
- 如何备份
- 完整备份
- 物理备份
- 逻辑备份
- 测试恢复所有库
- 构建MySQL服务
- xtrabackup完全备份与恢复
- 完全备份
- 完全恢复
- 增量备份
- 增量恢复
- 总结
环境准备
-
IP地址采用自动分配,以自己的为准
-
可以将之前的mysql主机的主机名改名为mysql-a
-
重新安装mysql-b主机,配置基础环境
主机名 | IP地址 |
---|---|
mysql-a | 192.168.8.100 |
mysql-b | 192.168.8.101 |
为两台主机配置IP地址和指定案例的yum源,下方已mysql-b主机为例
[root@mysql ~]# hostnamectl set-hostname mysql-b
[root@mysql-b ~]# systemctl stop firewalld #关闭防火墙
[root@mysql-b ~]# systemctl disable firewalld #禁止防火墙开机自启
[root@mysql-b ~]# vim /etc/selinux/config #修改配置文件,关闭SELinux
...
SELINUX=disabled
...
[root@mysql-b ~]# reboot #重启生效
[root@mysql-b ~]# nmcli connection modify ens33 ipv4.method auto connection.autoconnect yes
[root@mysql-b ~]# nmcli connection up ens33
配置yum,使用阿里云的镜像站点
[root@mysql-b ~]# rm -rf /etc/yum.repos.d/*.repo #删除自带的repo文件
[root@mysql-b ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo \ https://mirrors.aliyun.com/repo/Centos-7.repo #下载阿里镜像源
数据备份
为什么要备份
数据是企业生存的命脉
什么是备份
将数据另外保存一份
备份到哪里
通常采用异地保存
什么时候备份
备份的窗口期,通常是业务压力最低点
如何备份
- 备份方法
- 物理备份
- 逻辑备份
- 备份策略
- 完整备份
- 增量备份
- 差异备份
- 备份三要素
- BW:完成备份需要的时间
- RPO:客户可承受的最大数据丢失量
- RTO:客户可承受的最长停机时间
完整备份
物理备份
方法:cp、tar、zip …
##物理备份及恢复测试:使用cp、tar、zip等命令对数据库磁盘文件进行备份#mysql-a操作[root@mysql-a ~]# systemctl stop mysqld #停止MySQL服务
[root@mysql-a ~]# mkdir /bak #创建备份文件存储目录
[root@mysql-a ~]# tar -zcPf /bak/db.tar.gz /var/lib/mysql/* #对MySQL磁盘文件打包
[root@mysql-a ~]# ls /bak/ #确认备份成功
db.tar.gz[root@mysql-a ~]# rm -rf /var/lib/mysql/* #删除MySQL磁盘文件模拟数据丢失
[root@mysql-a ~]# tar -zxPf /bak/db.tar.gz -C / #解压备份数据,恢复数据
[root@mysql-a ~]# ls /var/lib/mysql/ #确认数据目录下有文件
[root@mysql-a ~]# chown -R mysql.mysql /var/lib/mysql/ #修改文件归属!!![root@mysql-a ~]# systemctl start mysqld #启动服务测试数据[root@mysql-a ~]# mysql -hlocalhost -uroot -p'tedu123...A' -e "SHOW DATABASES;"
逻辑备份
- mysqldump命令用于备份数据
- mysql命令用于恢复数据
##逻辑备份及恢复测试#备份指定库下的多个表
[root@mysql-a ~]# mysqldump -hlocalhost -uroot -p'tedu123...A' tarena departments employees salary > /bak/des.sql#备份多个指定库下的所有表
[root@mysql-a ~]# mysqldump -hlocalhost -uroot -p'tedu123...A' -B tarena execdb > /bak/te.sql#备份所有库下的表
[root@mysql-a ~]# mysqldump -hlocalhost -uroot -p'tedu123...A' -A > /bak/all.sql[root@mysql-a ~]# ls /bak/*.sql #确认数据备份成功
/bak/all.sql /bak/des.sql /bak/te.sql##测试恢复指定库下的表#删除tarena库下的表模拟数据丢失,注意顺序不能改
[root@mysql-a ~]# mysql -hlocalhost -uroot -p'tedu123...A' -e "DROP TABLE tarena.salary; DROP TABLE tarena.employees; DROP TABLE tarena.departments;"#确认departments表、employees表和salary表被删除
[root@mysql-a ~]# mysql -hlocalhost -uroot -p'tedu123...A' -e "SHOW TABLES FROM tarena;"#利用des.sql恢复数据
[root@mysql-a ~]# mysql -hlocalhost -uroot -p'tedu123...A' tarena < /bak/des.sql #确认3张表恢复成功
[root@mysql-a ~]# mysql -hlocalhost -uroot -p'tedu123...A' -e "SHOW TABLES FROM tarena;"##测试恢复多个库#删除tarena库和execdb库模拟数据丢失
[root@mysql-a ~]# mysql -hlocalhost -uroot -p'tedu123...A' -e "DROP DATABASE tarena; DROP DATABASE execdb;"#确认tarena库和execdb库被删除
[root@mysql-a ~]# mysql -hlocalhost -uroot -p'tedu123...A' -e "SHOW DATABASES;"#利用te.sql恢复两个库
[root@mysql-a ~]# mysql -hlocalhost -uroot -p'tedu123...A' < /bak/te.sql #确认两个库恢复成功
[root@mysql-a ~]# mysql -hlocalhost -uroot -p'tedu123...A' -e "SHOW DATABASES;"
测试恢复所有库
配置基础环境
[root@localhost ~]# hostnamectl set-hostname mysql
[root@mysql ~]# nmcli connection modify ens33 ipv4.method auto connection.autoconnect yes
[root@mysql ~]# nmcli connection up ens33
配置yum,使用阿里云的镜像站点
[root@localhost ~]# rm -rf /etc/yum.repos.d/*.repo #删除自带的repo文件
[root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo \ https://mirrors.aliyun.com/repo/Centos-7.repo #下载阿里镜像源
构建MySQL服务
将学习环境中的:C-4软件运维\05_医疗项目\HIS医疗项目\mysql8-centos7上传到虚拟机mysql-b的/root/
mysql主机操作
[root@mysql-b ~]# cd /root/mysql8-centos7
[root@mysql-b ~]# yum -y localinstall *.rpm #安装mysql
[root@mysql-b ~]# systemctl start mysqld #启动服务
[root@mysql-b ~]# systemctl enable mysqld #开机运行
[root@mysql-b ~]# ss -utnlp | grep :3306 #查看服务信息
修改初始密码
[root@mysql-b mysql8-centos7]# grep -i password /var/log/mysqld.log #过滤root初始密码
2023-08-26T14:22:39.197619Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: 4afdh9OY6&Ef
mysql> ALTER USER root@"localhost" IDENTIFIED BY "123qqq...A"; #修改登陆密码
[root@mysql ~]# mysql -hlocalhost -uroot -p'123qqq...A' #使用新密码登陆
##测试恢复所有库(注意含有mysql-b操作)#发送all.sql到mysql-b
[root@mysql-a ~]# scp /bak/all.sql 192.168.8.101:/root #确认mysql-b上只有初始库
[root@mysql-b ~]# mysql -hlocalhost -uroot -p'123qqq...A' -e "SHOW DATABASES;"#确认all.sql存在
[root@mysql-b ~]# ls /root/all.sql #恢复所有库
[root@mysql-b ~]# mysql -hlocalhost -uroot -p'123qqq...A' < all.sql #确认库恢复情况
[root@mysql-b ~]# mysql -hlocalhost -uroot -p'123qqq...A' -e "SHOW DATABASES;"#小问题处理(此时依旧使用旧密码登录,由于服务没重启导致还没加载新的mysql.user文件)
[root@mysql-b ~]# systemctl restart mysqld
[root@mysql-b ~]# mysql -hlocalhost -uroot -p'tedu123...A' -e "SHOW DATABASES;"
xtrabackup完全备份与恢复
- xtrabackup一款强大的在线热备份工具
- 备份过程中不锁库表,适合生产环境
- 由专业组织Percona提供(改进MySQL分支)
mysql-a主机操作,安装percona-xtrabackup(libev是依赖包)
[root@mysql-a ~]# yum -y install libev
[root@mysql-a ~]# yum install -y https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.33-27/binary/redhat/7/x86_64/percona-xtrabackup-80-8.0.33-27.1.el7.x86_64.rpm
完全备份
-
命令格式
-
xtrabackup --backup --user=用户名 --password=密码 --databases=“库名”
–target-dir=备份文件的存储目录
-
-
如有报错请执行:OPTIMIZE TABLE 库名.表名;
在mysql-a主机将所有数据库进行备份
[root@mysql-a ~]# mkdir /db_all
[root@mysql-a ~]# xtrabackup --backup --user=root --password="tedu123...A" \
--target-dir=/db_all
将备份目录拷贝至mysql-b
[root@mysql-a ~]# scp -r /db_all root@192.168.8.101:/
完全恢复
步骤如下
1、systemctl stop mysqld #停止数据库服务
2、rm -rf /var/lib/mysql/* #清空数据库目录
3、xtrabackup --prepare --target-dir=/备份目录 #准备恢复数据
4、xtrabackup --copy-back --target-dir=/备份目录 #恢复数据
5、chown -R mysql:mysql /var/lib/mysql #修改所有者和组
6、systemctl start mysqld #启动服务
在mysql-b主机安装软件包
[root@mysql-b ~]# yum -y install libev
[root@mysql-b ~]# yum install -y https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.33-27/binary/redhat/7/x86_64/percona-xtrabackup-80-8.0.33-27.1.el7.x86_64.rpm
恢复数据
[root@mysql-b ~]# rm -rf /var/lib/mysql/* #清空数据库目录
[root@mysql-b ~]# xtrabackup --prepare --target-dir=/db_all #准备恢复数据
[root@mysql-b ~]# xtrabackup --copy-back --target-dir=/db_all #恢复数据
[root@mysql-b ~]# chown -R mysql:mysql /var/lib/mysql
启动服务验证
[root@mysql-b ~]# systemctl restart mysqld
[root@mysql-b ~]# mysql -uroot -ptedu123...A
mysql> SHOW DATABASES; #数据已回复
增量备份
- 增量备份:备份上次备份后,新产生的数据。
- 增量备份时,必须先有一次备份,通常是完全备份
- 例如:周一完全备份 , 周二~周日增量备份
-
增量备份格式
-
xtrabackup --backup --user=用户名 --password=密码 --target-dir=/增量备份目录 \
–incremental-basedir=/上一次备份目录
-
mysql-a新增数据
mysql> CREATE DATABASE game; #创建库
mysql> CREATE TABLE game.t1(id INT,name CHAR(10)); #创建表
mysql> INSERT INTO game.t1 VALUES(1, "zhangsan"); #插入数据
mysql-a增量备份
[root@mysql-a ~]# mkdir /db_firstinc #创建备份目录
[root@mysql-a ~]# xtrabackup --backup --user=root --password='tedu123...A' \
--target-dir=/db_firstinc --incremental-basedir=/db_all #增量备份
[root@mysql-a ~]# scp -r /db_firstinc/ root@192.168.8.101:/ #将增量备份拷贝至备份服务器
增量恢复
- xtrabackup --prepare --apply-log-only --target-dir=目标目录 --user=用户名 --password=密码 #将最新的全量备份恢复到指定的目录
- xtrabackup --prepare --apply-log-only --target-dir=目标目录 --user=用户名 --password=密码 \
--incremental-dir=增量备份目录1 #指的是第一个增量备份文件所在的目录
- systemctl stop mysqld
- rm -rf /var/lib/mysql/*
- xtrabackup --prepare --target-dir=目标目录 --user=root --password=密码
- xtrabackup --copy-back --target-dir=目标目录 --user=用户名 --password=密码 //恢复数据
- chown -R mysql:mysql /var/lib/mysql/
- systemctl start mysqld
mysql-b主机恢复操作
[root@mysql-b ~]# xtrabackup --prepare --apply-log-only --target-dir=/db_all \
--user=root --password='tedu123...A' #将最新的全量备份恢复到指定的目录[root@mysql-b ~]# xtrabackup --prepare --apply-log-only --target-dir=目标目录 \
--user=root --password='tedu123...A' --incremental-dir=/db_firstinc
#将增量备份数据恢复到指定的目录
#--incremental-dir=/db_firstinc指的是第一个增量备份文件所在的目录
[root@mysql-b ~]# systemctl stop mysqld
[root@mysql-b ~]# rm -rf /var/lib/mysql/*
[root@mysql-b ~]# xtrabackup --prepare --target-dir=/db_all \
--user=root --password='tedu123...A' #准备恢复数据
[root@mysql-b ~]# xtrabackup --copy-back --target-dir=/db_all
--user=root --password='tedu123...A' #恢复数据[root@mysql-b ~]# chown -R mysql:mysql /var/lib/mysql/
[root@mysql-b ~]# systemctl start mysqld
总结
- 掌握数据库备份的重要性
- 掌握物理备份、热备的方法
- 掌握数据库备份策略
相关文章:

网络运维Day19
文章目录 环境准备数据备份为什么要备份什么是备份备份到哪里什么时候备份如何备份 完整备份物理备份逻辑备份测试恢复所有库 构建MySQL服务xtrabackup完全备份与恢复完全备份完全恢复增量备份增量恢复 总结 环境准备 IP地址采用自动分配,以自己的为准 可以将之前的…...

颜色标记txt和多根走线【Cadance进阶】
文章目录 前言颜色标记txt多根走线 前言 今天来介绍个基础操作中不常见的,但是非常实用的技巧。第一个是颜色标记,它是与text文件结合,根据text文件中的网络来染色标记的,致力于找出那些特定的走线,或者是查询出现问题…...

你是想被ChatGPT改变,还是改变软件开发的未来?丨IDCF
人工智能技术的发展,正在深刻地改变着我们的生活和工作方式。在软件工程领域,ChatGPT作为一种新兴的人工智能技术,正在逐渐地被应用到软件开发的各个环节中。那么,ChatGPT对每个人的影响是什么呢? 一、对软件开发人员…...

Homography详解在MVSNet中的应用
Homography(单应性变换)是计算机视觉中的一个重要概念,用于描述两个平面之间的透视关系。在图像处理和计算机视觉中,Homography通常表示两个平面之间的投影关系,这种关系可以通过一个3x3的矩阵来表示。 在数学上&…...
linux parted给磁盘分区
概述 通常我们用的比较多的分区工具是fdisk命令,但由于fdisk只支持MBR分区,MBR分区表最大支撑2T的磁盘,所以无法划分大于2T的分区。而parted工具可以划分单个分区大于2T的GPT格式的分区,也可以划分普通的MBR分区。 1.查看磁盘大小…...

大数据毕业设计选题推荐-机房信息大数据平台-Hadoop-Spark-Hive
✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…...

使用 PYTORCH 进行图像风格迁移
一、介绍 本教程介绍如何实现 由 Leon A. Gatys、Alexander S. Ecker 和 Matthias Bethge 开发的神经风格算法。神经风格或神经传输允许您拍摄图像并以新的艺术风格再现它。该算法采用三幅图像,即输入图像、内容图像和风格图像,并将输入更改为类似于内容…...

vscode使用flake8设置单行最长字符限制设置失败的问题
vscode使用flake8设置单行最长字符限制设置失败的问题 问题描述解决方案 问题描述 如图所示,使用flake8单行字数过长,就会有有红色底的波浪线 一般情况下很多教程都会让你在setting.json里面设置 但是我打开我的setting.json,发现我已经进…...

SAP KO22内部订单预算BAPI与BDC
KO22可以为内部订单预先维护预算,以便在后续成本实际产生时进行控制。 使用BAPI进行创建:KBPP_EXTERN_UPDATE_CO SAP note 625613中对该BAPI的使用方式有详细介绍,使用时可进行参考。 年度预算:e_gjahr传值、e_ges置空ÿ…...

K8S篇之实现利用Prometheus监控pod的实时数据指标
一、监控部署 1、将k8s集群中kube-state-metrics指标进行收集,服务进行部署 1.1 pod性能指标(k8s集群组件自动集成) k8s组件本身提供组件自身运行的监控指标以及容器相关的监控指标。通过cAdvisor 是一个开源的分析容器资源使用率和性能特性的…...

智能巡检软件怎么选?企业设备管理需要做什么?
在当今竞争激烈的企业运营环境中,巡检管理的重要性不言而喻。然而,许多企业在执行巡检任务时面临着诸多挑战,如员工执行不到位、缺乏有效的人员监管、漏检误检、安全隐患以及数据整理困难等问题。这些问题如果不能得到妥善解决,不…...

【python】Django——连接mysql数据库
笔记为自我总结整理的学习笔记,若有错误欢迎指出哟~ 【Django专栏】 Django——django简介、django安装、创建项目、快速上手 Django——templates模板、静态文件、django模板语法、请求和响应 Django——连接mysql数据库 Django——连接mysql数据库 连接MySQL数据库…...

北京君正客户应用案例:掌静脉3D人脸猫眼视屏智能锁
凯迪仕在今年4月发布了智能锁旗舰新品K70 Pro Max掌静脉3D人脸猫眼视屏智能锁,随即这款新品也成了行业热议的焦点。凯迪仕每次新品都力求突破精益求精,不仅追求科技感、高级感与品质感,而且赋予科技温度,带来人文化的关怀。K70 Pr…...

人工智能+游戏 会带来什么
“人工智能游戏” 写在前面 随着人类生活水平的日益提高,游戏正在为越来越多的人们带去欢乐。同时,作为21世纪新兴科学技术的人工智能,也正在研究人员的努力下不断向前突破。那么,这两列高速前进的“火车”能否接轨并行呢&#…...

人工智能基础_机器学习030_ElasticNet弹性网络_弹性回归的使用---人工智能工作笔记0070
然后我们再来看elastic-net弹性网络,之所以叫弹性是因为,他融合了L1和L2正则,可以看到 他的公式 公式中有L1正则和L2正则两个都在这个公式中 可以看到弹性网络,在很多特征互相联系的时候,非常有用,比如, 相关性,如果数学好,那么物理也好,如果语文好,那么英语也好 这种联系 正…...
Python算法——平衡二叉树(AVL)
Python中的平衡二叉搜索树(AVL树)算法详解 平衡二叉搜索树(AVL树)是一种自平衡的二叉搜索树,它通过在插入或删除节点时进行旋转操作来保持树的平衡性。在AVL树中,任何节点的两个子树的高度差(平…...

公开可用的API 合集
这是一个开源项目列表,收录了一些公开可用、无需注册或认证即可使用的API接口。 这个项目解决了开发者们在寻找合适的API时遇到的各种困难,如无法快速定位、难以筛选等问题,为他们提供了便捷的一站式查询服务。 项目是“public-apis”&…...

单片机编程原则
多任务编程的概念 方式一:实时操作系统(不建议新手使用) 方式二 :裸机多任务模型 逻辑多任务的基本原理 把三个任务分别分为一个一个的片段 然后先执行任务一的第一个切片 执行第二个任务的第一个片段 执行第三个任务的第一个片…...

开源短剧付费变现小程序源码系统+在线开通会员+在线充值 带完整的搭建教程
说起微短剧,相信大家都不会陌生。相比传统网剧冗长的剧情,微短剧最大的看点,是时长短、高浓缩,顺应了当下用户娱乐时间碎片化趋势。其故事题材多为赘婿、霸道总裁、穿越、重生等看似夸张、无厘头,但却非常“上头”的虚…...
基于Python机器学习、深度学习技术提升气象、海洋、水文领域实践应用能力
Python是功能强大、免费、开源,实现面向对象的编程语言,能够在不同操作系统和平台使用,简洁的语法和解释性语言使其成为理想的脚本语言。除了标准库,还有丰富的第三方库,Python在数据处理、科学计算、数学建模、数据挖…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...

IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...

elementUI点击浏览table所选行数据查看文档
项目场景: table按照要求特定的数据变成按钮可以点击 解决方案: <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...