Программирование >>  Программный интерфейс приложений 

1 ... 160 161 162 [ 163 ] 164 165 166 ... 264


обновлений. Если она не активизирована, немедленно включите, и прежде чем читать далее, создайте новый архив базы данных.)

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

Восстановление базы данных

Сначала, если речь идет о восстановлении базы данных mysql с таблицами разрешений, необходимо запустить сервер с опцией -skip-grant-tables. Иначе сервер выдаст сообщение о невозможности поиска таблиц разрещений. После восстановления таблиц разрешений выполните команду mysqladmin flush-privileges, чтобы заставить сервер загрузить и использовать таблицы разрешений.

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

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

Используя журналы обновлений, повторно запустите все запросы на изменение базы данных, которые были исполнены с момента последнего резервирования. Для этого содержимое журнала обновлений можно представить в качестве ввода для mysql. Если необходимо, определите опцию --one-database, чтобы сервер mysql исполнил запросы только к той базе данных, которая представляет интерес. Если для восстановления информации необходимо использовать все журналы обновлений, запустите в каталоге с этими журналами следующую команду:

%ls -t -г -1 update.[0-9]* Ixargs catlmysql -one-database db name

Команда Is воспроизводит список файлов журналов обновлений, отсортированный сервером в порядке создания. (Об этом следует помнить, поскольку неаккуратное изменение имен файлов журналов может привести к восстановлению их запросов в неправильном порядке.)

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



после последнего резервирования, хранятся в файлах с именами update. 392, update. 393 И Т.д., повторно запустить их можно с помощью следующих комавд:

% mysql -one-database db name < update.392 % mysql --one-database db name < update,393

Если процедура восстановления применяется для устранения результатов случайного выполнения операторов DROP DATABASE, DROP TABLE или DELETE, не забудьте перед запуском комавды удалить эти операторы из журнала!

Восстановление отдельных таблиц

Восстанавливать отдельные таблицы сложней. Если для восстановления применяется файл архива, созданный утилитой mysqldump и содержащий данные для множества таблиц, администратору придется извлечь из него строки, соответствующие требуемой таблице, и использовать их в качестве ввода для mysql. Это самая легкая часть процедуры восстановления. После нее необходимо из журнала обновлений извлечь записи, соответствующие требуемой таблице. Для выполнения этой процедуры весьма полезной может оказаться утилита mysqlf indrows, возможности которой позволяют извлекать многострочные запросы из журнала обновлений.

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

Настройка сервера

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

Для исследования текущих значений переменных сервера выполните команду mysqladmin variables. Установить значения переменных можно с помощью опции -set-variable var name=value командной строки (или опции -О var name=value). Для установки значений нескольких переменных необходимо использовать несколько опций -set-variable.



Кроме того, настроить значения этих параметров можно и в группе [mysqld] конфигурационного файла, используя следующий синтаксис:

set-variable=var name=vaJue

Полный список переменных сервера представлен в приложении А, Получение и инсталляция программного обеспечения , в описании программы mysql. В этом же разделе рассматриваются переменные сервера, применяемые при настройке его производительности. Дополнительную информацию по этому вопросу можно найти в справочном руководстве по IVlySQL.

back log. Число запросов на подкпючение клиентов, размещаемых в очереди при обработке сервером запросов текущих клиентов. Администраторам весьма сильно зафуженных узлов следует увеличить значение этой переменной.

delayed queue size. Эта переменная определяет число сфок оператора insert delayed, размещаемых в очереди. Если очередь заполнена, последующие операторы insert delayed блокируются до освобожаения очереди. В результате клиенты временно не могут запускать эти операторы. Если подобного рода дополнение делает больщое количество клиентов и админисфатор замечает, что их запросы весьма часто блокируются, имеет смысл увеличить значение этой переменной, чтобы ускорить обслуживание клиентов. (Оператор insert delayed Подробно описывается в разделе Проблемы планирования и блокировки главы 4, Оптимизация запросов .)

fluslitime. Если рабочая система подвержена систематическим сбоям и довольно часто перезагружается, установите значение этой переменной больше единицы. В этом случае сервер будет обновлять кэш таблиц каждые f lush time секунд. Подобная запись изменений таблиц негативно отразится на производительности системы, однако в то же время значительно снизит вероятность потери или повреждения данных таблицы.

На компьютерах с ОС Windows можно запускать сервер с опцией командной строки -f lusli, в результате чего изменения таблицы будут сохраняться после каждого обновления.

key buffer size. Эта переменная определяет размер буфера, используемого для хранения блоков индексов. Увеличение ее значения приведет к более бысфому созданию и изменению индексов. Чем больше значение этой переменной, тем выше вероятность того, что IVlySQL найдет ключевые значения в памяти. Следовательно, уменьшается и число обращений к диску, необходимое для обработки индексов.

В версиях, предшествующих IVlySQL 3.23, эта переменная имеет название keybuf fer. Системы IVlySQL версий 3.23 и выше распознают оба названия.



1 ... 160 161 162 [ 163 ] 164 165 166 ... 264

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.058
При копировании материалов приветствуются ссылки.
Яндекс.Метрика