首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【玩转云数据库】云Mysql数据库物理备份文件还原数据库教程

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

原创
作者头像
参谋带个长
发布于 2022-04-29 08:26:48
发布于 2022-04-29 08:26:48
8.2K80
代码可运行
举报
运行总次数: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
回复回复点赞举报
看看 支持~~
看看 支持~~
回复回复点赞举报
写的很好
写的很好
回复回复点赞举报
学到了
学到了
回复回复点赞举报
来学习
来学习
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
【玩转云数据库】云Mysql数据库逻辑备份文件还原数据库教程
腾讯云Mysql云数据库的备份文件分为逻辑备份、物理冷备两种,扩展名均为.xb文件,本教程主要介绍如何将逻辑备份文件还原为.sql文件。
参谋带个长
2022/04/28
8.8K4
公有云mysql物理备份恢复自建数据库
本文介绍使用XtraBackup工具,将云mysql数据库物理备份恢复到自建数据库
二货哈
2022/05/16
3.3K0
记一次xb数据还原
笔者本职是客户端开发和前端开发,自己也独立开发过网站的后端系统、App的后端系统,目前也在对外正式运行着。
无忧366
2021/09/16
3.7K0
MySQL 云数据库物理备份本地恢复方案
在国内不论是使用阿里云、腾讯云还是华为云的云平台版本的 MySQL 数据库,在遇到数据备份恢复的场景,都会遇到需要使用 Percona XtraBackup 工具进行备份还原的需求。
soulteary
2021/10/13
5.4K1
MySQL 云数据库物理备份本地恢复方案
使用COS实现云数据库MySQL备份文件的多元化管理
云数据库 MySQL(TencentDB for MySQL)是腾讯云基于开源数据库 MySQL 专业打造的高性能分布式数据存储服务,让用户能够在云中更轻松地设置、操作和扩展关系数据库。同时云数据库MySQL集成了数据库的备份功能,可以针对数据库实现数据库的自动数据备份、手动数据备份以及日志备份。
HuiG
2021/03/17
2.5K0
如何备份你的MySQL数据库
数据库通常会在存储一些有价值的信息。因此,在发生事故或硬件故障时,必须具有可靠的备份以防止数据丢失。
圣人惠好可爱
2018/07/20
17.5K0
连载 | 深入浅出理解云数据库,年薪百万DBA之路 · 第四回
为帮助开发者更好的了解和运用数据库,腾讯云数据库团队特出品《深入浅出理解云数据库》系列文章,从数据库的基本概念到云数据库特性及应用,从数据库基础原理知识到腾讯云经典实战案例解读,带你走进云数据库的世界。关注“腾讯云数据库”微信公众号,开启2020年的DB修炼之旅。 第一回请点击:数据库的基本概念和云数据库特性 第二回请点击:云数据库的市场应用及基础原理知识 第三回请点击:云数据库产品特性及应用场景介绍 本章我们会详细介绍腾讯云MySQL的操作流程,如何在控制台创建、管理数据库,如何对腾讯云MySQL进行
腾讯云数据库 TencentDB
2020/02/25
1.6K0
连载 | 深入浅出理解云数据库,年薪百万DBA之路 · 第四回
使用Xtrabackup备份MySQL数据库
Xtrabackup是 Percona公司开发的一款开源的能够对innodb和xtradb数据库引擎进行数据库热备的工具,支持MySQL、Percona server和MariaDB,是目前较为受欢迎的主流MySQL数据库备份工具
yuanfan2012
2019/09/17
2K0
使用Xtrabackup备份MySQL数据库
xtrabackup 实现MySQL数据库备份
mysqldump备份方式是采用逻辑备份,其最大的缺陷就是备份和恢复速度都慢,对于一个小于50G的 数据库而言,这个速度还是能接受的,但如果数据库非常大,那再使用mysqldump备份就不太适合了。 这时就 需要一种好用又高效的工具,xtrabackup就是其中一款,号称免费版的InnoDB HotBackup。 Xtrabackup实现是 物理备份,而且是物理热备 目前主流的有两个工具可以实现物理热备:ibbackup和xtrabackup;ibbackup是商 业软件,需要授权,非常昂贵。而xtrabackup功能比ibbackup还要强大,但却是开源的。因此我们这里就来介 绍xtrabackup的使用。 Xtrabackup提供了两种命令行工具: xtrabackup:专用于备份InnoDB和XtraDB引擎的 数据; innobackupex:这是一个perl脚本,在执行过程中会调用xtrabackup命令,这样用该命令即可以实现备 份InnoDB,也可以备份MyISAM引擎的对象。
小手冰凉
2020/06/18
3.5K0
xtrabackup 实现MySQL数据库备份
bash安装部署MySQL
DBM
2024/04/26
2160
bash安装部署MySQL
MySQL数据备份与恢复(二) -- xtrabackup工具
上一篇介绍了逻辑备份工具mysqldump,本文将通过应用更为广泛的物理备份工具xtrabackup来演示数据备份及恢复的第二篇内容(本文篇幅较长,建议收藏后阅读)。
俊才
2020/04/07
1.1K0
xtrabackup热备和恢复MySQL
热备份的方式也是直接复制数据物理文件,和冷备份一样,但是热备份可以不停机直接复制,一般用于7*24小时不间断的重要核心业务。MySQL的社区版本热备份工具InnoDB Hot Backup是付费的,只能试用30天,商业版才可以永久的使用,
星哥玩云
2022/08/16
1.3K0
云数据备份 | MySQL、SQL Server 数据备份到 COS
随着互联网高速发展,数据安全的重要性日趋明显。数据备份是企业应对系统故障的重要手段。数据备份可以提高系统的高可用性和灾难可恢复性,使用备份还原数据是系统崩溃时提供数据恢复最小代价的最优方案。
云存储
2021/11/05
5.1K0
云数据备份 | MySQL、SQL Server 数据备份到 COS
Mysql备份与还原——xtrabackup
上次我们介绍了采用逻辑备份mysqldump 备份方式,其最大的缺陷就是备份和恢复速度都慢,但如果数据库非常大,那再使用 mysqldump 备份就不太适合了。这时就需要一种好用又高效的工具,xtrabackup 就是其中一款,号称免费版的 InnoDB HotBackup。(mysqldump备份请到L宝宝聊IT公众号中找“mysql备份与还原——mysqldump结合binlog”文章)
L宝宝聊IT
2018/09/29
8K0
Mysql备份与还原——xtrabackup
关于数据库的各种备份与还原姿势详解
上一小节提到了数据备份是指将数据库中数据存储的相关文件进行拷贝,而这些文件有很多,所以让我们来简单认识下MySQL中与数据相关的文件。
端碗吹水
2020/09/23
1.6K0
关于数据库的各种备份与还原姿势详解
数据库热备份神器 - XtraBackup
利用Linux的LVM技术来实现热备份,将MySQL的数据目录放到LVM逻辑卷上,然后通过LVM快照技术备份逻辑卷的内容。第一次备份是全量备份,之后的备份都是增量备份。在还原时,将快照中的数据目录恢复到ySQL的数据目录即可。
端碗吹水
2020/09/23
2.7K1
数据库热备份神器 - XtraBackup
技术分享 | 满足多场景需求的 MySQL 物理备份实践
在 MySQL 日常运维中,备份是一个必不可少的环节,最常用的一般则是 Percona XtraBackup 工具。
爱可生开源社区
2024/09/14
2130
技术分享 | 满足多场景需求的 MySQL 物理备份实践
删库跑路?这篇文章教你如何使用xtraback备份MySQL数据库
一、mysqldump备份方式是采用逻辑备份。最大的缺陷就是备份和恢复的速度都慢,对于一个50G的数据库而言,这个速度还是可以接受的,但是如果数据库非常大,那在使用mysqdump备份就不是太合适了。。
双面人
2019/04/10
6970
删库跑路?这篇文章教你如何使用xtraback备份MySQL数据库
数据库备份和还原详解
问题:会导致备份的数据时间点可能不一致,恢复后的数据时间点不一致,还有可能造成mysql拒绝恢复
dogfei
2020/07/31
2.1K0
4种备份MySQL数据库(基本备份方面问题不大了)
我们试着想一想, 在生产环境中什么最重要?如果我们服务器的硬件坏了可以维修或者换新, 软件问题可以修复或重新安装, 但是如果数据没了呢?这可能是最恐怖的事情了吧, 我感觉在生产环境中应该没有什么比数据跟更为重要. 那么我们该如何保证数据不丢失、或者丢失后可以快速恢复呢?只要看完这篇, 大家应该就能对MySQL中实现数据备份和恢复能有一定的了解。 为什么需要备份数据? 其实在前言中也大概说明了为什么要备份数据, 但是我们还是应该具体了解一下为什么要备份数据 在生产环境中我们数据库可能会遭遇各种各样的不测从而
老七Linux
2018/05/31
3.7K0
推荐阅读
相关推荐
【玩转云数据库】云Mysql数据库逻辑备份文件还原数据库教程
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档