Дружим vsftpd с mysql через mysql_pam на Centos 6-4!

1. Установка сервиса vsftd

yum install vsftpd

Далее »

Как работает полусинхронная репликация MySql?

Последнее время много вопросов начинает возникать вокруг полу синхронной репликации (semi-synchronous replication). Я обнаружил несколько частых неправильных суждений о механизме работы полусинхронной репликации.


Во-первых, несмотря на своё имя «полу-синхронная репликация» до сих пор асинхронна. Полу-синхронное представление это просто не удачно выбранное имя, поскольку нет  четкой обратной связи между коммитом транзакции на мастере и коммитами транзакций на репликах. Чтобы понять почему, давайте сначала четко определиться с этим понятием. Что в действительности означает синхронная репликация. Считаю, что таковой будет репликация, когда на мастере завершается транзакция, и перед своим  коммитом она дожидается успешного завершения транзакции на всех репликах. 

Далее »

Как я устанавливал принтер Canon i-SENSYS MF4018 на Ubuntu 12

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

В итоге все получилось.
Инструкция по горячим следам:

  1. Добавить в источники deb http://gb.archive.ubuntu.com/ubuntu/ quantal-updates main restricted
  2. sudo apt-get update
  3. sudo apt-get install cups-driver-gutenprint
  4. Скачать драйвер для MF4010 c офицального сайта http://software.canon-europe.com/products/0010498.asp тек.версия 2.6 ( расширение exe)
  5. Это архив. Найдите нужную директорию с дебками. Для меня это было ~/Downloads/canon/uk_eng/64-bit_Driver/Debian
  6. и соответственно из этой директории sudo dpkg -i cndrvcups*
  7. запускаем из терминала system-config-printer
  8. Устанавливаем smb принтер
  9. Enjoy! :)

 

Магический запрос для управления MySql партициями

Пользуясь RANGE (или RANGE COLUMNS) партициями опираясь на время дату, то может возникнуть вполне нормальный вопрос когда и как создавать «следующую» партицию? И когда и как удалять старые?

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

mysql> SELECT * FROM sql_range_partitions \G
************************* 1. ROW *************************
            table_schema: test
              TABLE_NAME: city
sql_drop_first_partition: ALTER TABLE `test`.`city` DROP partition `p3`
  sql_add_next_partition: ALTER TABLE `test`.`city` ADD partition (partition `p_20160101000000` VALUES less than (736329) /* 2016-01-01 00:00:00 */ )
************************* 2. ROW *************************
            table_schema: test
              TABLE_NAME: quarterly_report_status
sql_drop_first_partition: ALTER TABLE `test`.`quarterly_report_status` DROP partition `p3`
  sql_add_next_partition: ALTER TABLE `test`.`quarterly_report_status` reorganize partition `p_maxvalue` INTO (partition `p_20110401000000` VALUES less than (1301608800) /* 2011-04-01 00:00:00 */ , partition p_maxvalue VALUES less than MAXVALUE)

### Рассмотрим поближе где же тут магия?

 

Запрос умеет делать только DROP PARTITION и ADD PARTITION для таблиц ,использующих RANGE партицирование. Но давайте, обсудим:

  •  Запрос автоматически вычисляет значение LESS THAN для новой партиции. Используя для этого постоянное значение, временной или цифровой.
  • Запрос понимает особенности версии 5.1, которая не позволяет ранжирование таблиц основываясь на DATETIME — только через целые числа. Запрос автоматически переводит значения сам основаваясь на TO_DAYS() или UNIX_TIMESTAMP()
  • Запрос распознает значение MAXVALUE для партиции. Если такой раздел уже существует, то будет отправлено не добавление раздела, а его реорганизация.
  •  В наименовании новой партиции содержиться полезная информация. Название p_20160101000000 говорит намного больше чем произвольное p17.
  • Также он рассматривает общий случай обработки NULL — LESS THAN (0) ****

Исходя из этого мне не нужно говорить запросу:»Я хочу трезхмесячный интервал между партициями опираясь на значение TO_DAYS()». Запрос понимает это сам. Далее »

Удобно смотрим лог запросов на севере

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

SET GLOBAL log_output = 'TABLE';
SET GLOBAL general_log = 'ON';

Далее »

Дампим базу MySql в несколько потоков

Очень полезная вещь, если можете сливать дамп MySql в несколько потоков. Т.е. одновременно идет скачивание с нескольких таблиц. За счет этого пока, сливаются пара-тройка тяжеловесов успевают прощелкаться остальные маленькие таблички — что  существенно сокращает время.

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

bash> mysql mydatabase -N -e "show tables" | xargs -n1 -P3 -I tbl_name sh -c "mysqldump mydatabase tbl_name > tbl_name.sql

вместо mydatabase запишите нужно имя БД. Если нужно указать логин/пароль  - аргументы -u -p соответственно.

После выполнения этой команды, в директории будет почти весь дамп MySql базы. Там не будет хранимых процедур. Неудобно,но они сохраняются отдельно:

bash> mysql  --routines --no-data --no-create-info --skip-triggers mydatabase > procedures.scrip

Ну вот, теперь дамп полный!

О вариантах копирования БД также пожете прочитать тут , а так же 10 вещей, которые нужно помнить о MySql бэкапах

Если понравилась статья — оставьте коментарий.

 

 

 

Как MySql выполняет ORDER BY

Достаточно интересный вопрос оптимизации запросов, это увеличение производительности при ORDER BY и GROUP BY выборках. Наткнулся, на достаточно интересный материал по этой теме, перевел.И  не судите строго =)

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

Исследуя этот вопрос, я решил написать описание алгоритма,как это работает. Первая часть описания о ORDER BY. Надеюсь в следующих частях, опишу как работа GROUP BY связана с ORDER BY.

Доступные методы получения упорядоченных последовательностей

У MySql есть два метода упорядочивания потоков. Далее »

Установка и настройка Zabbix и шаблоны MySql часть 1

Настройка и установка zabbix

Дано:

  • решение установить новый zabbix 2.0.3, сервер на не молодой но проверенной Ubuntu 10.04.4
  •  согласие руководства для проведения этой работы =)

Хочу поделиться опытом установки zabbix в связки с MySql и а также настройками мониторинга. Настройки стараюсь оставить  только самые необходимые —  чтобы база не была перезагружена лишними данными. Может кому будет подспорьем и экономией времени шаблоны и текст настройки. Далее »

Сравнить содержимое таблиц Mysql

столкнулся с задачей сравнения данных в таблицах. Maatkit не помог. Он подразумеват, что данные хранятся на разных серверах и названия БД одинаковые. Сообразил вот такой скрипт

mysqldump -h127.0.0.1 --skip-comments --skip-extended-insert -uroot -pmetallica  --databases dbname1     --tables table1 table2>1.sql 
mysqldump -h127.0.0.1 --skip-comments --skip-extended-insert -uroot -pmetallica  --databases dbname2  --tables table1 table2>2.sql
 
diff 1.sql 2.sql

форки MySql и его тулзы

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