您好,欢迎访问一九零五行业门户网

MySQL导入导出以及性能测试

最近做了mysql的相关测试,包括备份数据的导入导出、压力测试等,因为数据量比较大,每次测试等待时间很长,所以自己动手写了相关
最近做了mysql的相关测试,包括备份数据的导入导出、压力测试等,因为数据量比较大,每次测试等待时间很长,所以自己动手写了相关测试脚本,直接放后台screen运行即可:import.sh、dump.sh,需要读者对screen、mysqldump、tee等命令比较熟悉,screen的话可以参考我写的一篇关于screen的文章:,另外两个命令读者就在网上搜罗吧^_^,如有疑问可以联系我(qq:349871740)。
我的mysqld启动方式如下:
/usr/local/mysql5/bin/mysqld_safe --defaults-file=/usr/local/mysql5/etc/innodb.cnf --datadir=/data1/mysql5/data/ --user=mysql &
以下是mysqldump出来的文件大小:
[root@localhost data1]# du -sh /data2/6_ddb_201204260120
47g     /data2/6_ddb_201204260120
导入数据库之后:
[root@localhost mysql5]# du -sh data/
72g     data/
以下是我的脚本具体内容:
[root@localhost data1]# more import.sh
::::::::::::::
import.sh
::::::::::::::
#!bin/bash
dir=/data/script/db_back/
dist=6
ddb=${dist}_ddb_
mysql_bin=/usr/local/mysql5/bin/
cd ${dir}
if [ $? -eq 0 ] ; then
echo `date -d today +%y-%m-%d %h:%m:%s` import game start! | tee -a import.log
time=`date -d today +%y%m%d%h%m`
#{ /usr/bin/time ${mysql} ddb >import.log
{ /usr/bin/time ${mysql_bin}mysql ddb &1 | tee -a import.log
echo -e `date -d today +%y-%m-%d %h:%m:%s` import game over!\n | tee -a import.log
sleep 300
fi
::::::::::::::
dump.sh
::::::::::::::
#!/bin/sh
dir=/data/script/db_back/
dist=6
ddb=${dist}_ddb_
mysql_bin=/usr/local/mysql5/bin/
cd ${dir}
if [ $? -eq 0 ] ; then
echo `date -d today +%y-%m-%d %h:%m:%s` game start! | tee -a dump.log
time=`date -d today +%y%m%d%h%m`
#{ /usr/bin/time ${mysql_bin}mysqldump -q -e -a -q --no-autocommit --single-transaction ddb | bzip2 -2 > ${dist}_ddb_${time}.bz2; } 2>>dump.log
{ /usr/bin/time ${mysql_bin}mysqldump -q -e -a -q --no-autocommit --single-transaction ddb | bzip2 -2 > ${dist}_ddb_${time}.bz2; } 2>&1 | tee -a dump.log
echo -e `date -d today +%y-%m-%d %h:%m:%s` game over!\n | tee -a dump.log
sleep 300
rm -f ${dist}_ddb_${time}.bz2
sleep 30
fi
[root@localhost data1]#
然后用下面的命令对导入和导出各测试10次,这两个测试跑完总时间用了5天左右,但是我是在业余时间做的测试,,所以前后时间间隔很长,后面还有压力测试,例如:mysqlslap,sql_bench等,随后附上。
[root@localhost data1]# for i in $(seq 10); do sh dump.sh ;done
[root@localhost data1]# for i in $(seq 10); do sh import.sh ;done
脚本中将测试结果输出到文本中,截取部分内容:
[root@localhost db_back]# tail -10 dump.log     
2012-05-11 15:24:09 game start!
1147.64user 265.25system 45:49.79elapsed 51%cpu (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (1major+330minor)pagefaults 0swaps
2012-05-11 16:09:59 game over!
2012-05-11 16:55:24 game start!
1149.02user 266.73system 44:25.40elapsed 53%cpu (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (4major+314minor)pagefaults 0swaps
2012-05-11 17:39:49 game over!
[root@localhost db_back]# tail -10 import.log
2012-05-07 02:29:26 import game start!
1149.62user 67.70system 2:41:43elapsed 12%cpu (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (7major+1089minor)pagefaults 0swaps
2012-05-07 05:11:09 import game over!
2012-05-07 05:16:09 import game start!
1149.78user 66.98system 2:41:45elapsed 12%cpu (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (7major+1089minor)pagefaults 0swaps
2012-05-07 07:57:54 import game over!
这次测试模拟线上服务器的真实环境,所以测试还是比较准确的,如果读者有类似环境,可以拿去加以修改应用,希望对读者有所帮助,测试过程中也能学习到很多拓展知识,需要我们去花大量的时间、精力去做。
其它类似信息

推荐信息