centos7中MySQL备份还原策略

news2024/11/25 15:40:28

目录

一、直接拷贝数据库文件

1.1在shangke主机上停止服务并且打包压缩数据库文件

1.2 在shangke主机上把数据库文件传输到localhost主机上(ip为192.168.33.157)

1.3在localhost主机上停止服务,解压数据库文件

1.4 在localhost主机上开启服务

1.5 测试

二、mysqldump 进行备份

2.1 备份恢复单个数据库

2.2  备份恢复单个表

2.3 备份数据结构

2.4 mysqldump+binlog 增量备份

2.4.1 修改配置文件

2.4.2   模拟凌晨2:00 备份

2.4.3  表里继续插入数据

2.4.4  模拟10点,误删表ceshi表

2.4.5 恢复

三、mydumper备份

3.1 mydumper下载安装

3.2 备份

3.3 模拟数据丢失和恢复

四、lvm快照实现

4.1 添加硬盘

4.2 创建一个逻辑卷

4.3  停止服务备份数据库

4.4 挂载逻辑卷到当前mysql的数据目录里

4.5 将刚刚备份的数据解压到数据目录里

4.6 修改数据目录的权限

4.7 开启服务

4.8 加读锁,创建快照,解锁

4.9 将快照挂载到临时目录里

4.10  备份数据

4.11 卸载快照并删除

4.12 查看数据

 4.13 测试

五、xtrabackup 备份数据库

5.1 下载安装xtrabackup。

5.2 创建用户和授权

5.3 完全备份

5.4 增量备份

5.5 恢复数据

5.6 删除数据恢复数据

补充:


 环境:

 

=========================================================================

一、直接拷贝数据库文件

把主机为shangke的数据库文件备份,然后在去localhost主机上恢复。

1.1在shangke主机上停止服务并且打包压缩数据库文件

systemctl stop mysqld
cd /var/lib/mysql
tar czf /opt/all_db.tar.gz *


1.2 在shangke主机上把数据库文件传输到localhost主机上(ip为192.168.33.157)

scp /opt/all_db.tar.gz 192.168.33.157:/opt


1.3在localhost主机上停止服务,解压数据库文件


1.4 在localhost主机上开启服务

 


1.5 测试

在shangke主机上的数据库中数据如下:

在localhost 主机上的数据库中数据如下:

 
=========================================================================

二、mysqldump 进行备份

2.1 备份恢复单个数据库

[root@shangke ~]# mysqldump -uroot -p123456 --default-character-set=utf8 -B lianxi1 > /tmp/lianxi.$(date +%F).sql

mysql> source /tmp/lianxi1.2023-07-22.sql

备份多个库,-B 数据库1 数据库2 ... 


2.2  备份恢复单个表

#备份,lianxi1是数据库名字,ceshi是lianxi1里面的数据表
mysqldump -uroot -p123456 lianxi1 ceshi >/tmp/lianxi1_ceshi.sql

#恢复
mysql -uroot -p123456 lianxi1 </tmp/lianxi1_ceshi.sql


2.3 备份数据结构

mysqldump -uroot -p123456 -d lianxi1 >/tmp/lianxi1.sql

mysql -uroot -p123456 lianxi1</tmp/lianxi1.sql


2.4 mysqldump+binlog 增量备份

2.4.1 修改配置文件

前提:开启bin-log
 vim /etc/my.cnf
            
[mysqld]
log_bin=mysql-bin
server_id=158     ----》server_id一般是IP的最后一段
            
重启mysqld:systemctl restart mysqld


2.4.2   模拟凌晨2:00 备份

mysqldump -uroot -p123456 lianxi1 ceshi >/tmp/lianxi1_ceshi.sql


2.4.3  表里继续插入数据

mysql -uroot -p123456 -e "insert into lianxi1.ceshi values('xiaohong'),('xiaohua')"


2.4.4  模拟10点,误删表ceshi表

 mysql -uroot -p123456 -e "drop table lianxi1.ceshi"


2.4.5 恢复

(1)

检查全备后的所有binlog
# ls -lrt /var/lib/mysql/mysql-bin.*

立即刷新并备份出binlog
mysqladmin -uroot -p flush-logs

找到新插入数据的binlog日志

 (2)用mysqlbinlog  命令查看,进行确认。

