企业实战题8:如何实现对MySQL数据库进行分库备份,请用脚本实现
企业实战题9:如何实现对MySQL数据库进行分库加分表备份,请用脚本实现
答案如下:
第8题 :
root@clc-server ~]# cat shell8.sh #!/bin/bash port=3306 mysql_user=root mysql_pwd=oldboy123 mysql_sock=/data/3306/mysql.sock mysql_log_cmd="mysql -u$mysql_user -p$mysql_pwd -S $mysql_sock" mysql_dbs=`$mysql_log_cmd -e "show databases;"|egrep -v "Database|_schema|mysql"` mysql_dump_cmd="mysqldump -u$mysql_user -p$mysql_pwd -S $mysql_sock" IP=`ifconfig eth0|awk -F "[: ]+" 'NR==2{print $4}'` backupdir=/backup/$IP [ ! -d $backupdir ]&&mkdir -p $backupdir for dbname in $mysql_dbs do $mysql_dump_cmd --events -B $dbname|gzip >$backupdir/${dbname}_$(date +%F)_bak.sql.gz done [root@clc-server ~]#
第9题答案如下:
[root@clc-server ~]# cat shell9.sh #!/bin/bash port=3306 mysql_user=root mysql_pwd=oldboy123 mysql_sock=/data/3306/mysql.sock mysql_log_cmd="mysql -u$mysql_user -p$mysql_pwd -S $mysql_sock" mysql_dbs=`$mysql_log_cmd -e "show databases;"|egrep -v "Database|_schema|mysql"` mysql_dump_cmd="mysqldump -u$mysql_user -p$mysql_pwd -S $mysql_sock" IP=`ifconfig eth0|awk -F "[: ]+" 'NR==2{print $4}'` backupdir=/backup/$IP [ ! -d $backupdir ]&&mkdir -p $backupdir for dbname in $mysql_dbs do [ ! -d $backupdir/${dbname} ]&& mkdir -p $backupdir/${dbname} tables=`$mysql_log_cmd -e "show tables from $dbname"|sed '1d'` for table in $tables do $mysql_dump_cmd $dbname $table|gzip >$backupdir/${dbname}/${dbname}_${table}_$(date +%F)_bak.sql.gz done done [root@clc-server ~]#
原文链接:20道shell第8和第9,分库和分表备份,转载请注明来源!