美文网首页
利用innobackupex 将线上数据 转移到 测试环境

利用innobackupex 将线上数据 转移到 测试环境

作者: 弹猪 | 来源:发表于2018-06-29 15:20 被阅读0次

参考 https://qizhanming.com/blog/2017/05/10/install-percona-xtrabackup-on-centos-7
https://my.oschina.net/nox/blog/1498936

机器DB A 是正式数据库,数据转移到机器DB T,供测试用。 环境都是

centos7 和 mysql5.6

工具

docker 和 innobackupex 安装过程不重要,忽略

第一步备份DB A,my.cnf会告诉innobackupex 从datadir目录拷贝数据,/var/lib/mydata是备份目录

innobackupex --defaults-file=/etc/my.cnf --user=XXX  --password=XXX /var/lib/mydata

显示completed OK!后,/var/lib/mydata会有一个带时间的目录,里面就是该时间点的数据, 加上参数--no-timestamp就不会创建这个时间目录了。

第二步保证数据完整性,300G的数据第一步需要1个多小时,期间没录入备份中的事务,需要手动加上

innobackupex  --defaults-file=/etc/my.cnf --apply-log --redo-only  /var/lib/mydata/2018-06-26_18-06-31/

第三步在DB T,安装mysql,版本要一致。文件级的数据,不同版本的mysql是读取不了的,用docker最简单。

sudo docker pull mysql:5.6
sudo docker run --name dbtest -v /data/mydata:/var/lib/mysql  -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6

第四步导入数据

把备份文件从DB A机器传过来,期间会报目录权限问题,就着提示改下就行

scp -r cloud@DB A:/var/lib/mydata/2018-06-26_18-06-31/ /data/backup

docker安装xtrabackup, Dockerfile如下

FROM centos
RUN yum install -y http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
RUN yum install -y percona-xtrabackup-24

在文件所在目录执行docker镜像的编译命令,构建一个xtrabackup的镜像

docker build -t nox/xtrabackup .
#/data/backup/2018-06-26_18-06-31是备份目录,/data/mydata/待导入目录,映射到xtrabackup容器
sudo docker run --name nox-xtrabackup -d -i -t -v /data/backup/2018-06-26_18-06-31:/opt/master-data -v /data/mydata/:/var/lib/mysql nox/xtrabackup /bin/bash
#待导入的目录必须清空
sudo rm -rf /data/mydata
sudo docker exec -it nox-xtrabackup innobackupex --copy-back  /opt/master-data

显示completed OK!后,发现mysql里已经是正式数据了,无需重启生效。
开发迭代周期内,开发和测试会产生测试数据。下一个迭代又需要抛弃这些数据,把最新的正式数据再导一份过来。这时候直接增量导入是不行的。全备份可以搞定,或者每个周期的新数据增量过来,把data dir清空,重新导入data。

后续的思路:
DB T先做一个不对外服务的从库,把scp传数据的过程省掉。因为scp会把内网占掉,影响主从复制、负载均衡过来的内网查询 。只为数据迁移的从库,省心省力。

相关文章

  • 利用innobackupex 将线上数据 转移到 测试环境

    参考 https://qizhanming.com/blog/2017/05/10/install-percona...

  • 【技术研究】LoadRunner系列——支持https协议

    线上测试环境协议——http,线上环境协议——https,将线上测试的脚本原有的url中http://部分直接修改...

  • php上线流程

    1.申请空间 2.购买域名 3.将数据库转移到服务器 4.将项目上传到服务器(注意更改数据库配置) 5.线上浏览测试

  • 2019-04-08

    什么是测试环境? 测试环境是指测试人员利用一些工具及数据所模拟出、接近用户真实使用环境的环境,测试环境的目的主要是...

  • Angular单元测试系列-简介

    本文将探讨如何搭建测试环境、以及Angular测试工具集。 测试环境 绝大部分都是利用Angular Cli来创建...

  • Mock服务设计与实现:MySQL驱动字节码修改增强

    摘要:华为导流测试平台通过对线上流量回放到被测环境中,利用线上真实流量进行充分测试,保证业务系统稳定上线。但是业务...

  • MySQL 相关规范

    流程规范 服务正式上线前,一定要check下线上数据库改动已经上线。不然会引起线上事故! 测试环境也要有,不然测试...

  • mysql导入数据

    数据库中的数据过多时,将测试环境的数据导入到本地环境,可以使用mysqldump 导出数据: mysqldump ...

  • SpringBoot profiles.active 的配置

    往往在一个项目中会有开发环境、测试环境、演示环境、线上环境,那么各个环境的数据库配置、端口设置、redis配置、以...

  • MySQL之innobackupex备份

    innobackupex全备 innobackupex增量备份 innobackupex流式压缩备份

网友评论

      本文标题:利用innobackupex 将线上数据 转移到 测试环境

      本文链接:https://www.haomeiwen.com/subject/msaoyftx.html