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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
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 集群环境下业务数据的物理备份方面内容的讲解。在工作中,数据的备份是至关重要的,大家要多多练习,有了有效的数据备份,才可以当数据库环境出现了意外故障时进行及时数据恢复,而关于数据恢复方面的内容,我们会在下一小节中进行详细讲解和演示。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
10天前
|
存储 关系型数据库 MySQL
在CentOS 8.x上安装Percona Xtrabackup工具备份MySQL数据步骤。
以上就是在CentOS8.x上通过Perconaxtabbackup工具对Mysql进行高效率、高可靠性、无锁定影响地实现在线快速全量及增加式数据库资料保存与恢复流程。通过以上流程可以有效地将Mysql相关资料按需求完成定期或不定期地保存与灾难恢复需求。
57 10
|
3月前
|
存储 关系型数据库 MySQL
【赵渝强老师】使用select...into outfile语句备份MySQL
本文介绍了MySQL中使用`SELECT...INTO OUTFILE`语句将表数据导出为文本文件的方法。通过示例演示了如何备份员工表(emp)的数据,包括创建存储目录、设置权限、配置参数`secure_file_priv`以及解决相关错误的过程。字段分隔符和行终止符可自定义,确保数据格式符合需求。最后展示了备份文件的内容,验证操作成功。
223 36
|
6月前
|
关系型数据库 MySQL Shell
MySQL 备份 Shell 脚本:支持远程同步与阿里云 OSS 备份
一款自动化 MySQL 备份 Shell 脚本,支持本地存储、远程服务器同步(SSH+rsync)、阿里云 OSS 备份,并自动清理过期备份。适用于数据库管理员和开发者,帮助确保数据安全。
|
3月前
|
存储 SQL 关系型数据库
【赵渝强老师】使用mysqldump备份MySQL
本文介绍了 MySQL 自带的逻辑备份工具 mysqldump 的使用方法。通过 mysqldump,可以将数据库中的数据转换为对应的 SQL 插入语句,便于备份和还原。文章详细说明了如何备份所有数据库、指定数据库及特定表,排除某些表不备份的操作,以及删除数据库后如何通过备份文件恢复数据。同时提供了视频讲解和具体命令示例,帮助用户更好地理解和应用该工具。
157 5
|
3月前
|
存储 SQL 关系型数据库
【赵渝强老师】使用mydumper备份MySQL
本文介绍了使用mydumper工具进行MySQL数据库备份与恢复的操作方法。相比单线程工作的mysqldump,mydumper支持多线程,速度提升可达10倍。其功能包括事务性表快照、快速压缩、导出binlog等,并提供详细的参数说明和操作步骤。文章通过实例演示了安装mydumper、创建存储目录、全库备份、指定数据库及表备份、删除数据库以及使用myloader恢复数据的完整流程,并附带视频讲解,帮助用户更好地理解和应用该工具。
|
5月前
|
关系型数据库 MySQL Linux
在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾
以上就是在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾的步骤。这个过程就像是一场接力赛,数据从MySQL数据库中接力棒一样传递到备份文件,再从备份文件传递到其他服务器,最后再传递回MySQL数据库。这样,即使在灾难发生时,我们也可以快速恢复数据,保证业务的正常运行。
248 28
|
5月前
|
存储 关系型数据库 MySQL
利用Cron表达式实现MySQL数据库的定时备份
以上就是如何使用Cron表达式和mysqldump命令实现MySQL数据库的定时备份。这种方法的优点是简单易用,而且可以根据需要定制备份的时间和频率。但是,它也有一些限制,例如,它不能备份MySQL服务器的配置文件和用户账户信息,也不能实现增量备份。如果需要更复杂的备份策略,可能需要使用专门的备份工具或服务。
119 15
|
5月前
|
安全 关系型数据库 MySQL
MySQL8使用物理文件恢复MyISAM表测试
MySQL8使用物理文件恢复MyISAM表测试
80 0
|
10月前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
580 3
|
10月前
|
监控 关系型数据库 MySQL
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
290 3

推荐镜像

更多