Восстановление дампа сделанного mysqldump

Странно, но в интернете найти эту информацию довольно непросто. Куча левых всяких рекомендаций. А на самом деле всё просто. Восстановить дамп можно командой:

# mysql -u [user_name] -p < mysql_dump.sql.

Вместо [user_name] подставьте имя пользователя, я лично восстановление делаю от рута. А в mysql_dump,sql, собственно, дамп сделанный mysqldump утилитой. Опция -p указывает на авторизацию с паролем, после нажатия ентера у вас спросят пароль. Вот и всё, собственно. Сделать дамп можно командой:

# mysqldump -u root -p -f database_name > file_with_dump.sql

Здесь параметр -f database_name задаёт имя базы, которую сохраняем. Если надо всё — заменяем на —all-databases. Эта опция укажет сохранять все базы на сервере. Чтобы не вводить каждый раз пароль, можно указать его прямо в команде (это надо, если вы делаете дамп по крону из скрипта), впрочем, с точки зрения безопасности тут возникают вопросы, особенно если пароль рутовый для мускуля. Вот если бы мускуль понимал хотя бы md5 пароли… Впрочем не факт, что не понимает, просто может я не знаю :)

Оптимизация WordPress, W3 Total Cache и иже с ней

Здравствуй-здравствуй, дорогой читатель.

Тема оптимизации WordPress неоднократно и здорово муссировалась на разных блогах, форумах, порталах, и прочих, прочих. Да, WP работает медленно, в базовой комплектации, и сделать с этим что-либо довольно сложно. Дело осложняется хостером. Дело в том, что блоги как правило находятся на бюджетных хостингах, стоящих в районе 150 р/мес, и этот блог не исключение. Зачастую же, разные пособия говорят о том, как можно улучшить железо и хостинг, путём установки дополнительной памяти, установкой расширений для PHP, и прочего, прочего. Я решил описать более-менее доступные варианты, но не обойду и варианты более дорогие. Блог на wordpress, если им более или менее заниматься, начинает набирать популярность, посетителей становится всё больше и больше, и вы начинаете подумывать о том, что хостинг — ну например на такой каке как джино (где находится мой нынешний сайт) — может и не возрадоваться возросшей нагрузке, да и увеличить время отдачи страницы секунд так до 10-15. Это не есть хорошо, ага, особенно если учесть что нормальный пользователь шлёт сайт в пеший сексуальный поход после 4-5 секунд загрузки. Если обобщить, то есть несколько вариантов как улучшить ситуацию:

Читать далее Оптимизация WordPress, W3 Total Cache и иже с ней

MySQL Workbench — Визуальный редактор MySQL баз

День добрый, дорогие читатели.

Сегодня я решил отступить от обычного своего перемалывания костей обществу, и написать о чем-то, относящемся непосредственно к моей компетенции :). Речь пойдёт о замечательном инструменте MySQL Workbench — инструменте разработки, проектирования и обслуживания баз данных MySQL. Это настоящая находка для программиста PHP, да и не только PHP, которому приходится зачастую, помимо выполнения прямых обязанностей ещё и выступать в роли архитектора баз данных. Этот продукт позволяет создавать новую БД, вносить изменения в уже существующие, устанавливать связи, выполнять запросы — в реальном времени и наглядном виде. Если кто-то пользовался DbDesigner от fabforce — то это почти то же самое, только намного, намного лучше. Достаточно сказать, что связи между таблицами — теперь показываются на EER диаграмме, какие именно поля используются, а заодно, по вашему желанию, создаёт индексы там, где требуется для нормальной и быстрой работы связей. Также есть возможность Reverse Engineer‘инга таблиц из уже рабочей базы. Разработчиком этого продукта является Sun Microsystems, а версия MySQL Workbench Community Edition — полностью бесплатна и доступна для скачивания по этой ссылке: http://www.mysql.com/products/workbench/ — уверяю, MySQL Workbench Community Edition хватит для большинства типовых задач веб-разработки. Тем более, что этот инструмент куда как более удобен в использовании (особенно в конфигурации с несколькими мониторами) нежели популярный phpMyAdmin, с веб интерфейсом (хотя он и незаменим для работы на удалённом хостинге).

Читать далее MySQL Workbench — Визуальный редактор MySQL баз

Этот хитрый LEFT JOIN

Введение (можно и пропустить).

Рано или поздно, так или иначе, любому программисту связанному с системами хранения данных (как MySQL, к примеру) приходится сталкиваться с проблемой соединения таблиц. (Здесь и далее, условимся, речь идёт о связке PHP + MySQL). Вообще сразу скажу, чего я имею ввиду. Вот, предположим, есть у нас пара таблиц — users и user_ip_address. В программке Navicat наваял некую схемку, чтобы было проще представить себе структурку:

Mysql Join
Mysql Join

Кроме того, я добавил так называемый Foreign Key к таблице user_ip_address, связав её с users. Запрос выглядит так:

ALTER TABLE `user_ ip_address`
ADD CONSTRAINT `ip_to_user`
FOREIGN KEY (`user_id`)
REFERENCES `users` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE;

Теперь если, скажем мы удаляем запись о пользователе в таблице users, БД сама удалит все связанные данные в таблице user_ip_address. ON UPDATE можно не ставить. Foreign Keys — очень мощная и кошерная штука. Она здорово облегчает работу, перекладывая заботу о целостности данных на плечи БД.

Так вот, в общем и целом, эти таблицы описывают структуру с юзером, и его айпишниками. В таблице users есть три пользователя — alex, john & verner, у Алекса и Джона есть записи в таблице user_ip_addresses, а у Вернера — нет. Собственно, нас интересуют только и исключительно поля user_id в таблице user_ip_address, и поле id в таблице users. Как вы уже догадались, они связаны по этим полям. И вот, представим себе ситуацию, что вам надо сделать выборку всех пользователей с соответствующими им ip… Работёнка не такая уж и тривиальная поначалу. Обычно новички (да и я в своё время) делают как… сначала делают выборку всех пользователей, запросом типа:

 SELECT * FROM `users`; 

А потом благополучно перебирают получившийся массив в цикле на PHP, и на каждой итерации совершают ещё по запросу, вида

 SELECT * FROM `user_ip_address` WHERE `user_id`='{$uid}'; 

Нет, я ничего не говорю, метод рабочий, но если у вас, допустим, форум с 1000 пользователей — сервер загнётся, потому как это 1001 запрос. Если надо просто получить список ip, то можно сделать и так: Читать далее Этот хитрый LEFT JOIN