バックグラウンド
現在、基本的に次のようにデータベースをダンプしています。
mysqldump --complete-insert --opt --hex-blob --all-databases -u -p
ダンプは次のようになります。
USE `DB1`
-- Table structure for table `MYTABLE`
DROP TABLE IF EXISTS `MYTABLE`
CREATE TABLE `MYTABLE`
...
INSERT INTO `MYTABLE` ...
-- Table structure for table `NEXTABLE`
...
USE `DB2`
-- Table structure for table `MYTABLE`
DROP TABLE IF EXISTS `MYTABLE`
CREATE TABLE `MYTABLE`
...
INSERT INTO `MYTABLE` ...
-- Table structure for table `NEXTABLE`
問題
一部のリカバリ シナリオでは、バックアップから特定のテーブルをプルする必要があります。次のようにします。
cat backup | sed -n -e '/Table structure for table .MYTABLE.$/,/Table structure for table .NEXTABLE.$/p' | mysql -u -p DB2
個々のテーブル ステートメントは DB 領域を修飾しないため、この場合、テーブル情報DB1.MYTABLE
が抽出され、次DB2
のバックアップが取り込まれます。DB1
質問
USE
このシナリオでステートメントが不要になるように、バックアップを取得して各テーブル ステートメントの DB 領域名を修飾する方法はありますか? 例えば
USE `DB2`
-- Table structure for table `DB2`.`MYTABLE`
DROP TABLE IF EXISTS `DB2`.`MYTABLE`
CREATE TABLE `DB2`.`MYTABLE`
...
INSERT INTO `DB2`.`MYTABLE` ...
-- Table structure for table `DB2`.`NEXTABLE`