探索MySQL-Cluster奥秘系列之物理备份(14)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 上一小节,我们学习了如何对于MySQL-Cluster集群环境进行逻辑备份,在这一小节中,我们则来看看如何进行物理备份,其实对于逻辑备份和物理备份而言,这两种备份方式都很重要,但是在实际的工作环境中,由于我们接触的环境数据量都比较大,所以使用物理备份更为合适些。

MySQL Cluster 集群环境下的业务数据,采用了分布式的方式存储在数据节点上的,在这种架构下因为MySQL Cluster 中存储的数据是分散存放在多个数据节点上的,所以我们没办法采用传统的 MySQL 物理备份方式(传统的备份方式如 XtraBackup)来进行备份。不过在 MySQL Cluster 集群环境中的管理节点上,集成了对整个集群环境下业务数据的物理备份能。

我们可以先看一下管理节点上的帮助信息。

[mysql@mysql03 mydata]$ ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> help
 NDB Cluster -- Management Client -- Help
HELP Print help text
HELP COMMAND Print detailed help for COMMAND(e.g. SHOW)
SHOW Print information about cluster
CREATE NODEGROUP <id>,<id>… Add a Nodegroup containing nodes
DROP NODEGROUP <NG> Drop nodegroup with id NG
START BACKUP [NOWAIT | WAIT STARTED | WAIT COMPLETED]
START BACKUP [<backup id>] [NOWAIT | WAIT STARTED | WAIT COMPLETED]
START BACKUP [<backup id>] [SNAPSHOTSTART | SNAPSHOTEND] [NOWAIT | WAIT STARTED | WAIT COMPLETED]
 Start backup (default WAIT COMPLETED,SNAPSHOTEND)
ABORT BACKUP <backup id> Abort backup
SHUTDOWN Shutdown all processes in cluster
PROMPT [<prompt-string>] Toggle the prompt between string specified
 or default prompt if no string specified
CLUSTERLOG ON [<severity>] … Enable Cluster logging
CLUSTERLOG OFF [<severity>] … Disable Cluster logging
CLUSTERLOG TOGGLE [<severity>] … Toggle severity filter on/off
CLUSTERLOG INFO Print cluster log information
<id> START Start data node (started with -n)
<id> RESTART [-n] [-i] [-a] [-f] Restart data or management server node
<id> STOP [-a] [-f] Stop data or management server node
<id> NODELOG DEBUG ON Enable Debug logging in node log
<id> NODELOG DEBUG OFF Disable Debug logging in node log
ENTER SINGLE USER MODE <id> Enter single user mode
EXIT SINGLE USER MODE Exit single user mode
<id> STATUS Print status
<id> CLUSTERLOG {<category>=<level>}+ Set log level for cluster log
PURGE STALE SESSIONS Reset reserved nodeid's in the mgmt server
CONNECT [<connectstring>] Connect to management server (reconnect if already connected)
<id> REPORT <report-type> Display report for <report-type>
QUIT Quit management client
<severity> = ALERT | CRITICAL | ERROR | WARNING | INFO | DEBUG
<category> = STARTUP | SHUTDOWN | STATISTICS | CHECKPOINT | NODERESTART | CONNECTION | INFO | ERROR | CONGESTION | DEBUG | BACKUP | SCHEMA
<report-type> = BACKUPSTATUS | MEMORYUSAGE | EVENTLOG
<level> = 0 - 15
<id> = ALL | Any database node id
For detailed help on COMMAND, use HELP COMMAND.

从上面的帮助信息中,可以清晰地看到,在 ndb_mgm 控制台中可以实现对业务数据的备份。具体如何操作呢?

如何进行物理备份

最简单的备份命令,可以直接使用 start backup 命令来调起对集群中数据的备份任务,如下面代码所示:

ndb_mgm> start backup;
Connected to Management Server at: localhost:1186
Waiting for completed, this may take several minutes
Node 3: Backup 1 started from node 1
Node 3: Backup 1 started from node 1 completed
 StartGCP: 69133 StopGCP: 69136
 #Records: 2070 #LogRecords: 0
 Data: 52644 bytes Log: 0 bytes

当看到 completed 字样时,说明备份任务完成了,但是备份好的数据存储在哪里了呢?

其实对于 MySQL Cluster 集群环境下的数据备份,由于其原生数据存放在数据节点上,为了保证备份任务的高效执行,所以备份好的数据同样存储在了相应的数据节点上。所以我们可以在数据节点上找到刚才备份作业生成的备份数据。

[mysql@mysql06 BACKUP-1]$ cd /mysql/mydata/
[mysql@mysql06 mydata]$ ls
BACKUP  ndb_2_fs  ndb_2_out.log  ndb_2.pid
[mysql@mysql06 mydata]$ cd BACKUP/
[mysql@mysql06 BACKUP]$ ls
BACKUP-1
[mysql@mysql06 BACKUP]$ cd BACKUP-1/
[mysql@mysql06 BACKUP-1]$ ls
BACKUP-1-0.2.Data  BACKUP-1.2.ctl  BACKUP-1.2.log
[mysql@mysql07 BACKUP-1]$ ls -l /mysql/mydata/BACKUP/BACKUP-1/
total 56
-rw-rw-r-- 1 mysql mysql 26248 Mar 10 16:53 BACKUP-1-0.3.Data
-rw-rw-r-- 1 mysql mysql 23312 Mar 10 16:53 BACKUP-1.3.ctl
-rw-rw-r-- 1 mysql mysql    52 Mar 10 16:53 BACKUP-1.3.log

