我们网站最近要上云,需要数据库迁移,其中有个产生网站查看日志的业务,是每天产生一个表,数据量大概是300万左右,目前数据库里面有将近500天的数据,也就是有500个表,命名规范如下:
	MariaDB [log]> show tables;
	| pvlogs_20170615       |
	| pvlogs_20170616       |
	| pvlogs_20170617       |
	| pvlogs_20170618       |
	| pvlogs_20170619       |
	| pvlogs_20170620       |
	| pvlogs_20170621       |
	| pvlogs_20170622       |
	| pvlogs_20170623       |
	现在要我把这些表全部dump先来,并且一个表一个文件,这手工一个一个
mysqldump,是绝对不行的,于是想到了用shell脚本完成,具体如下:
 
	[root@S143 ~]# cat mysqldumplog.sh
	#! /bin/bash
	datenum=`date +%Y%m%d -d '498 days ago'`
	nowdate=`date +%Y%m%d`
	while [ $datenum  -lt   $nowdate ]
	do
	mysqldump -uroot  -p***** log pvlogs_$datenum | gzip >/backup_mysql/mysql_143/log/pvlogs_$datenum.sql;
	datenum=`date -d "$datenum  1 days" +"%Y%m%d"`
	done
	注释:1:date +%Y%m%d -d '498 days ago' 取出498天之前的日期,2:date -d "$datenum  1 days" +"%Y%m%d"是在指定的日期上加一天;
	脚本很简单,可是对于刚接触linux shell的人来说,是有意义的,