#注意5.7版本,insert语句已经加密,默认看不到,查看时加上选项 --base64-output=DECODE-ROWS -vv

[root@shangke ~]# mysqlbinlog /var/lib/mysql/mysql-bin.000002 --base64-output=DECODE-ROWS -vv

(3)将日志复制到新目录

(4)寻找时间

从binlog日志中找到插入数据的开始时间开始节点,结束时间结束节点

(5)提取记录(基于时间)

[root@shangke back]# mysqlbinlog mysql-bin.000002 --start-datetime="2023-07-22 12:02:17" --stop-datetime="2023-07-22 12:02:49" -r time.sql

 

 注:mysqlbinlog mysql-bin.000002 --start-position=340 --stop-position=490 -r pos1.sql 是基于节点
 

(6)恢复凌晨备份

 (7)恢复增量备份

注意:备份完了一定要检查备份的数据内容,看看是否有数据,如果备份的数据是无效的就很麻烦。

=========================================================================

三、mydumper备份

3.1 mydumper下载安装

下载资源:mydumper-0.14.5-3.el7.x86-64资源-CSDN文库

安装:


3.2 备份


3.3 模拟数据丢失和恢复

=========================================================================

四、lvm快照实现

4.1 添加硬盘


4.2 创建一个逻辑卷


4.3  停止服务备份数据库


4.4 挂载逻辑卷到当前mysql的数据目录里


4.5 将刚刚备份的数据解压到数据目录里

 这时候就会把解压的所有数据保存到/dev/mysql/mysql_data设备上。


4.6 修改数据目录的权限


4.7 开启服务


4.8 加读锁,创建快照,解锁

给数据库加读锁、给mysql的数据库所在的逻辑卷创建快照、解锁数据库这些操作需要在一个会话完成。

 echo "flush tables with read lock; system lvcreate -n lv_mysql_s -L 500M -s /dev/mysql/mysql_data;unlock tables;" |mysql -uroot -p123456

4.9 将快照挂载到临时目录里

mkdir /mnt/mysql && mount /dev/mysql/mysql_data /mnt/mysql

如果没有rsync命令需要下载


4.10  备份数据

mkdir /backup && rsync -av /mnt/mysql/ /back


4.11 卸载快照并删除

umount /mnt/mysql && lvremove /dev/mysql/mysql_data 


4.12 查看数据

 4.13 测试

=========================================================================

五、xtrabackup 备份数据库

5.1 下载安装xtrabackup。

网址:Software Downloads - Percona

安装

yum localinstall percona-xtrabackup-24-2.4.8-1.el7.x86_64.rpm -y


5.2 创建用户和授权


5.3 完全备份

innobackupex --user=bkpuser --password=123456 --no-timestamp /db_bak/full_`date +%F`

 

  

--no-timestamp 参数可以不会生成时间戳 

--apply-log的作用是通过回滚未提交的事务及同步已经提交的事务至数据文件使数据文件处于一致性状态。


5.4 增量备份

在以上完全备份的基础上,开始新增加数据。

 备份新增加的数据

 

5.5 恢复数据

5.6 删除数据恢复数据

 

=========================================================================

补充:

1、完全备份、差异备份、增量备份

完全备份、增量备份、差异备份 (从数据收集来分)
完全备份:备份全部数据;
增量备份:仅备份上次完全备份或增量备份以后变化的数据;
差异备份:仅备份上次完全备份以来变化的数据;

如图,白色是完全备份,黄色部分是增量备份, 蓝色部分也是增量备份,黄色+蓝色是差异备份。


2、my.cnf文件

在my.cnf文件中,mysqld部分常用的字段有:

datadir:指定MySQL数据文件的存储路径。
port:指定MySQL服务器监听的端口号。
bind-address:指定MySQL服务器绑定的IP地址。
socket:指定MySQL服务器的套接字文件路径。
character-set-server:指定MySQL服务器的默认字符集。
collation-server:指定MySQL服务器的默认排序规则。
max_connections:指定MySQL服务器允许的最大连接数。
key_buffer_size:指定MySQL服务器使用的索引缓冲区大小。
innodb_buffer_pool_size:指定InnoDB存储引擎使用的缓冲池大小。
query_cache_size:指定查询缓存的大小。
log_error:指定错误日志文件的路径。
slow_query_log:指定是否启用慢查询日志。
log_slow_queries:指定慢查询日志文件的路径。
log_bin:指定是否启用二进制日志。
binlog_format:指定二进制日志的格式。

