четвер, 31 жовтня 2013 р.

MySQL 5.6: додано перевірку контрольних сум даних під час реплікації

Версія 5.6 бази даних MySQL з'явилася вже досить давно. і, гадаю, всі вже обізнані з вдосконаленями, які були впроваджені в цій версії. Зокрема, мене свого часу приємно вразило зростання продуктивності -- швидкість виконання деяких запитів в застосуванні, з яким я працював, зросла у 10-20 разів. Проте, зараз хочу звернутися до іншої доданої функціональності -- використання контрольних сум під час реплікації.

Технологія реплікації в найпростішому випадку передбачає дублювання інформації певного сервера баз даних (майстера) на іншому сервері (слейві). Одне з можливих використань реплікації -- резервне копіювання даних. При цьому важливим є гарантування ідентичності даних на майстері і слейві. На жаль, MySQL 5.6 не дає повної гарантії відповідності даних, проте має певне вдосконалення порівняно з версією 5.5: можливість контроля цілісності бінарних лог-файлів (які є засобом передачі інформації від майстера до слейву) за допомогою контрольних сум. Контрольні суми можуть вираховуватися як на майстері, так і на слейві. У разі пошкодження бінарних логів здійснюється відповідна сигналізація про помилку. Про це стисло і наглядно йдеться в статті Peter Zaitsev "Replication checksums in MySQL 5.6".

До речі, один з наслідків впровадження контрольних сум у реплікації в версії 5.6 -- це порушення сумісності з 5.5. Щойно спостерігав, як перехід з 5.5 до 5.6 на майстері призвів до зупинки слейва, який залишився у версії 5.6:

mysql> show slave status \G...
             Slave_IO_Running: No
            Slave_SQL_Running: Yes
...

                Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Slave can not handle replication events with the checksum that master is configured to log; the first event 'mysql-bin.000035' at 834715620, the last event read from './mysql-bin.000037' at 120, the last byte read from './mysql-bin.000037' at 120.'
...


Вочевидь, варто оновлювати версії на майстері і слейві синхронно.

вівторок, 29 жовтня 2013 р.

Книга тижня від CiscoPress: Designing Networks and Services for the Cloud

Чергова важлива книга від CiscoPress з 50% знижкою протягом поточного тижня у eBook Deal of the Week.

 Designing Networks and Services for the Cloud

By Sudhir Modali, Muhammad Abid, Huseni Saboowala
Published May 20, 2013 by Cisco Press
Series: Networking Technology
Pages: 336
 

Формати:  EPUB, MOBI, та PDF.

Зміст книги доступен тут.


Важливі теми:
  •  Virtualization Basics
  •  Server Virtualization
  •  Network Virtualization
  •  Storage Virtualization
  •  Cloud Service Models (SaaS, PaaS, IaaS)
  • Deployment Models for the Cloud (public, private, hybrid)
та багато іншого.

пʼятниця, 18 жовтня 2013 р.

Встановлення та оновлення Oracle VirtualBox в Ubuntu

Oracle VirtualBox -- безкоштовний та зручний у використанні гіпервізор для віртуалізації. Проте, встановлення VirtualBox на платформі Ubuntu має певні особливості. Використання стандартного шляху інсталляції пакету за допомогою Центру програмного забезпечення (Software Center) супроводжується помилками та встановлена програма в результаті виявляється непрацездатною. Що треба робити в цій ситуації, описано далі.

Видалити ті елементи VirtualBox, які вже були встановлені. Їх перелік можна отримати так:

dpkg -l '*virtualbox*'

Видаляємо їх всі, наприклад:

dpkg -r virtualbox

Встановити пакет для підтримки динамічних модулів ядра (Dymamic Kernel Modules Support) dkms:

apt-get install dkms

Завантажити актуальну версію VirtualBox, що відповідає версії та архитектурі встановленої у вас операційної системи, зі сторінки https://www.virtualbox.org/wiki/Linux_Downloads, наприклад:

wget http://download.virtualbox.org/virtualbox/4.3.0/virtualbox-4.3_4.3.0-89960~Ubuntu~precise_amd64.deb

Встановити VirtualBox:

dpkg -i  virtualbox-4.3_4.3.0-89960~Ubuntu~precise_amd64.deb

Завантажити пакунок доповнень (Extension Pack) зі сторінки https://www.virtualbox.org/wiki/Downloads:

wget http://download.virtualbox.org/virtualbox/4.3.0/Oracle_VM_VirtualBox_Extension_Pack-4.3.0-89960.vbox-extpack

Запустити VirtualBox:

virtualbox

Обрати в головному меню Файл -- Налаштування... -- Розширення, обрати завантажений файл.

