Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【玩转云数据库】云Mysql数据库物理备份文件还原数据库教程

【玩转云数据库】云Mysql数据库物理备份文件还原数据库教程

原创
作者头像
参谋带个长
发布于 2022-04-29 08:26:48
发布于 2022-04-29 08:26:48
8.1K80
代码可运行
举报
运行总次数:0
代码可运行

说明

腾讯云Mysql云数据库的备份文件分为逻辑备份、物理冷备两种,扩展名均为.xb文件,本教程介绍如何使用物理备份在云服务器上还原数据库的操作流程。

本文主要资料来自于腾讯云官方文档:使用物理备份恢复数据库,本人结合实际操作经验,对文档进行了细化补充,以至于无需刻意学习,只需复制粘贴就可以大概率可以成功还原数据库。

如需通过逻辑备份文件还原数据库,请参考:【玩转云数据库】云Mysql数据库逻辑备份文件还原数据库教程

准备事项

1、CentOS 7.x 64位纯净版云服务器一台,因为物理备份还原是将整个数据库实例全部还原,然后再对单个数据库或表进行操作,所以建议开通一台全新服务器进行操作。(可按量付费开通一台低配服务器,不能在已有数据库实例的服务器上进行操作)

2、FileZilla软件(由于需要对服务器文件进行操作,如不会Vim的同学可以准备这个软件,以方便进行文本处理)

3、Mysql云数据库物理备份文件(从云数据库控制台可以下载物理备份,扩展名为.xb)

4、与云数据库同版本的Mysql源码包,源码包大版本需与云数据库版本相同。比如云数据库为mysql-5.6,那么源码包主版本也需为mysql-5.6,但后面的数字mysql-5.6.41可以不同(如本文演示所用的mysql-5.6.41-linux-glibc2.12-x86_64.tar)

操作步骤

一、安装解包软件

1、由于备份文件先经过 qpress 压缩,后经过 xbstream 打包(xbstream 为 Percona 的一种打包/解包工具),所以先用 xbstream 将其解包。xbstream 工具可以通过添加 Percona 的 yum 源安装。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm

2、由于进行第3操作的时候会出现秘钥验证的问题,所以先将/etc/yum.repos.d/percona-release.repo文件中的gpgcheck=1全部修改为gpgcheck=0,上传覆盖后再进行第3步。

3、安装xtrabackup-24版本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yum install percona-xtrabackup-24

二、将备份文件解包至目标目录

先将下载的Mysql云数据库的物理备份文件重命名为纯英文.xb(如bakup.xb),上传至/root目录,这里使用/data做为还原数据库的目标目录

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
xbstream -x -C /data < ~/bakup.xb

解包结果如下图所示,文件均为.qp结尾的扩展名。

1.jpg
1.jpg

三、解压备份文件

因备份文件经过 quicklz 算法压缩,所以需要进行解压。需 下载 qpress 工具 ,下载之后通过以下命令解出 qpress 二进制文件。(现在命令中qpress-11-linux-x64.tar为文件名,具体以所下载的文件名为准)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tar -xf qpress-11-linux-x64.tar -C /usr/local/bin
 
source /etc/profile

使用 qpress 命令将目标目录下所有以.qp结尾的文件都解压出来。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
xtrabackup --decompress --target-dir=/data

xtrabackup默认在解压缩时不删除原始的压缩文件,若想解压完删除原始的压缩文件,可在上面的命令中加上 (2个-)-remove-original 参数。

2.jpg
2.jpg

四、Prepare 备份文件

备份解压出来之后,需要执行以下命令进行 apply log 操作。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
xtrabackup --prepare  --target-dir=/data

执行后如果结果中包含以下输出,则表示 prepare 成功。

3.jpg
3.jpg

五、修改配置文件