basedir : mysql的安装目录和解压目录是两个概念。
这些是常用的字段,根据实际需求可以在my.cnf文件中进行配置


3、如果在my.cnf 中删除log_bin 和server_id  字段之后再添加重启服务发现失败.

可能是因为日志文件冲突:如果在删除log_bin配置项后,MySQL已经生成了一些binlog日志文件,再重新添加log_bin配置项时,可能会导致日志文件冲突。在重新添加log_bin配置项之前,可以尝试删除已生成的binlog日志文件,然后再启动MySQL服务。

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

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

相关文章

利用@Excel实现复杂表头导入

EasyPoi导入 <a-upload name"file" :showUploadList"false" :multiple"false" :headers"tokenHeader" :action"importExcelUrl"change"handleImportExcel"><a-button type"primary" icon&quo…

【软件测试】如何选择回归用例

目录 如何在原始用例集中挑选测试用例 具体实践 总结 本文讨论一下在回归测试活动中&#xff0c;如何选择测试用例集。 回归测试用例集包括基本测试用例集&#xff08;原始用例&#xff09;迭代新增测试用例集&#xff08;修复故障引入的用例和新增功能引入的用例集&#xf…

洛必达法则和分部积分的应用之计算数学期望EX--概率论浙大版填坑记

如下图所示&#xff0c;概率论与数理统计浙大第四版有如下例题&#xff1a; 简单说就是&#xff1a;已知两个相互独立工作电子装置寿命的概率密度函数&#xff0c;将二者串联成整机&#xff0c;求整机寿命的数学期望。 这个题目解答中的微积分部分可谓是相当的坑爹&#xff0c;…

【1++的C++初阶】之适配器

&#x1f44d;作者主页&#xff1a;进击的1 &#x1f929; 专栏链接&#xff1a;【1的C初阶】 文章目录 一&#xff0c;什么是适配器二&#xff0c;栈与队列模拟实现三&#xff0c;优先级队列四&#xff0c;reverse_iterator 一&#xff0c;什么是适配器 适配器作为STL的六大组…

【高阶数据结构】跳表

文章目录 一、什么是跳表二、跳表的效率如何保证&#xff1f;三、skiplist的实现四、skiplist跟平衡搜索树和哈希表的对比 一、什么是跳表 skiplist本质上也是一种查找结构&#xff0c;用于解决算法中的查找问题&#xff0c;跟平衡搜索树和哈希表的价值是 一样的&#xff0c;可…

Windows环境Docker安装

目录 安装Docker Desktop的步骤 Docker Desktop 更新WSL WSL 的手动安装步骤 Windows PowerShell 拉取&#xff08;Pull&#xff09;镜像 查看已下载的镜像 输出"Hello Docker!" Docker Desktop是Docker官方提供的用于Windows的图形化桌面应用程序&#xff0c…

区间预测 | MATLAB实现QRBiLSTM双向长短期记忆神经网络分位数回归多输入单输出区间预测

区间预测 | MATLAB实现QRBiLSTM双向长短期记忆神经网络分位数回归多输入单输出区间预测 目录 区间预测 | MATLAB实现QRBiLSTM双向长短期记忆神经网络分位数回归多输入单输出区间预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 区间预测 | MATLAB实现QRBiLSTM…

odoo16 用好计量单位中的激活功能

odoo16 用好计量单位中的激活功能 根据国内常用&#xff0c;把不常用的单位去除&#xff0c;删除不了&#xff0c;提示已用&#xff0c;其实不用删除&#xff0c;每个单位后有个激活功能&#xff0c;选一下就可以了&#xff0c;显示成整洁的界面了 第一次用时&#xff0c;小伙伴…

解决spring cloud 中使用spring security全局异常处理器失效

写auth认证模块实现忘记密码与注册功能时&#xff0c;用异常抛出&#xff0c;全局异常处理器无法捕获。 无法进行异常捕捉 解决方案&#xff1a;使用WebSecurityConfigurerAdapter.configure中http实现自定义异常&#xff1a; EnableWebSecurity EnableGlobalMethodSecurity(…

87、springcloud核心组件及其作用

