shell脚本编程mysql,新手完全不知道怎么开始,求解题和思路

 

先答第一个问题

# 3、(20分)复制出/datalog/mysql_backup目录下在qyhd601~620范围内的所有gz文件至 /tmp/bak 目录下,
# 并进行解压,解压后名称参考:“qyhd656.sql”,服务器名为文件名,sql为文件后缀
for i in `seq -w 1 20`; # 获取01 ~ 20 的等宽序列,循环操作
do
gz_name=mysql_sqldump_10.66.207.104_20201210_qyhd6$i.gz # 组合成需要的文件名
sql_name=qyhd6$i.sql # 组合成需要的sql文件名
echo $gz_name $gunz_name; # 打印文件名
cp /datalog/mysql_backup/$gz_name /tmp/bak/; # 拷贝文件到目标目录
gunzip -c /tmp/bak/$gz_name > /tmp/bak/$sql_name; # 解压文件到目标目录
done

 

脚本就是相应的语法,你先了解清楚mysql相关的shell脚本语法怎么写。最快的还是百度,没有一样的也有相似的,自己改造一下就好了

第二个题目:

# 4、(20分)进行数据库恢复,恢复步骤为:
# a、创建一个与源库类似的bak库,例如:qyhd656_bak,
# b、应用tables.sql内的相关结构,进行数据库恢复,
# c、去除现有备份文件内tb_oders、tb_infos、tb_members三张表相关的数据结构信息进行恢复
for i in `seq -w 1 20`; # 过去01 ~ 20 的等宽序列,循环操作
do
db_name=qyhd6$i_bak # 组合成需要的备份数据库名
sql_name=qyhd6$i.sql # 组合成需要的sql文件名
echo $gz_name $gunz_name; # 打印文件名
root_passwd=`cat /data/mysql/passwd.txt`
# 创建数据库
mysql -uroot -p$root_passwd -e"create database $db_name"
# 导入表结构数据
mysql -uroot -p$root_passwd $db_name < tables.sql
# 将tb_oders、tb_infos、tb_members三张表的创建表结构的部分注释掉
sed -i -e '
    /-- Table structure for table `tb_oders`/,/-- Dumping data for table/ { 
        /^--/! s/^/--/ 
    }
' $sql_name
sed -i -e '
    /-- Table structure for table `tb_infos`/,/-- Dumping data for table/ { 
        /^--/! s/^/--/ 
    }
' $sql_name
sed -i -e '
    /-- Table structure for table `tb_members`/,/-- Dumping data for table/ { 
        /^--/! s/^/--/ 
    }
' $sql_name
# 把处理后的文件用作数据恢复
mysql -uroot -p$root_passwd $db_name < $sql_name
done



# 5、(20分)将bak库内的tb_oders、tb_infos、tb_members三张表信息同步至源库,考虑到主键冲突问题,
# 恢复时需删除主键
for i in `seq -w 1 20`; # 过去01 ~ 20 的等宽序列,循环操作
do
db_name=qyhd6$i_bak # 组合成需要的数据库名
mysql -uroot -p$root_passwd -e"alter table $db_name.tb_oders disable keys;"
mysql -uroot -p$root_passwd -e"alter table $db_name.tb_infos disable keys;"
mysql -uroot -p$root_passwd -e"alter table $db_name.tb_members disable keys;"
mysql -uroot -p$root_passwd -e"insert into $db_name.tb_oders select * from bak.tb_oders;"
mysql -uroot -p$root_passwd -e"insert into $db_name.tb_infos select * from bak.tb_infos;"
mysql -uroot -p$root_passwd -e"insert into $db_name.tb_members select * from bak.tb_members;"
mysql -uroot -p$root_passwd -e"alter table $db_name.tb_oders enable keys;"
mysql -uroot -p$root_passwd -e"alter table $db_name.tb_infos enable keys;"
mysql -uroot -p$root_passwd -e"alter table $db_name.tb_members enable keys;"
done