Процедуру встановлення VirtualBox завершено.

У разі, коли потрібно оновити вже встановлену версію VirtualBox на новішу:

dpkg -i virtualbox-4.3_4.3.14-95030~Ubuntu~raring_amd64.deb

Після чого встановити пакунок доповнень (Extension Pack) відповідної версії подібно до того, як описано вище.

четвер, 17 жовтня 2013 р.

Книга тижня від CiscoPress: Data Center Fundamentals

50% знижка на корисну книгу на сайті видавництва CiscoPress.

Data Center Fundamentals

By Maurizio Portolani, Mauricio Arregoces
Published Dec 04, 2012 by Cisco Press
Series: Fundamentals
Pages: 1104


Книжка доступна у форматах EPUB, MOBI, та PDF. При стандартній ціні $66 протягом поточного тижня (eBook Deal of the Week) її можна придбати за $33. Зміст книги можна переглянути тут (оберіть вкладку "Sample Content"). Гадаю, ця книжка буде корисна в першу чергу тим, хто починає знайомитися з технологіями дата-центрів, але також містить цікавий матеріал для досвічених інженерів -- зокрема, технології безпеки, віртуалізація, балансування навантаження. Планую додати її у перелік рекомандованої літератури в своєму майбутньому курсі з технологій дата-центрів.

середа, 16 жовтня 2013 р.

Синхронізація часу в віртуальних машинах

Є одна проблема з підтримкою точного часу на віртуальних машинах (ВМ).
Все добре, поки ВМ знаходиться в активному стані та за точністю часу на ній слідкує демон ntpd [1]. Проблема виникає тоді, коли сервер-носія має бути перезавантажений, або вимкнений на деякий час. За звичай під час завершення роботи носія всі ВМ, що знаходяться на ньому, переводяться в "сплячий" режим (suspended), під час якого їх поточний стан (повний вміст оперативної пам’яті) зберігається на диску носія. Коли носій завантажується і відновлює свою роботу, ВМ відтворюють свій збережений стан на момент, що передував вимкненню носія (resumed).
Між моментами переходу ВМ у сплячий режим та відновлення їх стану проходить певний час. Але ВМ після відновлення роботи "перебувають у минулому", тобто вважають за поточний той час, в який відбувся перехід до сплячого режиму. Виникає різниця між поточним власним часом ВМ та дійсним поточним часом. Ця різниця дорівнює принаймні часу перезавантаження носія, що для сучасних серверів становить 5-10 хвилин. Різниця може бути і більшою, якщо носій якийсь час був вимкнений.
Відновити точний час на ВМ покликаний  демон ntpd. Проте, якщо різниця перебільшує певне порогове значення (panic threshold), яке типово складає 1000 секунд [2], ntpd аварійно завершить роботу.
Рішенням може стати періодичний контроль наявності на ВМ працюючого демона ntpd, та запуск йогоу разі відсутності. Також доречно контролювати різницю між поточним часом ВМ та дійсним часом. У разі, якщо ця різниця значна (ознакою цього є те, що демон ntpd перебуває в несінхронізованому стані), варто зупинити ntpd, встановити правильний час за допомогою утіліти ntpdate, після чого знову запустити ntpd.
Пропоную вашій увазі нескладний скрипт для Linux (див. нижче), який виконує означені дії. Розмістіть його в каталозі /etc/cron.d для щогодинного запуску.

Джерела:
  1. ntpd - Network Time Protocol (NTP) Daemon
  2. Manual Reference Pages  - NTP.CONF (5)

#!/bin/sh

LOCK="/var/lock/ntpwatch/ntpwatch.lock"

mkdir -p `dirname $LOCK`
(
  if ( ! flock -nx 200 ); then
    echo "Cannot obtain lock (other instance may be running)"
    exit 1
  fi

  if ( ! service ntpd status ); then
    echo "ntpd is not running, starting"
    service ntpdate start
    service ntpd start
  fi

  echo "Waiting up to 300 sec until ntpd is synchronized"
  ( while ! ntpstat;do sleep 5;done ) || sleep 300

) 200>$LOCK
rm -f $LOCK

пʼятниця, 11 жовтня 2013 р.

Поради для починаючих блогерів (звичайно, що не від мене :-))

Звичайно, що мені ще зарано щось радити починаючим блогерам, адже сам ніяк не зроблю написання публікацій системним. Проте, з цікавістю прочитав поради значно досвіченішої людини -- Івана Пепельняка, і вважаю їх настільки цінними, що не можу не поділитися.

Отже: How do you write a blog post a day? by Ivan Pepelnjak