Help us understand the problem. What is going on with this article?

mysqldumpでviewを除外する

More than 5 years have passed since last update.

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}
bsdhack
親バカがviでシェルスクリプトを書いてる様なヤツです。 古き良きUNIXが好きですが最近は Mac ばかり使ってます。 Unix/Linux 技術者をお捜しの方は是非声をかけて下さい
http://blog.bsdhack.org
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away