Версія 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.'
...
Вочевидь, варто оновлювати версії на майстері і слейві синхронно.
четвер, 31 жовтня 2013 р.
вівторок, 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.
Зміст книги доступен тут.
Важливі теми:
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) відповідної версії подібно до того, як описано вище.
Видалити ті елементи 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"). Гадаю, ця книжка буде корисна в першу чергу тим, хто починає знайомитися з технологіями дата-центрів, але також містить цікавий матеріал для досвічених інженерів -- зокрема, технології безпеки, віртуалізація, балансування навантаження. Планую додати її у перелік рекомандованої літератури в своєму майбутньому курсі з технологій дата-центрів.
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 для щогодинного запуску.
Джерела:
#!/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
Все добре, поки ВМ знаходиться в активному стані та за точністю часу на ній слідкує демон ntpd [1]. Проблема виникає тоді, коли сервер-носія має бути перезавантажений, або вимкнений на деякий час. За звичай під час завершення роботи носія всі ВМ, що знаходяться на ньому, переводяться в "сплячий" режим (suspended), під час якого їх поточний стан (повний вміст оперативної пам’яті) зберігається на диску носія. Коли носій завантажується і відновлює свою роботу, ВМ відтворюють свій збережений стан на момент, що передував вимкненню носія (resumed).
Між моментами переходу ВМ у сплячий режим та відновлення їх стану проходить певний час. Але ВМ після відновлення роботи "перебувають у минулому", тобто вважають за поточний той час, в який відбувся перехід до сплячого режиму. Виникає різниця між поточним власним часом ВМ та дійсним поточним часом. Ця різниця дорівнює принаймні часу перезавантаження носія, що для сучасних серверів становить 5-10 хвилин. Різниця може бути і більшою, якщо носій якийсь час був вимкнений.
Відновити точний час на ВМ покликаний демон ntpd. Проте, якщо різниця перебільшує певне порогове значення (panic threshold), яке типово складає 1000 секунд [2], ntpd аварійно завершить роботу.
Рішенням може стати періодичний контроль наявності на ВМ працюючого демона ntpd, та запуск йогоу разі відсутності. Також доречно контролювати різницю між поточним часом ВМ та дійсним часом. У разі, якщо ця різниця значна (ознакою цього є те, що демон ntpd перебуває в несінхронізованому стані), варто зупинити ntpd, встановити правильний час за допомогою утіліти ntpdate, після чого знову запустити ntpd.
Пропоную вашій увазі нескладний скрипт для Linux (див. нижче), який виконує означені дії. Розмістіть його в каталозі /etc/cron.d для щогодинного запуску.
Джерела:
#!/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
Отже: How do you write a blog post a day? by Ivan Pepelnjak
Підписатися на:
Дописи (Atom)