Mysql 备份脚本
2016-02-26 17:39
761 查看
Mysql 备份脚本,异地备份
0 01 * * * /home/mysql/script/mysql_backup.sh >>/home/mysql/backup/run.log 2>&1
cat mysql_backup.sql #!/bin/sh . /etc/profile cd /home/mysql/backup exe=/usr/local/mysql/bin/mysqldump mysql_bin=/usr/local/mysql/bin/mysql user=root password=xxxxx suffix=`date +'%Y%m%d%H%M'` bakdir=/home/mysql/backup remotedir=/home/mysql/backup remotehost='xxx.xxx.xx.xx' copy=5 bakdata(){ $exe -u$user -p$password --single-transaction -R --default-character-set=utf8 --triggers --events --hex-blob --databases xxx1 >$bakdir/xxx1_$suffix.sql $exe -u$user -p$password --single-transaction -R --default-character-set=utf8 --triggers --events --hex-blob --databases xxx2 >$bakdir/xxx2_$suffix.sql $exe -u$user -p$password --single-transaction -R --default-character-set=utf8 --triggers --events --hex-blob --flush-logs --master-data=2 -A >$bakdir/all_$suffix.sql } remotebak(){ scp $bakdir/xxx2_$suffix.sql $remotehost:$remotedir scp $bakdir/xxx2_$suffix.sql $remotehost:$remotedir scp $bakdir/all_$suffix.sql $remotehost:$remotedir scp $bakdir/privileges_backup_$suffix.sql $remotehost:$remotedir } clearbak(){ ssh $remotehost "find $remotedir/*.sql -mtime +$copy -exec rm {} \;" find $bakdir/*.sql -mtime +$copy -exec rm {} \; } #optimize减少磁盘碎片,不支持optimize只支持Myisam,不支持Innodb #analyze用来收集统计信息,支持Myisam和Innodb optimize_tab(){ mysql -u$user -p$password xxx1 -e "show tables " | sed '1d' | awk '{print "optimize table "$0";\nanalyze table "$0";"}'|mysql -u$user -p$password xxx1; mysql -u$user -p$password xxx2 -e "show tables " | sed '1d' | awk '{print "optimize table "$0";\nanalyze table "$0";"}'|mysql -u$user -p$password xxx2; } do_backup_grant_priv() { split=\` special=`$mysql_bin -u$user -p$password --default-character-set=utf8 -Bse "select user, host from mysql.user;" | grep "$split" |wc -l ` if [ $special -eq 0 ];then split=\` else special=`$mysql_bin -u$user -p$password --default-character-set=utf8 -Bse "select user, host from mysql.user;" | grep -E "'" |wc -l ` if [ $special -eq 0 ];then split=\'\' else echo "Error:the username have special char" exit fi fi for SQLUSER in `$mysql_bin -u$user -p$password --default-character-set=utf8 -Bse "select concat('$split', user, '$split', '@', '''', host, '''') from mysql.user;"` do $mysql_bin -u$user -p$password --default-character-set=utf8 -Bse "show grants for $SQLUSER;" | sed 's/$/;/g' >> $bakdir/privileges_backup_$suffix.sql done } echo "----------------------------------------" date +'===DATA BACKUP BEGIN:%Y%m%d %T=====' bakdata date +'===DATA BACKUP END:%Y%m%d %T=====' date +'===PRI BACKUP BEGIN:%Y%m%d %T=====' do_backup_grant_priv date +'===PRI BACKUP END:%Y%m%d %T=====' date +'===SCP BEGIN:%Y%m%d %T=====' remotebak date +'===SCP END:%Y%m%d %T=====' date +'===CLS BEGIN:%Y%m%d %T=====' clearbak date +'===CLS END:%Y%m%d %T=====' date +'===OPT BEGIN:%Y%m%d %T=====' flag=`date +"%w"` if [ $flag -eq 6 ] ; then optimize_tab fi date +'===OPT END:%Y%m%d %T=====' echo -e "\n" echo -e "\n"
0 01 * * * /home/mysql/script/mysql_backup.sh >>/home/mysql/backup/run.log 2>&1
相关文章推荐
- MySQL中的integer 数据类型
- MySQL存储过程
- mysql中int、bigint、smallint 和 tinyint的区别与长度
- mysql load data 导出、导入 csv
- source命令执行SQL脚本文件
- MySQL创建用户及权限控制
- MySQL管理数据表
- linux下mysql添加用户
- mysql procedure
- mysql触发器
- MySQL 备份和恢复策略
- mac下安装mysql(转载)
- mysql 修改编码 Linux/Mac/Unix/通用(杜绝修改后无法启动的情况!)
- MySQL数据的导出、导入(mysql内部命令:mysqldump、mysql)
- mysql数据行转列
- Linux下修改MySQL编码的方法
- MySQL Server 日志
- MySQL 安全事宜
- MySQL 备份与恢复