Хостинг http://honest-monitor.info В мире данных Tue, 08 Dec 2009 10:35:24 +0000 http://wordpress.org/?v=2.7.1 en hourly 1 Содержимое файлов журнала http://honest-monitor.info/soderzhimoe-fajlov-zhurnala http://honest-monitor.info/soderzhimoe-fajlov-zhurnala#comments Mon, 07 Dec 2009 23:09:05 +0000 admin http://honest-monitor.info/soderzhimoe-fajlov-zhurnala

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

Ниже приведен список журналов, которые можно создать.

Журнал регистрации ошибок. Отслеживает все возникающие ошибки. Един­ственный из журналов, запись в который по умолчанию включена, размеща­ется в вашем каталоге данных. Файл называется hostname.err в Linux и mysql. err в Windows. Можно назначить ему любое другое располо­жение, используя опцию 1од-еггог=имя_файла в файле конфигурации my. ini (или ту. cnf).

Журнал регистрации запросов. Регистрирует все запросы, выполняемые си­стемой. Можно включить запись этого журнала и указать его расположение с помощью опции 1од=имя_файла.

Журнал двоичной регистрации. Регистрирует все запросы, изменяющие дан­ные. Заменил журнал регистрации обновлений, который все еще существу­ет и будет существовать до версии MySQL 5.0. Можно включить запись этого журнала и указать его расположение с помощью опции log-bin=

имя_файла. •. ‘.

Журнал регистрации медленных запросов. Регистрирует все запросы, время выполнения которых оказалось больше, чем значение, хранимое переменной long_query_time. Можно включить запись этого журнала и указать его расположение с помощью опции log-slow-queries=*»<ts_$aJ&ia.

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

mysqlbinlog logfile

Использование журнала регистрации медленных запросов будет обсуждаться в главе 19, “Оптимизация запросов”.

Файлы журналов регистрации будут со временем разрастаться, поэтому же­лательно на регулярной основе менять файлы журналов. В среде Linux система

MySQL предлагает сценарий mysql-log-rotate, избавляющий от необходи­мости делать это вручную.

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

mysqladmin flush-logs

]]>
http://honest-monitor.info/soderzhimoe-fajlov-zhurnala/feed
Сводка опций mysqladmin http://honest-monitor.info/svodka-opcij-mysqladmin http://honest-monitor.info/svodka-opcij-mysqladmin#comments Mon, 07 Dec 2009 23:07:03 +0000 admin http://honest-monitor.info/?p=128

Программа mysqladmin имеет очень много опций, польза и частота приме­нения которых весьма различны.

Некоторые задачи могут быть выполнены как с помощью команд SQL, так и с помощью mysqladmin — например, создание и уничтожение баз данных:

mysqladmin create имяБД

mysqladmin drop имяБД

Типичным примером использования mysqladmin является получение ин­формации о сервере и его текущем состоянии. Такая информация может быть как очень простой (”Доступен ли сервер?” — ping), так и существенно более подроб­ной, например, включающей список всех доступных переменных или процессов. Ниже приводится несколько примеров использования mysqladmin.

Чтобы выяснить, включен ли сервер, используйте

mysqladmin ping

Чтобы выяснить, какая версия программного обеспечения сервера MySQL установлена на вашей машине, используйте

mysqladmin version

Чтобы получить короткое или длинное сообщение о статусе сервера, исполь­зуйте

mysqladmin status mysqladmin extended-status

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

mysqladmin processlist

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

mysqladmin kill idl,id2,id3…

Чтобы напечатать значения переменных MySQL, используйте

mysqladmin variables

]]>
http://honest-monitor.info/svodka-opcij-mysqladmin/feed
Резюме базы данных http://honest-monitor.info/rezyume-bazy-dannyx http://honest-monitor.info/rezyume-bazy-dannyx#comments Mon, 07 Dec 2009 23:01:51 +0000 admin http://honest-monitor.info/?p=123

Сервер можно запустить с помощью mysqladmin, с помощью запуска ис­полняемого файла mysqld или с помощью Диспетчера сервисов Windows.

Завершить работу сервера можно с помощью mysql. server stop или mysqladmin shutdown.

