Сервер Ubuntu, на котором запущен сервер MySql.
У нас на сервере 5 баз данных. При недавнем сбое сервер был восстановлен неправильно, и теперь 1 база данных (B) имеет 2 неправильные таблицы, а вторая база данных (A) полностью неверна.
Как правильно заменить файлы базы данных?
Это так просто, как
cp -a /path/to/backup/databaseA/ /var/lib/mysql/databaseA
cp -a /path/to/backup/databaseB/table1.MYD /var/lib/mysql/databaseB
cp -a /path/to/backup/databaseB/table1.MYI /var/lib/mysql/databaseB
cp -a /path/to/backup/databaseB/table2.ibd /var/lib/mysql/databaseB
И чего стоит, существуют смешанные таблицы MyISAM и InnoDB.
С MyISAM - никаких проблем (кроме метаданных) относительно InnoDB: https://dba.stackexchange.com/questions/15531/why-does-innodb-store-all-databases-in-one-file
Я думаю, твоя проблема в innodb_file_per_table
- была ли эта опция включена до того, как таблицы были создан на обоих A и B или нет.
Если innodb_file_per_table
был включен позже - у вас будет смешанное табличное пространство: некоторые данные будут сохранены в .ibd
и некоторые в ibdata1
, метаданные всегда остаются в ibdata1
.
Также помните, что не только файлы базы данных предоставляют информацию о таблицах, разрешениях и т. Д. (Метаданные) - mysql
Информационные таблицы БД и ibdata1
делать. Таким образом, копирование полезно только тогда, когда нет изменений или вам не нужны эти метаданные.
Короткий ответ - нет (нужно ibdata1
слишком). это не так просто, но в некоторых случаях это может сработать.
Если это не ответ, который вы ищете - эта информация в любом случае может быть вам очень полезна.
Рекавери: вам нужно ibdata1
тоже, но это повлияет и на другие БД с innodb.