Как я могу минимизировать непреднамеренное изменение данных, даже не замечая этого? - PullRequest
0 голосов
/ 23 января 2020

Я тестировал несколько SQL команд и в какой-то момент случайно удалил данные в одном столбце.

  1. Какой самый простой способ получить его? 1.1. Можно ли получить журнал каждой выполненной команды и связанных с ней выходных данных?
  2. Какие рекомендации вы рекомендуете для предотвращения непреднамеренного изменения данных, не замечая этого?

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

Ответы [ 2 ]

0 голосов
/ 23 января 2020

Сделайте копию базы данных и используйте эту копию для проверки вашего кода.

0 голосов
/ 23 января 2020

Вы не можете восстановить стертые данные, кроме как путем восстановления из резервной копии. Если база данных мала, то регулярного дампирования (с mysqldump) может быть достаточно.

binlogs должен записывать каждую команду с отметкой времени. Таким образом, вы можете увидеть, что там произошло. Но записывается только команда, а не вывод.

Мои рекомендации по предотвращению этого в будущем ...

  1. Создайте новый логин, имеющий только SELECT разрешение или любой другой ограниченный диапазон разрешений, который вы хотите иметь, и используйте его для тестирования.

  2. Не играйте в реальной системе. Сделайте mysqldump вашей действующей базы данных и восстановите дамп на тестовом компьютере, а затем поиграйте там.

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

Примечание: поддержание mysql в реплике в синхронизации c может привести к проблемам.

...