Используйте mysqlshow или SHOW для получения информации о текущем состоянии базы данных и сервера MySQL.

Установить переменные можно с помощью set переменная-значение;.

я Увидеть список выполняемых потоков можно с помощью show processlist, а завершить их выполнение — с помощью kill id_npoiiecca.

я Очистить кэши можно с помощью FLUSH и RESET.

Увеличить скорость работы объединений можно с помощью analyze table имя_ та блицы;.

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

]]>
http://honest-monitor.info/rezyume-bazy-dannyx/feed
Резервирование и восстановление данных http://honest-monitor.info/rezervirovanie-i-vosstanovlenie-dannyx http://honest-monitor.info/rezervirovanie-i-vosstanovlenie-dannyx#comments Mon, 07 Dec 2009 22:59:40 +0000 admin http://honest-monitor.info/?p=120

В этой главе описывается, как резервировать (т.е. делать копии баз данных),

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

Мы рассмотрим следующие вопросы.

Резервирование баз данных.

Восстановление с помощью резервных копий.

Проверка и восстановление таблиц.

]]>
http://honest-monitor.info/rezervirovanie-i-vosstanovlenie-dannyx/feed
Резервирование и восстановление баз данных http://honest-monitor.info/rezervirovanie-i-vosstanovlenie-baz-dannyx http://honest-monitor.info/rezervirovanie-i-vosstanovlenie-baz-dannyx#comments Mon, 07 Dec 2009 22:56:41 +0000 admin http://honest-monitor.info/?p=117

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

В MySQL имеется несколько вариантов резервирования баз данных.

Применение сценария mysql dump для создания дампа, т.е. файла, содер­жащего операторы SQL, необходимые для воссоздания базы данных.

Применение сценария mysqlhotcopy для создания файла данных. Этот сценарий непосредственно копирует файлы данных конкретной базы дан­ных.

Непосредственное создание резервной копии файлов данных вручную. Это фактически эквивалентно применению mysqlhotcopy, но в данном слу­чае все делается вручную. Если вы предпочтете использовать этот вариант, необходимо перед копированием прекратить работу базы данных или обно­вить и блокировать все таблицы, чтобы обеспечить их внутреннюю согласо­ванность. И mysqldump, и mysqlhotcopy обновят и блокируют таблицы за вас, поэтому применение указанных сценариев является более простым и безопасным.

■ Использование команд BACKUP TABLE и RESTORE TABLE для резерви­рования или восстановления конкретной таблицы или множества таблиц.

Мы рассмотрим каждый из этих вариантов по очереди.

Не забывайте также о том, что хотя резервирование и является жизненно .важ­ным для нормальной работы базы данных, на время выполнения резервирования доступ пользователей к базе данных ограничивается. Зачем? Чтобы получить со­гласованный “снимок” базы данных, таблицы должны быть обновлены и во время копирования должны оставаться в неизменном состоянии. Этого можно добиться, заблокировав таблицы (как это и бывает в большинстве случаев) или выключив сервер (чего делать не рекомендуется), но в любом случае на время выполнения резервирования приходится уменьшить способность базы данных к реагированию на запросы.

Одним из решений этой проблемы является использование репликации. Вы получаете возможность отключить один компонент системы и выполнить резерв­ное копирование, в то время как пользователи продолжают счастливо делать свое дело. Мы обсудим использование репликации достаточно подробно в главе 16, “Репликация баз данных”.

]]>
http://honest-monitor.info/rezervirovanie-i-vosstanovlenie-baz-dannyx/feed
Резервирование и восстановление с помощью mysqldump http://honest-monitor.info/rezervirovanie-i-vosstanovlenie-s-pomoshhyu-mysqldump http://honest-monitor.info/rezervirovanie-i-vosstanovlenie-s-pomoshhyu-mysqldump#comments Mon, 07 Dec 2009 22:49:43 +0000 admin http://honest-monitor.info/?p=113

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

Ниже приведен типичный пример использования этого сценария.


mysqldumpopt имя_пользователя пароль employee > backup.sql

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

В результате применения указанного сценария к простой базе данных employee создается файл вывода, подобный показанному в листинге 14.1.

Листинг 14.1. Пример вывода сценария mysqldump

