遇到的一个mysql备份恢复的问题

数据库特点
--使用partition,存在上百个分区
--建表时指定了data_dir和index_dir,数据不是存储在默认位置,而是在mysqld的数据目录下link到真正的数据文件

 

备份恢复要求
--备份出来的数据恢复时要恢复成不同的表名
--恢复出来的数据实际存储位置也要存储在与原表不同的位置

 

问题
如果直接mysqldump-source恢复-change table name,则新表的存储位置无法满足要求,link到的位置必然是错误的,需要修改mysqld数据目录下的数百个软链接

 

备份过程
mysqldump -uroot -p$dbpassword -h$srcip $dbname $tablename > $tablename.data

 

信息修改过程
sed -e "s/$origname/$newname/g" $tablename.data > $tablename.data.tmp1
rm -f $tablename.data
sed -e "s/$origloc/$newloc/g" $tablename.data.tmp1 > $tablename.data.tmp2
rm -f $tablename.data.tmp1
mv $tablename.data.tmp2 $tablename.data

 

恢复过程
mysql -u$dbuser -p$dbpassword -h$destip -e"$createdbsql"
mysql -u$dbuser -p$dbpassword -h$destip $dbname -e"source $tablename.data"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值