由于存在的版本问题,请将解压文件 /data/backup-my.cnf 中以下参数注释掉(某行前面加#表示注释)。

innodb_checksum_algorithm innodb_log_checksum_algorithm innodb_fast_checksum innodb_page_size innodb_log_block_size redo_log_version

4.jpg
4.jpg

六、源码安装Mysql

1、先安装基本软件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yum -y install numactl.x86_64
 
yum -y install autoconf

2、执行一串命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tar xf mysql-5.6.41-linux-glibc2.12-x86_64.tar -C /usr/local
 
cd /usr/local/
 
mv mysql-5.6.41-linux-glibc2.12-x86_64/ mysql
 
useradd mysql
 
chown -R mysql:mysql mysql/
 
cd /var/log
 
mkdir mariadb
 
cd mariadb/
 
touch mariadb.log
 
cd /usr/local/
 
mysql/scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql
 
echo $?

如果显示0就证明成功了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cp mysql/support-files/mysql.server /etc/init.d/mysqld

service mysqld start

那么此时大概率会报错,提示如下代码

./support-files/mysql.server startStarting MySQL. ERROR! The server quit without updating PID file (/var/lib/mysql/VM_0_10_centos.pid).

修改/etc/my.cnf文件,在mysqld下方添加以下代码,如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[mysqld]
 
datadir=/usr/local/mysql/data
 
socket=/tmp/mysql.sock
 
basedir=/usr/local/mysql
 
port=3306
 
pid=/usr/local/mysql/data/VM_0_10_centos.pid
 
log-error=/usr/local/mysql/data/error.log

其中VM_0_10_centos.pid的就改成报错提示中的pid文件名即可。然后上传覆盖。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cp mysql/support-files/mysql.server /etc/init.d/mysqld  # 提示覆盖选择 y
 
service mysqld start

此时mysql就可以正常启动了,可以登录mysql查看数据库(密码默认为空

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql/bin/mysql -uroot
 
show databases;
5.jpg
5.jpg

七、还原物理备份中的mysql 数据库

1、修改文件属性

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
chown -R mysql:mysql /data

2、启动 mysqld 进程

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
service mysqld stop
 
mysql/bin/mysqld_safe --defaults-file=/data/backup-my.cnf --user=mysql --datadir=/data &

需先将mysqld停止,然后再运行mysqld_safe,否则大概率会报错。mysqld_safe这一步执行后界面会卡住无响应,并且类似于下面的提示信息,此时可按一下回车,进入正常命令界面。

root@VM_0_10_centos ~# 190620 13:46:34 mysqld_safe Logging to ‘/data/VM_0_10_centos.err’.

190620 13:46:34 mysqld_safe Starting mysqld daemon with databases from /data

3、查看mysql进程是否已启动

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ps aux | grep 3306
6.jpg
6.jpg

4、客户端登录 mysql 验证。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql/bin/mysql  -uroot
7.jpg
7.jpg

至此,物理备份还原成功,可以通过phpmyadmin或Navicat等软件进行管理。

八、额外注意事项

恢复完成后,表 mysql.user 中是不包含 TencentDB 中创建的用户,需要新建。

新建用户前请执行以下SQL语句。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
delete from mysql.db where user<>'root' and char_length(user)>0;
delete from mysql.tables_priv where user<>'root' and char_length(user)>0;
flush privileges;

九、修改mysql root密码以提高安全性

上述操作中,mysql 的 root 账号默认密码为空,强烈建议修改root密码以保证数据安全

请执行以下SQL语句。

命令行修改root密码,其中newpassword表示新密码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> UPDATE mysql.user SET password=PASSWORD('newpassword') WHERE User='root';

运行完这行之后会提示下面的信息:

Query OK, 0 rows affected (0.00 sec)

Rows matched: 2 Changed: 0 Warnings: 0

这时候还需要运行下面一句,否则密码不会被修改:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> FLUSH PRIVILEGES;

下面运行结果代表修改成功:

Query OK, 0 rows affected (0.16 sec)

小结

通过以上的操作,就可以恢复完整的数据库实例。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
8 条评论
热度
最新
666666666666666666666666
666666666666666666666666
回复回复点赞举报
666666666666666
666666666666666
回复回复点赞举报
666
666
回复回复点赞举报
666
666
回复回复点赞举报
看看 支持~~
看看 支持~~
回复回复点赞举报
写的很好
写的很好
回复回复点赞举报
学到了
学到了
回复回复点赞举报
来学习
来学习
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
DoS和DDoS攻击[通俗易懂]
DoS (Denial of Service, 拒绝服务)是指阻止或拒绝合法使用者存取网络服务器。造成DoS 的攻击行为被称为DoS攻击,将大量的非法申请封包传送给指定的目标主机,其目的是完全消耗目标主机资源,使计算机或网络无法提供正常的服务。
全栈程序员站长
2022/11/10
8.3K0
DoS和DDoS攻击[通俗易懂]
DDOS攻击攻击种类和原理
不过这3种攻击方法最厉害的还是DDoS,那个DRDoS攻击虽然是新近出的一种攻击方法,但它只是DDoS攻击的变形,它的唯一不同就是不用占领大量的“肉鸡”。这三种方法都是利用TCP三次握手的漏洞进行攻击的。
用户3267951
2018/09/07
4.6K0
DOS攻击手段_ddos攻击原理与防御方法
DDoS是英文Distributed Denial of Service的缩写,意即“分布式拒绝服务”,那么什么又是拒绝服务(Denial of Service)呢?可以这么理解,凡是能导致合法用户不能够访问正常网络服务的行为都算是拒绝服务攻击。也就是说拒绝服务攻击的目的非常明确,就是要阻止合法用户对正常网络资源的访问,从而达成攻击者不可告人的目的。分布式拒绝服务攻击一旦被实施,攻击网络包就会从很多DOS攻击源(俗称肉鸡)犹如洪水般涌向受害主机,从而把合法用户的网络包淹没,导致合法用户无法正常访问服务器的网络资源,因此,拒绝服务攻击又被称之为“洪水式攻击”,常见的DDOS攻击手段有SYN Flood、ACK Flood、UDP Flood、ICMP Flood、TCP Flood、Connections Flood、Script Flood、Proxy Flood等。
全栈程序员站长
2022/11/15
2.2K0
浅谈ddos的测试方式
DOS(denial of service--拒绝服务)攻击的目的是使服务正常功能不可用。不像其他类型的攻击的目的是获取敏感信息,Dos攻击是不会威胁到敏感信息而是使合法用户不能使用服务。有时候Dos在其他攻击中也会存在一定的作用,比如使web应用防火墙拒绝服务,从而绕过防火墙。
信安之路
2018/08/08
2.5K0
浅谈ddos的测试方式
TCP/IP协议常见安全风险及防范办法
1.MAC欺骗 攻击原理:MAC地址欺骗(或MAC地址盗用)通常用于突破基于MAC地址的局域网访问控制,例如在交换机上限定只转发源MAC地址修改为某个存在于访问列表中的MAC地址即可突破该访问限制,而且这种修改是动态的并且容易恢复。还有的访问控制方法将IP地址和MAC进行绑定,目的是使得一个交换机端口只能提供给一位用户的一台主机使用,此时攻击者需要同时修改自己的IP地址和MAC地址去突破这种限制。
德迅云安全--陈琦琦
2024/03/25
1.3K0
【攻击】日蚀攻击,女巫攻击,重放攻击,DDOS攻击的定义?
是针对对等式(或译为点对点)网络的一种攻击类型:攻击者通过使节点从整个网络上消失,从而完全控制特定节点对信息的访问。 防御方法: 以太坊是通过限制主动连接过来的数量来阻止日蚀攻击的。
辉哥
2020/09/25
4.5K0
dos攻击防范措施_属于被动攻击的手段是
  DoS是Denial of Service的简称,即 拒绝服务 ,造成DoS的攻击行为被称为DoS攻击,其目的是使计算机或网络无法提供正常的服务。最常见的DoS攻击有计算机网络带宽攻击和连通性攻击。
全栈程序员站长
2022/11/10
1.3K0
经历锲而不舍的DDOS攻击
从昨晚的18:50分开始,每隔30分钟左右进行10G流量的ddos攻击
黄规速
2022/04/17
6570
经历锲而不舍的DDOS攻击
网络入侵检测系统之Suricata(七)--DDOS流量检测模型
分布式拒绝服务(Distributed Denial of Service,简称DDoS)将多台计算机联合起来作为攻击平台,通过远程连接利用恶意程序,对一个或多个目标发起DDoS攻击,消耗目标服务器性能或网络带宽,从而造成服务器无法正常地提供服务。
于顾而言SASE
2024/03/20
8170
网络入侵检测系统之Suricata(七)--DDOS流量检测模型
DDoS的攻击方法
​ 网络控制消息协议(ICMP)是TCP/IP协议级当中核心之一,用于在网络中发送控制消息,提供可能发生在通信环境中的各种问题反馈。
Mirror王宇阳
2020/11/13
3.4K0
浅析DDOS攻击及防御
如今,信息技术的发展为人们带来了诸多便利,无论是个人社交行为,还是商业活动都离不开网络。但是,网络空间在创造机遇的同时,也带来了威胁,其中 DDoS 就是最具破坏力的攻击。经过这些年的不断发展,它已经成为不同组织和个人的攻击形式之一,用于网络中的勒索、报复,甚至网络战争。
iginkgo18
2021/09/11
1.8K0
防御DDOS攻击方法
那么什么是拒绝服务(Denial of Service)呢?可以怎么理解,凡是能导致合法用户不能正常访问网络服务的行为都算是拒绝服务攻击。也就是说拒绝服务攻击的目的非常明确,就是要阻止合法用户对正常网络的访问,从而达成攻击者不可告人的目的。
紫禁玄科
2022/03/24
5.6K0
防御DDOS攻击方法
通过学习DDoS攻击的方法,教你如何掌握防御DDoS的核心?
在当下互联网社会,防御DDoS的重要性已得到大部分互联网企业的认同。但是有些企业可能还对DDoS攻击不太了解,没有做好相应的防护。其实DDoS的本质就是:利用分布式的客户端,向目标发起大量看上去合法的请求,消耗或者占用大量资源,从而达到拒绝服务的目的。其主要攻击方法有4种:
blublu7080
2021/01/21
1K0
通过学习DDoS攻击的方法,教你如何掌握防御DDoS的核心?
DDoS(分布式拒绝服务)攻击是无解的吗?
DdoS的攻击方式有很多种,最基本的DoS攻击就是利用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务的响应。单一的DoS攻击一般是采用一对一方式的,当攻击目标CPU速度低、内存小或者网络带宽小等等各项指标不高的性能,它的效果是明显的。随着计算机与网络技术的发展,计算机的处理能力迅速增长,内存大大增加,同时也出现了千兆级别的网络,这使得DoS攻击的困难程度加大了-目标对恶意攻击包的"消化能力"加强了不少。这时候分布式的拒绝服务攻击手段(DDoS)就应运而生了。DDoS就是利用更多的傀儡机(肉鸡)来发起进攻,以比从前更大的规模来进攻受害者
4xx.me
2022/06/09
7200
DDoS(分布式拒绝服务)攻击是无解的吗?
如何防御网站被ddos攻击 首先要了解什么是流量攻击
什么是DDOS流量攻击?我们大多数人第一眼看到这个DDOS就觉得是英文的,有点难度,毕竟是国外的,其实简单通俗来讲,DDOS攻击是利用带宽的流量来攻击服务器以及网站。
网站安全专家
2019/07/24
1.7K0
如何防御网站被ddos攻击 首先要了解什么是流量攻击
一种 " 变种 "DDoS 防火墙绕过攻击
分布式拒绝服务攻击(英文意思是Distributed Denial of Service,简称DDoS)是指处于不同位置的多个攻击者同时向一个或数个目标发动攻击,或者一个攻击者控制了位于不同位置的多台机器并利用这些机器对受害者同时实施攻击。由于攻击的发出点是分布在不同地方的,这类攻击称为分布式拒绝服务攻击,其中的攻击者可以有多个。
Yangsh888
2022/03/07
1.2K0
独家 | Fomo 3D 沦陷?为何又是 DDoS攻击?来听听区块链安全大牛的深度解析
据国内多家区块链媒体报道:2018年7月31日晚,多个韩国社区爆出“Fomo 3D被黑客攻击之后停止运营了”传言,据DappRadar上以太坊Dapp数据显示,其中Fomo 3D在24小时内访问量减少21.95%,24小时流量减少38.32%。
区块链大本营
2018/08/15
9080
独家 | Fomo 3D 沦陷?为何又是 DDoS攻击?来听听区块链安全大牛的深度解析
网络ddos和应用层ddos区别
DDoS攻击是由DoS攻击发展而来的,根据攻击原理和方式的区别,可以把DDoS攻击分为两个阶段,即从传统的基于网络层的DDoS攻击和现阶段较为常见的基于应用层的DDoS攻击,这两类攻击方式各有特点,都对网络的安全造成了极大的危害。对于应用层DDoS攻击来说,基于Web服务器的攻击是最常见的。
随心助手
2019/10/15
3.5K0
Dos攻击原理_防止xss攻击方法
Technorati 标签: DoS, 攻击, 网络防御, TCP, SYN_Flood
全栈程序员站长
2022/11/10
1.9K0
Dos攻击原理_防止xss攻击方法
云安全的不同层面可能会出现什么攻击,每层是怎么防范的?
1、ICMP Flood:攻击者使用工具发送大量的伪造源IP的ICMP报文,造成服务器带宽资源被大量占用,给服务器带来较大的负载,影响服务器的正常服务
Ponnie
2022/01/13
6390
推荐阅读
相关推荐
DoS和DDoS攻击[通俗易懂]
更多 >
交个朋友
加入HAI高性能应用服务器交流群
探索HAI应用新境界 共享实践心得
加入腾讯云技术交流站
洞悉AI新动向 Get大咖技术交流群
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验