MySQL dump 10.2

– Host: localhost Database: employee

Server version 4.1.O-alpha-max-debug


— Table structure for table ‘assignment’

DROP TABLE IF EXISTS assignment;

CREATE TABLE assignment (

clientID int(11) NOT NULL default ‘0′, employeelD int (11) NOT NULL default ‘0′, workdate date NOT NULL default ‘0000-00-00′, hours float default NULL,

PRIMARY KEY (clientID,employeelD,workdate) ) TYPE=InnoDB CHARSET=latinl;

Dumping data for table ‘assignment’

/* 140000 ALTER TABLE assignment DISABLE KEYS */; LOCK TABLES assignment WRITE; INSERT INTO assignment VALUES

(1,7513,’0000-00-00′,5), (1,7513,’2003-01-20′,8.5); UNLOCK TABLES;

7*140000 ALTER TABLE assignment ENABLE KEYS */;
Table structure for table ‘client’

DROP TABLE IF EXISTS client;

CREATE TABLE client (

clientID’int(11) NOT NULL auto_increment, name varchar(40) default NULL, address varchar(100) default NULL, contactPerson varchar(80) default NULL, contactNumber varchar(12) default NULL, PRIMARY KEY (clientID)

) TYPE=InnoDB CHARSET=latinl;

Dumping data for table ‘client’

/* 140000 ALTER TABLE client DISABLE KEYS */; LOCK TABLES client WRITE; INSERT INTO client VALUES


