MySQL备份恢复迁移

更新时间:

概述

本文主要介绍使用阿里云ECS实例搭建MySQL时,备份恢复迁移相关的思路以及方法。

详细信息

重要

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。

  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。

  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。

请根据现场实际情况,参考以下对应的解决方案。

备份恢复

mysqldump

具体可参考:MySQL官方文档

也可参考:mysqldump+二进制日志备份恢复

xtrabackup

具体可参考文档:xtrabackup热备mysql

迁移

mysqldump

  1. 使用mysqldump导出自建数据库的数据、存储过程、触发器和函数。导出期间请勿进行数据更新,耐心等待导出完成。

    在Linux命令行下导出自建数据库的数据,命令如下:

    mysqldump -h <服务器IP地址> -u <用户名> -p --opt --default-character-set=utf8 --hex-blob <自建数据库名> --skip-triggers --skip-lock-tables > /tmp/<自建数据库名>.sql

    在Linux命令行下导出存储过程、触发器和函数,命令如下:

    mysqldump -h <服务器IP地址> -u <用户名> -p --opt --default-character-set=utf8 --hex-blob <自建数据库名> -R | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' > /tmp/<自建数据库名>Trigger.sql
  2. 将导出的两个文件上传到ECS实例上,本例路径为/tmp。

    20230922105434.jpg

  3. 将导出的文件导入到目标实例中,命令如下:

mysql -h <实例连接地址> -P <实例端口> -u <实例账号> -p <数据库名称> < /tmp/<自建数据库名>.sql
mysql -h <实例连接地址> -P <实例端口> -u <实例账号> -p <数据库名称> < /tmp/<自建数据库名>Trigger.sql

拷贝物理文件

  1. 展示MySQL路径。

    show global variables like "%datadir%";
  2. 对文件进行压缩。

    tar -zcvf data.tar.gz sell.sql #具体.sql文件以现场环境为准
  3. 通过scp下载文件。

    scp <用户名>@<服务器IP地址>:<文件路径>data.tar.gz
  4. 解压。

    tar -zxvf data.tar.gz
  5. 使用cpmv等命令拷贝data文件到目标服务器对应的MySQL文件夹下。

  6. 修改权限。

    chown -R mysql:mysql . #需要切换到对应的MySQL文件夹下
  7. 启动或重启对应数据库服务。

    systemctl restart mysqld 

DTS迁移

具体可参考:从通过专线、VPN网关或智能接入网关接入的自建MySQL迁移至RDS实例(将目标端RDS更换为ECS上的MySQL实例即可)。