spring Eureka: 服务注册与发现 注册:&#xff1a;每个服务都向Eureka登记自己提供服务的元数据&#xff0c;包括服务的ip地址、端口号、版本号、通信协议等 eureka将各个服务维护在了一个服务清单中 (双层Map&#xff0c;第一层key是服务名&#xff0c;第二层key是实例名&…

macOS 源码编译 qpress

╰─➤ git clone https://github.com/PierreLvx/qpress.git ╰─➤ cd qpress ╰─➤ make g -O3 -o qpress -x c quicklz.c -x c qpress.cpp aio.cpp utilities.cpp -lpthread -Wall -Wextra -Werror ╰─➤ sudo make install …

Vue--》打造个性化医疗服务的医院预约系统(三)

今天开始使用 vue3 + ts 搭建一个医院预约系统的前台页面,因为文章会将项目的每一个地方代码的书写都会讲解到,所以本项目会分成好几篇文章进行讲解,我会在最后一篇文章中会将项目代码开源到我的GithHub上,大家可以自行去进行下载运行,希望本文章对有帮助的朋友们能多多关…

Java基础小知识(待续)

类型转换、ASCII码、除法取余、三元表达式 long x 100;//int->long自动类型转换&#xff08;隐式) 1&#xff0e;特点:代码不需要进行特殊处理&#xff0c;自动完成。2&#xff0e;规则:数据范围从小到大。double y 2.5F;//2.5 float->double自动类型转换&#xff08…

pyqt5-Ctrl+鼠标滚轮实现文本区文字大小调整

技术简介 在 PyQt5 中&#xff0c;你可以使用 QTextEdit 的 wheelEvent 方法和 QKeyEvent 的 key() 方法来检测 Ctrl 键和鼠标滚轮事件&#xff0c;从而实现按下 Ctrl 键并滚动鼠标滚轮时&#xff0c;调整 QTextEdit 的字体大小。 这个示例中&#xff0c;我们创建了一个窗口&am…

模板方法模式(java)

目录 结构 案例 代码实现 抽象类 具体子类 测试类 优缺点 优点 缺点 结构 模板方法&#xff08;Template Method&#xff09;模式包含以下主要角色&#xff1a; 抽象类&#xff08;Abstract Class&#xff09;&#xff1a;负责给出一个算法的轮廓和骨架。它由一个模板…

基于SPDK-vhost的云原生Kubevirt虚拟化存储IO的优化方案

摘要 本文主要介绍针对云原生kubernetes虚拟化IO的应用场景&#xff0c;在Kubevirt中引入SPDK-vhost的支持&#xff0c;来加速虚机中IO存储性能。同时基于Intel开源的Workload Service Framework[1]平台集成部署一套端到端虚拟化IO的应用场景做基本的性能对比测试。 云原生Kube…

Failed to load response data:No data found for resource with given identifier

前言 关于跨域的另一种解释 前端Ajax访问后端&#xff0c;表单提交&#xff0c;有一个接口报错&#xff0c;其他都没问题 网上看了很多案例方法&#xff0c;均不适用&#xff1b;早上改代码过程中&#xff0c;改好了&#xff0c;话不多说&#xff0c;上原因 原因 提前关闭页…

CentOS7系统下Docker容器基于TensorFlow测试GPU

前言 当基于nvidia gpu开发的docker镜像在实际部署时&#xff0c;需要先安装nvidia docker。安装nvidia docker前需要先安装原生docker compose 1. CentOS7安装docker详细教程 安装docker 1. Docker 要求 CentOS 系统的内核版本高于 3.10 &#xff0c;查看本页面的前提条件来验…

辅助笔记-linux新增硬盘

linux新增硬盘 文章目录 linux新增硬盘步骤1&#xff1a;添加硬盘步骤2&#xff1a;对硬盘进行分区步骤3&#xff1a;对硬盘分区进行格式化步骤4&#xff1a;将硬盘分区挂载到目录上步骤5&#xff1a;设置“永久挂载” 本文主要参考B站视频“P59_韩顺平Linux_增加磁盘应用实例”…

IDEA: 将第三方依赖打入jar包

文章目录 一、添加自定义的jar包到lib目录下二、将自定义依赖包打入jar包方式1、使用springboot自带的插件 一、添加自定义的jar包到lib目录下 参考往期文章&#xff1a;IDEA中Java项目创建lib目录(添加依赖jar包代替maven依赖) 二、将自定义依赖包打入jar包 方式1、使用spr…