- 最新动态
- 功能总览
- 服务公告
- 产品介绍
- 计费说明
- 快速入门
- 用户指南
- 混合云备份特性指南
- 最佳实践
- API参考
- SDK参考
- 场景代码示例
- 故障排除
-
常见问题
- 概念类
- 计费类
-
备份类
- 备份时,需要停止服务器吗?
- 包含数据库的服务器是否可以备份?
- 如何区分备份是自动备份还是手动备份?
- 备份支持选择磁盘的某个分区进行备份吗?
- 服务器能否跨区域备份?
- 如何通过云服务器备份实现云服务器数据跨区域迁移?
- 可以将两个磁盘的数据备份至一个磁盘上吗?
- 如何同区域同可用区的复制一个磁盘?
- 支持在存储库之间进行备份迁移吗?
- 删除资源后还可以使用备份恢复数据吗?
- 单个资源可以创建多少个备份?
- 删除全量备份后,还可以使用增量备份恢复数据吗?
- 备份时可以终止备份吗?
- 如何减小备份占用空间?
- 如何查看每个备份的大小?
- 如何查看备份中的数据?
- 备份会保存多久?
- 如何对资源进行周期性全备?
- 如何查询自己哪些资源还未配置备份?
- 数据备份时是否对网络带宽有要求?
- 一个存储库绑定多个资源时,备份保留策略如何生效?
- 数据库服务器备份和云数据库备份有什么区别?
- 容量类
- 恢复类
- 策略类
- 优化类
- 其他类
- 视频帮助
- 文档下载
- 通用参考
链接复制成功!
通过自定义脚本实现MySQL一致性备份
本章节以SuSE 11 SP3操作系统下MySQL 5.5单机版为例,介绍如何通过自定义脚本来冻结、解冻MySQL数据库,以实现对于MySQL数据库的数据库备份。
场景介绍
某企业购买了云服务器,并在云服务器中安装了MySQL 5.5数据库用于存放业务数据。随着数据量的增加,之前的崩溃一致性保护已经满足不了RTO、RPO的要求,决定采用应用一致性备份,减小RTO与RPO。
数据准备
准备项 |
说明 |
示例 |
---|---|---|
MySQL用户名 |
连接MySQL数据库时使用的用户名 |
root |
MySQL密码 |
连接MySQL数据库时使用的密码 |
Example@123 |
详细步骤
- 加密MySQL密码,供自定义脚本使用
- 登录MySQL服务器,输入cd /home/rdadmin/Agent/bin/ ,进入Agent目录。
- 执行/home/rdadmin/Agent/bin/agentcli encpwd,回显如下:
Enter password:
输入MySQL密码,并按“Enter”,屏幕上就会打印出加密后的密码,将其复制到剪贴板中。
说明:
冻结解冻脚本中配置的明文密码长度不超过16位,否则配置后密码会被截断,应用一致性备份会失败。
- 执行cd /home/rdadmin/Agent/bin/thirdparty/ebk_user ,进入自定义脚本目录,然后执行vi mysql_freeze.sh,打开MySQL示例冻结脚本。
将下图所示的MYSQL_USER与MYSQL_PASSWORD修改为实际值,其中MYSQL_PASSWORD为步骤1的屏幕输出。
也可以使用sed命令来直接进行修改:
sed -i 's/^MYSQL_PASSWORD=.*/MYSQL_PASSWORD="XXX"/' mysql_freeze.sh mysql_unfreeze.sh ,其中XXX为步骤1中打印出的密码。
此操作会同时修改冻结解冻脚本,所以无需再执行步骤3。
- 执行vi mysql_unfreeze.sh,打开MySQL示例解冻脚本,修改此脚本中的用户名和密码。
mysql_unfreeze.sh与mysql_freeze.sh脚本实现了基本的数据库冻结与解冻操作,如果您在冻结、解冻时有其它额外步骤需要执行,可以自行在其中进行修改。详细说明请参见 通过自定义脚本实现其它Linux应用的一致性备份。
注意:
MySQL的冻结是通过FLUSH TABLES WITH READ LOCK指令来实现的,此指令不会触发bin log刷盘操作,如果开启了bin log,且sync_binlog参数不为1,则可能出现保存的备份映像中部分SQL操作未记录到bin log的情况,如果bin log也需要完整保护,请设置sync_binlog=1。