У меня есть порт Belkin 4 дешевки KVM. Это довольно достойно, кроме каждых нескольких дней, это сходит с ума, и необходимо отключить его и разъем, это въезжает задним ходом снова.
Если все Ваши компьютеры берут USB, Вам мог бы сойти с рук переключатель монитора (который является действительно дешевым и надежным), и концентратор USB, что можно включить клавиатуру и мышь, и включить ее, какой бы ни компьютер Вы хотите использовать.
При питании с файловой системой MySQL необходимо остановить сервер MySQL. Для предотвращения времени простоя на живой машине используйте копировать/виртуализировать машину с ТОЙ ЖЕ ВЕРСИЕЙ сервера MySQL. В то время как сервер MySQL BACKUP останавливается, скопируйте таблицы (я принимаю.FRM.MYI и т.д.?) в файловую систему в/var/lib/mysql/BACKUP_DB (соответствующий каталог BACKUP_DB).
Запустите сервер MySQL BACKUP и удостоверьтесь, что данные загрузили правильно сценарии использования или CLI. При проверке, mysqldump база данных BACKUP_DB, таким образом, она может быть загружена в живой сервер:
mysqldump --extended-insert BACKUP_DB > /root/sql/BACKUP_DB.sql
Вы теперь преобразовали свои необработанные данные резервного копирования в SQL-операторы, которые могут быть загружены в MySQL без времени простоя (в отличие от необработанных данных). Переместиться BACKUP_DB.sql
к живой машине.
Импорт BACKUP_DB.sql
в Ваш экземпляр MySQL LIVE как другая база данных:
mysql BACKUP_DB < /root/sql/BACKUP_DB.sql
Необходимо теперь загрузить резервную базу данных в MySQL как BACKUP_DB.
Теперь, зависящий от ВСТАВКИ ИГНОРИРУЮТ, или операторы REPLACE INTO (Вы перезаписываете старые данные или "заполняете пробелы" в Ваших индексах?):
mysqldump --no-create-db
--no-create-info --extended-insert --insert-ignore MERGE_SOURCE | mysql BACKUP_DB
Или, для ЗАМЕНЫ В действие:
mysqldump --no-create-db --no-create-info --extended-insert MERGE_SOURCE | sed 's/INSERT INTO/REPLACE INTO/g' | mysql BACKUP_DB
С другой стороны, вместо того, чтобы передать вывод по каналу назад в MySQL, отправьте в файл и рассмотрите SQL-операторы.
mysqldump --no-create-db --no-create-info --extended-insert --insert-ignore MERGE_SOURCE > /root/sql/merge.sql
mysqldump --no-create-db --no-create-info --extended-insert MERGE_SOURCE | sed 's/INSERT INTO/REPLACE INTO/g' > /root/sql/merge.sql
Наконец, для предотвращения времени простоя выведите первую базу данных по второму:
mysqldump BACKUP_DB | mysql CURRENT_DB
Вы могли всегда блокировать базу данных сначала для предотвращения данных, записанных в (например), z таблицу с внешним ключом в таблица (который был уже переписан):
FLUSH TABLES WITH READ LOCK;
(выполните дамп как предыдущий шаг),
UNLOCK TABLES;
Добавьте команду FLUSH к запуску Вашего дампа .sql файл и РАЗБЛОКИРУЙТЕ в конец.
Обязательно увеличьтесь в четыре раза, проверяют Ваши имена DB в этот сценарий! Попросите, чтобы любой развил вопрос, в котором Вы не уверены, поскольку это - материал приготовления пюре данных высокого риска. Выполните (и отметьте подробно), точные шаги, требуемые на dev сервере, если это возможно, или, виртуализируют Ваш тест или создают мелкомасштабный тест. Просто тест. И, конечно, возьмите достаточно резервных копий для покрытия каждой возможности данных потерь.
Настройте репликацию и переключите сервер БД для работы в режиме ведомого устройства, когда это будет готово, и хорошо протестированное (!!!).
Если у Вас нет некоторых технических ограничений для выполнения этого, это - только допустимый вариант (я подразумеваю, что необходимо смочь протестировать изменения прежде, чем поместить их в 24/7 среду).
Принятие Вас имеет дисковое пространство, я настроил базу данных миграции и копирую/объединяю данные в в них. Настройте копию своей веб-среды, чтобы соединиться с базой данных миграции и протестировать ее полностью. Затем, после того как Вы счастливы, строки подключения изменения на Вашей продуктивной среде для рассмотрения новой миграции DB.
можно использовать-T опцию mysqldump произвести таблицы как tab-separated-values. Затем создайте копию живого DB, как Kyle предполагает. Затем используйте mysqlimport, чтобы повторно импортировать данные в живую копию и протестировать его там. Когда Вы будете готовы переключиться от живого до живой копии, необходимо будет получить некоторое время простоя.
Я не попробовал это сам так Принцип "качество на риск покупателя".
Для этого примера давайте предположим, что Вашу базу данных называют "крутым поворотом", и Вашу сохраненную базу данных называют "zig_backup". Я также предположу, что Ваша резервная база данных и Ваша живая база данных имеют ту же схему.
Я также предположу, что Ваша живая база данных обновляется постоянно, и Вы не можете выполнить слияние "офлайн" и затем зеркально отразить переключатель для создания объединенной копии "живой".
Проблемы для знания:
Процесс для обновления потребует планирования, с точки зрения который таблицы для слияния сначала и которые можно объединиться в последний раз. Моя общая тенденция к сделать тяжелый подъем сначала (большие таблицы), затем проложите себе путь на меньшие таблицы. В зависимости от Ваших размеров данных это не может иметь значения.
Процесс для слияния затем был бы:
Самый безопасный метод должен был бы сделать соединение полной таблицы и просто вставить строки, которые не соответствуют:
for each table in the "live" database:
INSERT INTO zig.$table
SELECT BACKUP.* FROM zig_backup.$table AS BACKUP
LEFT OUTER JOIN zig.$table AS LIVE ON LIVE.ID=BACKUP.ID
WHERE LIVE.ID IS NULL;
Это, конечно, требует знания первичных ключей каждой таблицы. Прямая "ЗАМЕНА" не может работать, поскольку строки в живой базе данных, возможно, изменились, и их измененные данные будут перезаписаны
Для слияния недостающих таблиц сделайте:
\u zig_backup
SHOW TABLES
Чтобы получить список всех таблиц и определить, существует ли таблица в живой базе данных, можно сделать:
\u zig
SHOW TABLES LIKE 'tablename';
С другой стороны, таблица в резервной базе данных, которая не существует в "живой" базе данных, может быть двоичная скопированный в живой каталог базы данных.
Наконец, обрабатывающие удаления от "живой" базы данных являются трудными в лучшем случае тем более, что тем, что Вы объединяете те некоторые данные, отсутствует по той или иной причине.