51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

【最佳实践】MeterSphere 数据库物理迁移(大数据量)

一、背景 {#heading-1}

MeterShere 作为持续接口测试平台,功能涵盖功能、接口、UI、性能测试,在大型的测试团队和项目中会积累大量的测试用例数据及测试报告,随着时间的积累,数据会越来越大,mysqldump 迁移方式的时间成本会越来越高,异常风险也越大,在生产环境有限的升级窗口下,需考虑更加高效、安全的迁移方式。

本文以 MeterSphere V1 外置 mysql5.7 迁移到 V2 外置 mysql8场景为例,介绍如何通过 Rsync 方式实现 Mysql 数据库的物理迁移。

二、规划 {#heading-2}

  1. 数据库在迁移前务必进行备份

  2. 评估并保证磁盘空间充足

  3. 确定原数据库和新数据库的目录保持一致。(mysql 的日志等其它文件目录在修改完配置文件并生效后,会存储在 mysql 的数据库实例里,如果目录不一致,迁移过去之后会导致 mysql 实例中存储的日志路径和实际迁移的目录不一致,需要创建软链接)

  4. 规划好升级窗口,因为物理迁移是直接迁移 mysql 目录,正式开始迁移前,需停止原数据库和新数据库,防止数据库文件有产生读写导致迁移失败。

  5. 确保 mysql 配置文件(my.cnf)关键参数一致,这里主要检查 字符集和 sqlmode

三、迁移过程 {#heading-3}

原数据库(mysql_source):10.50.x.79

新数据库(mysql_dest):10.50.x.11

  1. 暂停 MeterSphere 服务,暂停 mysql_source 和 mysql_dest 的数据库服务。

  2. 配置 Rsync (Rsync 配置可参考:rsync详解)。

  3. 备份 data 和 log 目录

备份 mysql_source上的 data 和 log 目录,防止迁移失败,mysql 无法启动。

cd /mysql/3306/
mv data data-bak
mv log log-bak
  1. 迁移

在 mysql_dest 机器上 执行 Rsync 迁命令迁移 data 和 log 目录,data 和 log 目录分开迁移。

1. rsync -av  --progress ms_sync@10.50.x.79::msbackup /mysql/3306/data --password-file=/etc/rsync.pass --log-file=/data/log/rsync.log
2. rsync -av  --progress ms_sync@10.50.x.79::msbackup /mysql/3306/log --password-file=/etc/rsync.pass --log-file=/data/log/rsync.log
  1. 修改 data 和 log 目录的用户权限

    1. chown -R mysql:mysql data
    2. chown -R mysql:mysql log
  2. 启动 mysql_dest 的 mysql

    启动

    /bin/sh /mysql/3306/base/bin/mysqld_safe --defaults-file=/mysql/3306/etc/my.cnf --user=mysql &

    登录验证

    cd /mysql/3306/base/bin/ && ./mysql -upxxx -pxxx -S/mysql/3306/data/mysql.sock/bin/sh /mysl/3306/base/bin/mysqld_safe --defaults-file=/mysql/3306/etc/my.cnf --user=mysql & ## 登录验证 cd /mysql/3306/basebin/ && ./mysql -upxxx -pxxx -S/mysql/3306/data/mysql.sock

如果是 mysql5.7 升级到 mysql8 ,首次启动后 mysql 会自动升级目录,大概要 10 分钟左右。

7. 修改 MeterSphere 的 /opt/metersphere/.env 中数据库地址(数据库用户名、密码不用修改,迁移目录后 mysql 用户也会被覆盖),启动 MeterSphere ,访问页面进行验证。

赞(0)
未经允许不得转载:工具盒子 » 【最佳实践】MeterSphere 数据库物理迁移(大数据量)