通过自定义脚本实现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。
相关文档
意见反馈
文档内容是否对您有帮助?
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