(1,’Telco Inc’,'1 Collins St Melbourne’,'Fred Smith’,'95551234′),

(2,’The Bank’,'100 Bourke St Melbourne”,’Jan Tristan’,'95559876′); UNLOCK TABLES;

/*!40000 ALTER TABLE client ENABLE KEYS */;

Table structure for table ‘department’

DROP TABLE IF EXISTS department; CREATE TABLE department (

departmentID int (11) NOT NULL auto_increment,

name varchar(30) default NULL,

PRIMARY KEY (departmentID) ) TYPE=InnoDB CHARSET=latinl;

— Dumping data for table ‘department’

/*140000 ALTER TABLE department DISABLE KEYS */; LOCK TABLES department WRITE; INSERT INTO department VALUES

(42, ‘Finance’),

(128,’Research and Development’), (129,’Human Resources’), (130,’Marketing’) , (131,’Property Services’); UNLOCK TABLES;

/* 140000 ALTER TABLE department ENABLE KEYS */;

— Table structure for table ‘employee’

DROP TABLE IF EXISTS employee; CREATE TABLE employee (

employeelD int(11) NOT NULL auto_increment,

name varchar(80) default NULL,

job varchar(30) default NULL,

departmentID int (11) NOT NULL default ‘0′,

PRIMARY KEY (employeelD) ) TYPE=InnoDB CHARSET=latinl;


— Dumping data for table ‘employee’

/*140000 ALTER TABLE employee DISABLE KEYS */; LOCK TABLES employee WRITE; INSERT INTO employee VALUES

(6651, ‘Ajay Patel’, ‘ProgrammerM28) , (7513,’Nora Edwards’,'Programmer’,128), (9006,’Candy Burnett’,'Systems Administrator’,128), (9842, ‘Ben Smith’,'DBA’, 42), (9843,’Fred Smith’,'DBA’,131); UNLOCK TABLES;

/*140000 ALTER TABLE employee ENABLE “KEYS

Table structure for table ‘employeeSkills’

DROP TABLE IF ExTSTS employeeSkills;

CREATE TABLE’employeeSkills (

employeelD int (11) NOT NULL default ‘0′, skill varchar(15) NOT NULL default “, PRIMARY KEY (employeelD,skill)

) TYPE=InnoDB CHARSET=latinl;

Dumping data for table ‘employeeSkills’

/*140000 ALTER TABLE employeeSkills DISABLE KEYS */; LOCK TABLES employeeSkills WRITE; •■ INSERT INTO employeeSkills VALUES

(6651,’Java’),

(6651,’VB’),

(7513,’C'),

(7513,1 Java’),

(7513, ‘Perl’),

(9006,’Linux’),

(9006,’NT’),

(9842,’DB2′); UNLOCK TABLES;

/*140000 ALTER TABLE employeeSkills ENABLE KEYS */;


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

1. Создать базу данных с подходящим именем на нужной машине.

2. Загрузить файл копии с помощью команды mysql имя_пользователя -р < backup.sql

Сценарий mysqldump имеет множество опций. Здесь мы использовали опцию —opt, которую могут сопровождать следующие параметры.

quick. Заставляет MySQL направить данные дампа сразу в файл, минуя буфер памяти (что предполагается По умолчанию). В результате процесс ускорится.

add-drop-table. Дает MySQL указание добавлять оператор DROP TABLE перед каждым оператором CREATE TABLE в дампе (см. листинг 14.1),

add-locks. Добавляет операторы LOCK TABLES и UNLOCK TABLES (их вы тоже можете увидеть в файле дампа).

extend-insert. Заставляет MySQL использовать многострочный син­таксис вставки для добавления множества строк с помощью одного опера­тора INSERT. Так, в нашем листинге соответствующий оператор выглядит так:

INSERT INTO employeeSkills VALUES (6651,’Java’), (6651,’VB’), (7513,’C'),

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

■—lock-tables. Заставляет MySQL блокировать все таблицы, прежде чем начать создание дампа.

Обратите внимание на то, что опция —opt (означающая optimized — оптими­зированное) будет оптимизировать время, необходимое для последующей загрузки дампа, а не время, потраченное на создание дампа. Процесс создания файла дампа может оказаться долгим.

Вот еще несколько полезных опций.

databases. Позволяет указать не одну, а несколько баз данных для дампа.

all-databases. Дает MySQL указание создать дамп всех имеющихся баз данных.

allow-keywords. Если имеются имена полей, которые являются клю­чевыми словами MySQL (или могут стать таковыми в будущем), эта опция требует от MySQL квалифицировать (т.е. сопровождать) имя каждого столб­ца именем таблицы.

-^d или –no-data. Создавать дамп только структуры базы данных, но не ее содержимого. Это может оказаться полезным при размещении и тестиро­вании базы данных на разных машинах.

Преимуществами использования mysqldump являются простота и автомати­ческая блокировка таблиц.

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

Во-вторых, поскольку сценарий mysqldump работает через сервер MySQL, то будет выполняться медленнее, чем mysqlhotcopy. Сценарий mysqlhotcopy использует сервер MySQL не слишком активно, а выполняет значительную часть своей работы, обращаясь непосредственно к файловой системе.

]]>
http://honest-monitor.info/rezervirovanie-i-vosstanovlenie-s-pomoshhyu-mysqldump/feed
Резервирование и восстановление с помощью mysqlhotcopy http://honest-monitor.info/rezervirovanie-i-vosstanovlenie-s-pomoshhyu-mysqlhotcopy http://honest-monitor.info/rezervirovanie-i-vosstanovlenie-s-pomoshhyu-mysqlhotcopy#comments Mon, 07 Dec 2009 22:47:56 +0000 admin http://honest-monitor.info/?p=110

Сценарий mysqlhotcopy отличается от mysqldump тем, что копирует непо­средственно файлы данных базы данных, а не данные, необходимые для восста­новления, с помощью соединения с сервером. При этом связь с сервером все равно требуется, чтобы обновить и блокировать таблицы базы данных, но по­скольку данный сценарий в основном использует операции с файловой системой, а не запросы к базе данных, он должен в целом выполняться несколько быстрее, чем сценарий mysqldump.

Данный сценарий можно использовать так, как показано ниже.

mysqlhotcopy имя_пользователя имяБД размещение_копии

Этот сценарий является сценарием Perl. Если вы используете Unix или подоб­ную ей операционную систему, у вас почти наверняка где-то уже есть исполняе­мый файл perl. В Windows, чтобы использовать Perl, вам нужно установить его. Если установщика Perl для Windows у вас еще нет, загрузите его с узла ActiveState:

www.activestate.com/Products/ActivePerl

]]>
http://honest-monitor.info/rezervirovanie-i-vosstanovlenie-s-pomoshhyu-mysqlhotcopy/feed
Администрирование MySQL http://honest-monitor.info/administrirovanie-mysql http://honest-monitor.info/administrirovanie-mysql#comments Mon, 07 Dec 2009 22:44:27 +0000 admin http://honest-monitor.info/?p=106

