Резервная база данных MySQL

программное обеспечение управления Зависимостью Приносит больше вреда, чем пользы

, я работал над проектами Java, которые включали вверх ста различных библиотек. В большинстве случаев каждая библиотека имеет свои собственные зависимости, и те зависимые библиотеки имеют свои собственные зависимости также.

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

решенная проблема, правильно?

Неправильно.

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

Мое непопулярное мнение - это:

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

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

необходимо ли смочь легко ответить на вопрос, "какие части моего приложения на самом деле зависят от библиотеки XYZ?"

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

я видел, что разработчики включают ценность на 10 или 20 МБ библиотек, вводя тысячи зависимых классов в проект, только устраняют несколько дюжин строк простого пользовательского кода.

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

, Кроме того, это иногда (примечание: конечно, не всегда) лучше для изобретения велосипед путем записи нескольких маленьких классов, которые реализуют точно , в чем Вы нуждаетесь, чем представить зависимость от крупной библиотеки общего назначения.

6
задан tshepang 22 February 2014 в 03:44
поделиться

5 ответов

  1. Нет, вы можете указать таблицы, которые будут заблокированы, с помощью --lock-tables, но они не по умолчанию
  2. Если вы не укажете никаких таблиц, будет создана резервная копия всей БД , или вы можете указать список таблиц:

    mysqldump [options] db_name [tables]

  3. Не использовал его, извините, но я запускаю несколько баз данных MySQL, некоторые из которых больше, некоторые меньше 1,7 ГБ, и я использую mysqldump для все мои резервные копии.

2
ответ дан 8 December 2019 в 18:39
поделиться

mysqlhotcopy не работает в некоторых случаях, когда потеряна блокировка чтения, и не работает с таблицами INNODB.

mysqldump используется чаще, потому что он может создавать резервные копии всех видов таблиц.

Из документации MySQL

mysqlhotcopy - это сценарий Perl, который изначально был написан и предоставлен Тимом Бансом. Он использует LOCK TABLES, FLUSH TABLES и cp или scp для быстрого создания резервной копии базы данных. Это самый быстрый способ сделать резервную копию базы данных или отдельных таблиц, но его можно запустить только на том же компьютере, где расположены каталоги базы данных. mysqlhotcopy работает только для резервного копирования таблиц MyISAM и ARCHIVE. Он работает под Unix и NetWare

. Клиент mysqldump - это программа резервного копирования, изначально написанная Игорем Романенко. Его можно использовать для создания дампа базы данных или коллекции баз данных для резервного копирования или передачи на другой сервер SQL (не обязательно на сервер MySQL). Дамп обычно содержит операторы SQL для создания таблицы, ее заполнения или и того, и другого. Однако mysqldump также может использоваться для создания файлов в формате CSV, другом тексте с разделителями или в формате XML.

Пока.

5
ответ дан 8 December 2019 в 18:39
поделиться

1) mysqldump блокируется только тогда, когда вы его запрашиваете (одна из --lock-tables, --lock-all-tables, --single-transaction). но если вы хотите, чтобы ваша резервная копия была согласованной, тогда mysqldump должен заблокироваться (используя --single-transaction или --lock-all-tables), иначе вы можете получить несогласованный моментальный снимок базы данных. Примечание: --single-transaction работает только для InnoDB.

2) конечно, просто перечислите таблицы, для которых вы хотите создать резервную копию, после имени базы данных:

mysqldump OPTIONS DATABASE TABLE1 TABLE2 ...

В качестве альтернативы вы можете исключить таблицы, которые вам не нужны:

mysqldump ... --ignore-table=TABLE1 --ignore-table=TABLE2 .. DATABASE

Таким образом, вы можете делать дамп всей базы данных раз в неделю и резервировать только изменяющиеся таблицы один раз в день.

3) mysqlhotcopy работает только с таблицами MyISAM, и в большинстве приложений вам лучше использовать InnoDB. Существуют коммерческие инструменты (довольно дорогие) для резервного копирования таблиц innodb. В последнее время для этой цели также появился новый проект с открытым исходным кодом - Xtrabackup

. Кроме того, для автоматизации процесса вы можете использовать astrails-safe . Он поддерживает резервное копирование базы данных с помощью mysqldump и файловой системы с помощью tar. + шифрование + закачка на S3, + много других вкусностей. Поддержки xtrabackup пока нет, но ее будет легко добавить, если она вам нужна.

3
ответ дан 8 December 2019 в 18:39
поделиться

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

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

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

http://dev.mysql.com/doc/refman/5.0/en/binary-log .html

Если вы используете MySQL на сервере Linux с дисками LVM или сервере Windows с VSS, вам следует ознакомиться с Замандой . Требуются двоичные различия данных на диске, которые намного быстрее читать и восстанавливать, чем текстовый дамп базы данных.

3
ответ дан 8 December 2019 в 18:39
поделиться
0
ответ дан 8 December 2019 в 18:39
поделиться
Другие вопросы по тегам:

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