2 つのデータベースがあります。最初のデータベースはサイトで使用されます。2 つ目は、テスト サイトによるデバッグに使用されます。
1 日に数回、テスト サイトのデータベースを更新する必要があります。
デバッグ データベースをドロップして作成するためのルート アクセス権がありません。したがって、外部キーを無視してすべてのテーブルを削除する必要があります。最初のデータベースから 2 番目のデータベースへのテーブルのバックアップと復元。
すべてのテーブルは外部キーを持つ InnoDB です。
#!/bin/bash
USERNAME=root
PASSWORD=xxx
DBFROM=xxx
DBTO=xxx
HOST=localhost
MYSQL_OPTS="-u $USERNAME -p$PASSWORD -h $HOST"
TABLES=$(mysql $MYSQL_OPTS -BNe "show tables" $DBTO | tr '\n' ',' | sed -e 's/,$//' | awk '{print "SET FOREIGN_KEY_CHECKS = 0;DROP TABLE IF EXISTS " $1 ";SET FOREIGN_KEY_CHECKS = 1;"}')
mysql $MYSQL_OPTS -BNe "$TABLES" $DBTO
mysqldump $MYSQL_OPTS $DBFROM | mysql $MYSQL_OPTS $DBTO