MySql ALTER TABLE на производственных базах данных - какие-либо проблемы?

У меня есть приблизительно 100 баз данных (весь одинаковый структура, только на различных серверах) приблизительно с дюжиной таблиц каждый. Большинство таблиц является маленьким (позволяет, говорят что 100 МБ или меньше). Существуют случайные пограничные случаи, где таблица может быть большой (позволяет, говорят что 4 ГБ +).

Я должен работать на ряде команд ALTER TABLE примерно каждая таблица в каждой базе данных. Главным образом добавлению некоторых строк к структуре, но нескольких изменений нравится, изменяют строку от varchar до tinytext (или наоборот). Также добавляя несколько новых индексов (но индексируя новые строки, не существующие, таким образом предполагая это не грандиозное предприятие).

Я задаюсь вопросом, как безопасный это должно сделать, и если существуют какие-либо лучшие практики к этому процессу.

Во-первых, есть ли любой шанс, я могу повредить или удалить данные в таблицах. Я подозреваю не, но должен быть уверен.

Во-вторых, я предполагаю для больших таблиц (4 ГБ +), это может быть несколькими-минутами к процессу нескольких-часов?

Что-либо и все, что я должен знать о выполнении команд ALTER TABLE на производственной базе данных, я интересуюсь изучением.

Если какое-либо знание значения, я - планирование выдачи команд через PHPMYADMIN по большей части.

Спасибо -

12
задан OneNerd 20 February 2010 в 21:17
поделиться

1 ответ

Вы можете найти gccxml заслуживающим внимания. Он (например) преобразует это в это , что означает, что нужно просто проанализировать XML вместо C++.

Существует интересный документ SP & E , в котором описано использование gccxml в сочетании с модифицированным компоновщиком для «обеспечения Java-отражающей функциональности приложений C++ в чистом и неинтрузивном способе».

-121--3909694-

Если что, я, вероятно, больше не использую насмешки.

Всякий раз, когда класс делает вызов другому, я обычно издеваюсь над этим вызовом и проверяю, что вызов был выполнен с правильными параметрами. В противном случае, у меня будет единичный тест, который проверяет, правильно ли ведет себя конкретный код издевательского объекта.

Пример:

[Test]
public void FooMoo_callsBarBaz_whenXisGreaterThan5()
{
    int TEST_DATA = 6;
    var bar = new Mock<Bar>();
    bar.Setup(x => x.Baz(It.Is<int>(i == TEST_DATA)))
       .Verifiable();

    var foo = new Foo(bar.Object);

    foo.moo(TEST_DATA);

    bar.Verify();
}

...
[Test]
public void BarBaz_doesSomething_whenCalled()
{
   // another test
}

Для меня дело в том, что если я пытаюсь протестировать много классов как один большой глобус, то обычно есть тонны кода установки. Мало того, что это довольно запутанно читать, как вы пытаетесь получить свою голову вокруг всех зависимостей, это очень хрупко, когда изменения должны быть сделаны.

Я предпочитаю небольшие лаконичные тесты. Легче писать, легче поддерживать, легче понимать цель теста.

-121--4518397-

Сначала перед применением сменщиков создайте резервные копии. Это можно сделать двумя способами: mysqldump или скопировать папку данных mysql.

Во-вторых, можно использовать mysql из командной строки. PHPMyAdmin, вероятно, будет тайм-аут. Время ожидания большинства PHP-серверов составляет менее 10 минут. Или вы случайно закроете браузер.

5
ответ дан 2 December 2019 в 23:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: