mysqldump(1) コマンドを利用してフルダンプした MySQL データベースを mysql(1) コマンドを利用してレストアする際に、view が含まれていると正しくレストアできない場合がある様なので、mysqldump(1) を実行する際にviewを除外するためのスクリプトです。
このスクリプトでフルダンプを取得すると view の情報が含まれないので、レストア時にエラーにはならないと思います。
view 情報は show create view の結果を出力していますので、レストア時にこちらを実行すればviewも作成されると思います。
アカウント情報を平文で格納するので運用には十分注意して下さい。
# !/bin/sh
logfile=/var/log/${0##*/}.log
backup=/var/db/backup/db_backup.sql
createview=/var/db/backup/create_view.sql
# for MySQL
table=テーブル名
user=ユーザ
pass=パスワード
mysql="/usr/bin/mysql -u${user} -p${pass} -B -N -s -r "
mysqldump="/usr/bin/mysqldump -u${user} -p${pass}"
sql="select TABLE_NAME from information_schema.TABLES
where TABLE_SCHEMA = '${table}' and TABLE_TYPE = 'VIEW';"
exec > ${logfile} 2>&1
# delete old file
rm -f ${backup}
# get view name(s) for exclude dump
for i in `${mysql} ${table} -e "${sql}"`
do
view="${view} --ignore-table=${table}.${i}"
${mysql} ${table} -e "show create view ${i}"
done > ${createview}
# get MySQL dump
${mysqldump} ${view} ${table} > ${backup}