mysqldump数据迁移脚本一例


对于MySQL中数据库容量比较大,而且变化比较大的数据库,采用 xtrabackup 备份后恢复构建 master-slave 的方式,然后关闭主库,启用从库的迁移保教保险和使用;
但对于容量比较小,业务和变化量也比较少的mysql数据库,和Oracle数据库的export/import类型,采用mysqldump导入和导出的方式比较快捷和高效。
采用mysqldump工具进行导入导出迁移数据,可以结合shell脚本,将数据库的导入、导出操作和校验过程形成两个脚本,直接执行一下脚本即可完成整个操作,这种方式就比较高效了。

迁移场景:
在10.10.0.100 上有一个mysql数据库,其中数据库名为 ga,里面只有 admin_user_ga 和 user_ga 两个表,每个表的数据只有几千行,每天变化也只有十几条数据的变化;
现在需要将这个ga数据库迁移到192.168.0.200上,为了避免授权的麻烦,先从10.10.0.100上恢复一个mysql备份作为测试库,并根据新的IP进行用户授权,确认用户全库和ga数据库都可用,然后在迁移时使用命令先在10.10.0.100导出数据,然后传输到 192.168.0.200 上删除测试表,导入数据,并在导入和导出前后通过sql查询结果进行对比校验。
注意:执行迁移之前需要确保两个服务器网络可以连通,8000端口打开,可以使用 python -m SimpleHTTPServer 进行文件传输。

编写迁移脚本
在服务器10.10.0.100 上的导出脚本为:
# vim /tmp/ga_export.sh
导出脚本内容如下:
date

echo "the ga data on 10.10.0.100 before export"
mysql -uroot -p123456 -S /tmp/mysql.sock -e "
use ga;
show tables;
select count(*) from admin_user_ga;
select count(*) from user_ga;"

echo "export the ga date on 10.10.0.100"
cd /tmp
rm -f ga_20141129.sql
mysqldump -uroot -proot -S /tmp/mysql.sock ga > /tmp/ga_20141129.sql
ll ga_20141129.sql
du -sh ga_20141129.sql

date
python -m SimpleHTTPServer 
添加脚本执行权限:
# chmod +x /tmp/ga_export.sh

在服务器 192.168.0.200 上的导入脚本为:
$ vim /tmp/ga_import.sh 
导入脚本内容如下:  
date 

echo "get export ga sql from 10.10.0.100" 
cd /tmp 
rm -f ga_20141129.sql 
wget http://10.10.0.100:8000/ga_20141129.sql 
ll ga_20141129.sql 
du -sh ga_20141129.sql 

echo "the ga data before drop on 192.168.0.200" 
mysql -uroot -p123456-S /data/mysqldata/3307/mysql.sock -e " 
use bitvc_ga; 
show tables; 
select count(*) from admin_user_ga; 
select count(*) from user_ga;" 

echo "drop the old ga tables on 192.168.0.200" 
mysql -uroot -proot -S /data/mysqldata/3307/mysql.sock -e " 
use bitvc_ga; 
drop table admin_user_ga; 
drop table user_ga; 
show tables; 
select count(*) from admin_user_ga; 
select count(*) from user_ga;" 

echo "source the export ga sql on 192.168.0.200" 
mysql -uroot -proot -S /data/mysqldata/3307/mysql.sock -e " 
use bitvc_ga; 
source /tmp/ga_20141129.sql " 

echo "The ga data on 192.168.0.200 after exprot" 
mysql -uroot -proot -S /data/mysqldata/3307/mysql.sock -e " 
use bitvc_ga; 
show tables; 
select count(*) from admin_user_ga; 
select count(*) from user_ga; 
select user,host from mysql.user; " 

date
添加脚本执行权限:
# chmod +x /tmp/ga_import.sh


实际迁移命令
在实际迁移时,只需要执行两个命令:
在服务器10.10.0.100 上执行ga数据库导出命令为:
# /tmp/ga_export.sh

在服务器 192.168.0.200 上执行ga数据库导入命令:
# /tmp/ga_import.sh 

注意:上述脚本在公司进行实际迁移是可用,如果再其他环境中使用,可用按照这个思路将脚本中的mysql登录用户名、密码、文件路径、校验sql语句进行相应修改即可使用。


你可能感兴趣的:(mysql,shell,文件传输)