当执行了数据备份后,会在每个数据节点上自动创建目录 $datadir/BACKUP,备份好的数据默认就存储在这个目录下。

其实在 BACKUP 目录下我们可以看到,还存在一个名为 BACKUP-1 的目录,这个目录名字的含义是当前目录下存储的是第一次备份作业生成的备份数据。如果再执行一次备份任务后,会在$datadir/BACKUP 目录下生成一个名字为 BACKUP-2 的目录。

接下来,我们来看下具体生成的备份数据。在BACKUP-1目录下存在以下三个文件。

[mysql@mysql06 BACKUP-1]$ ls
BACKUP-1-0.2.Data  BACKUP-1.2.ctl  BACKUP-1.2.log
  • ctl 文件是存储着数据库中表或者其他对象的元数据信息。
  • data 文件是存储着数据库中实际备份的数据信息。
  • log 文件时存储着已经提交的事务记录。

以上是关于 MySQL Cluster 集群环境中数据备份操作方面的讲解。接下来,为了全面掌握 MySQL Cluster的备份作业调度,需要了解 start backup 备份命令可能使用到的参数。

比如在工作中 MySQL Cluster 集群环境中存储的数据比较大,备份作业需要耗时 30 分钟才可以执行完毕,但是在这 30 分钟的时间里,MySQL Cluster 里的数据还是动态变化的。这里存在一个问题,就是备份好的数据是 30 分钟前备份作业开始时的数据,还是30分钟备份结束时的数据呢?这就要在执行备份命令时添加一些其他参数来控制了。

ndb_mgm 控制台中的相关参数

我们在对 MySQL Cluster 集群环境中的数据进行备份时,常用到的参数有两类:wait_option和snapshot_option。

wait_option:

  • wait started 参数表示一旦备份开始,就把命令行控制交给用户。
  • notwait 参数表示用户从执行备份命令到结束,就把控制权返回给用户。
  • wait completed 参数表示需要等备份全部结束才把控制权交还给用户。在执行备份命令时,如果什么参数都不加,默认的选项是 wait completed。

snapshot_option:

  • snapshotstart 参数表示备份文件的内容同开始备份时的数据库快照一致。
  • snapshotend 参数表示备份文件的内容同备份结束时的数据库快照一致。在执行备份命令时,如果什么参数都不加,默认的选项是 snapshotend。

好了,以上就是 MySQL Cluster 集群环境下业务数据的物理备份方面内容的讲解。在工作中,数据的备份是至关重要的,大家要多多练习,有了有效的数据备份,才可以当数据库环境出现了意外故障时进行及时数据恢复,而关于数据恢复方面的内容,我们会在下一小节中进行详细讲解和演示。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
SQL 关系型数据库 MySQL
在Linux中,如何备份和恢复MySQL数据库?
在Linux中,如何备份和恢复MySQL数据库?
|
1月前
|
SQL 数据可视化 关系型数据库
MySQL 备份可视化巡检系统
MySQL 备份可视化巡检系统
|
1月前
|
SQL 存储 关系型数据库
MySQL备份:mydumper 备份恢复工具生产实战
MySQL备份:mydumper 备份恢复工具生产实战
|
1月前
|
安全 关系型数据库 MySQL
揭秘MySQL海量数据迁移终极秘籍:从逻辑备份到物理复制,解锁大数据迁移的高效与安全之道
【8月更文挑战第2天】MySQL数据量很大的数据库迁移最优方案
214 17
|
29天前
|
存储 关系型数据库 MySQL
MySQL备份与恢复
MySQL备份与恢复
45 0
|
29天前
|
关系型数据库 MySQL Shell
分享一篇mysql数据库备份脚本
分享一篇mysql数据库备份脚本
21 0
|
1月前
|
SQL 关系型数据库 MySQL
【MySQL核心】MySQL无法启动?批量恢复MySQL 物理文件-拯救即将跑路的你
【MySQL核心】MySQL无法启动?批量恢复MySQL 物理文件-拯救即将跑路的你
|
1月前
|
关系型数据库 MySQL Shell
MySQL 备份:从mysqldump全备中 匹配出某几个表
MySQL 备份:从mysqldump全备中 匹配出某几个表
|
1月前
|
关系型数据库 MySQL
MySQL——增量备份和全量备份
MySQL——增量备份和全量备份
45 0
|
2月前
|
SQL 关系型数据库 MySQL
Navicate,数据库,Mysql,改表,4月29日Finished - Unsuccessfully,导出数据不妨,右键,备份一下Mysql数据库的内容,你想导入和导出数据不如,用查询的方式去做
Navicate,数据库,Mysql,改表,4月29日Finished - Unsuccessfully,导出数据不妨,右键,备份一下Mysql数据库的内容,你想导入和导出数据不如,用查询的方式去做