Файлы, создаваемые mysqlhotcopy, — это точные копии файлов данных ба­зы данных. Чтобы использовать эти копии, необходимо остановить работу сервера MySQL и заменить файлы данных в каталоге данных MySQL соответствующими файлами-копиями.

]]>
http://honest-monitor.info/administrirovanie-mysql/feed
Резервирование и восстановление вручную http://honest-monitor.info/rezervirovanie-i-vosstanovlenie-vruchnuyu http://honest-monitor.info/rezervirovanie-i-vosstanovlenie-vruchnuyu#comments Mon, 07 Dec 2009 22:42:13 +0000 admin http://honest-monitor.info/?p=102

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

Это значит, что сначала придется открыть сеанс MySQL. Затем можно ввести команду LOCK TABLES, чтобы блокировать все таблицы, которые планируется резервировать:

lock tables employee read, department read, client read, assignment read, employeeSkills read;

Оператор LOCK TABLES в качестве параметров получает список имен таб­лиц и тип блокировки, который необходимо применить: READ или WRITE. Для резервирования блокировки для чтения обычно бывает достаточно. Это означает, что другие потоки (связывающиеся объекты) могут продолжать читать данные таблиц, но не смогут записывать в них данные, пока резервирование не будет завершено.

Блокировка в таких ситуациях очень важна, поскольку копирование может занять достаточно много времени. В нашем случае будет катастрофой, если, на­пример, после копирования таблицы employee, но еще перед копированием таб­лицы department, кто-то удалит информацию о всех служащих какого-то отдела и информацию о самом отделе. Полученная в результате квпия будет несогласо­ванной, поскольку будет содержать информацию о служащих несуществующего отдела.

Затем следует применить команду FLUSH TABLES: flush tables;

Если необходимо резервировать все базы данных, можно совместить эти два шага, используя команду

flush tables with read lock;

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

По завершении копирования файлов следует, конечно, разблокировать таблицы:

unlock tables;

Эта процедура аналогична сценарию mysqlhotcopy, и точно так же вы можете восстановить базу данных.

]]>
http://honest-monitor.info/rezervirovanie-i-vosstanovlenie-vruchnuyu/feed
Резервирование и восстановление с помощью BACKUP TABLE и RESTORE TABLE http://honest-monitor.info/rezervirovanie-i-vosstanovlenie-s-pomoshhyu-backup-table-i-restore-table http://honest-monitor.info/rezervirovanie-i-vosstanovlenie-s-pomoshhyu-backup-table-i-restore-table#comments Mon, 07 Dec 2009 22:38:43 +0000 admin http://honest-monitor.info/?p=99

Альтернативу только что рассмотренным вариантам составляют два оператора SQL, которые можно использовать для получения тех же результатов. Это — опера­торы BACKUP TABLE и RESTORE TABLE. Соответствующие команды работают только с таблицами MylSAM.

Вы можете создать резервную копию таблицы MylSAM с помощью команды

backup table tl to ‘путь/к/копии‘;

Обратите внимание на то, что в Windows необходимо также указать букву дисковода, например,

backup table tl to ‘с:/путь/к/копии’;

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

Можно также указать список таблиц, разделенный запятыми, однако каждая из таких таблиц будет блокироваться и копироваться отдельно, по очереди. Если необходимо получить согласованный набор таблиц, следует сначала применить оператор LOCK TABLES (о том, как это сделать, говорилось в предыдущем раз­деле, “Резервирование и восстановление вручную”).

Чтобы восстановить данные с помощью копии, введите

restore table tl’from 1c:/tmp’;

Это сработает только в том случае, если восстанавливаемых таблиц в теку­щей базе данных не существует. Если уже имеется таблица с соответствующим именем, перед использованием оператора RESTORE следует применить команду DROP TABLE.

И подчеркнем еще раз, RESTORE работает только с таблицами MylSAM.

]]>
http://honest-monitor.info/rezervirovanie-i-vosstanovlenie-s-pomoshhyu-backup-table-i-restore-table/feed