背景:
aliyun上的rds数据库快满了,于是删除了某个备份的表
后面大boss说是有用的表,需要恢复回来,阿里云有7天内的物理全量备份(通过percona-xtrabackup备份的)
第一时间应该延长备份时间(默认保留7天,可以配置15天或更长避免在恢复过程中被阿里云的rds删除)
准备:
数据库大概有700G左右,物理备份文件100G左右,恢复回来需要占用大概1多T的空间,于是在现有同样区域的ecs上挂载一块2T的磁盘用来做恢复
整体的过程是:
在相同地域的ecs安装好mysql,恢复到上面,然后拷贝到生产环境中
其实有更简单的方法,直接可以通过恢复克隆实例恢复数据(需要新购买实例,数据恢复到这个新的实例中)
主要的时间用在了如下几块,建议在screen下进行,否则中途shell连接断开就会浪费不少时间:
1.备份文件的下载基本10M/s,100G用了几个小时
2.通过阿里的sh脚本解压(100G左右用了差不多至少6个小时)
3.通过perconna-xtrabackup恢复估计在6个小时左右
具体步骤:
1.找到阿里云提供的备份内网下载地址:
# -c是支持断点续传
wget -c 'http://rdsbak-hzi-v2.oss-cn-hangzhou-i-internal.aliyuncs.com/custins758461/hins3305619_data_20171109075610.tar.gz?OSSAccessKeyId=xxx' -O hins3305619_data_20171109075610.tar.gz
2.在目标ecs上安装mysql5.6
①添加用户
groupadd mysql
useradd -r -g mysql mysql
②编译安装mysql5.6.16(保持和阿里云的rds一致,避免出错)
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.16.tar.gz
tar -zxvf mysql-5.6.16.tar.gz
cd mysql-5.6.16
mkdir -p /app/data/mydata
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/app/data/mydata -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_ZLIB=system -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DWITH_LIBWRAP=0 -DDEFAULT_COLLATION=utf8_general_ci
make && make install
chown -R mysql.mysql /usr/loca