Используйте код, указанный ниже, для создания синонимов.
Самый простой способ сделать это, который будет работать на всех механизмах хранения (например, InnoDB, MyISAM и т. Д.), - это использовать «Синоним» для всего доступа к базе данных.
Эти ссылки покажут вам хранимые процедуры, необходимые для выполнения этого.
ПРИМЕЧАНИЯ: Вы должны удалить «sys». из "sys.quote_identifier" (должен быть просто "quote_identifier") в "create_synonym_db.sql".
Код:
Для использования:
Это создаст подходящую схему доступа для 'CURRENT_DB', которая разрешит все стандартные функции SQL через ссылку 'FAKE-DB_NAME'.
CALL create_synonym_db('CURRENT_DB', 'FAKE_DB_NAME');
Удалить синоним:
Это удалит синоним, но не удалит исходную базу данных (протестировано на Maria 10.10.0 Series).
DROP DATABASE FAKE_DB_NAME;
Чтобы удовлетворить ваши потребности, вам нужно, чтобы все уровни приложений связывались с «FAKE_DB_NAME», и, если необходимо выполнить обсуждаемую форму обслуживания, вы удалите текущий синоним и замените его указателем на другая база данных.
Итак, после загрузки этих сохраненных процедур для правильной учетной записи обслуживания (независимо от того, какую учетную запись MySQL вы используете для такого обслуживания), вы сделаете следующее:
(1) Создать синоним:
CALL create_synonym_db('NormalDB', 'FAKE_DB_NAME');
(2) Использовать базу данных как обычно по синониму:
- Весь код SQL, ссылающийся на базу данных по «FAKE_DB_NAME»
(3) Создайте временную / резервную копию / замену БД любыми выбранными вами методами.
(4) Переключить код SQL всех уровней приложений на Temp DB
DROP DATABASE FAKE_DB_NAME;
CALL create_synonym_db('TempDB', 'FAKE_DB_NAME');
(5) Выполните любое запланированное техническое обслуживание на «NormalDB»
(6) Переключение кода SQL всех приложений на временную базу данных
Эти две транзакции должны быть почти мгновенными.
DROP DATABASE FAKE_DB_NAME;
CALL create_synonym_db('NormalDB', 'FAKE_DB_NAME');
Это позволит вам беспрепятственно менять любую базу данных без изменения кода на уровне приложения.
* 1078. ) для поддержания.