背景
我们目前基本上像这样转储我们的数据库:
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
因为单个表语句不限定 dbspace,所以在这种情况下,表信息DB1.MYTABLE
将被提取,因此DB2
将使用来自的备份填充DB1
问题
有没有办法让备份来限定每个表语句上的 dbspace 名称,以便在USE
这种情况下不需要该语句?例如
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`