Створіть консоль DB2 CLI для управління базами даних SQLDB

  1. Що потрібно для створення додатка
  2. Крок 2. Встановіть SSH-з'єднання з контейнером додатки DB2climate
  3. Крок 3. Встановіть Dropbox в якості довгострокового сховища
  4. Крок 4. Використовуйте DB2climate в якості клієнта DB2
  5. універсальні сценарії
  6. Рекомендації по використанню DB2climate і відомі проблеми
  7. відомі проблеми
  8. висновок
  9. Ресурси для скачування

Використовуйте Ruby, Tmate і Dropbox для створення простого і корисного додатка в IBM Bluemix

Спростіть управління базами даних SQLDB за допомогою додатка, яке можна швидко розробити і впровадити за допомогою хмарної платформи IBM Bluemix. Додаток, описане в цьому керівництві, дозволить відкрити консоль додатки, що працює в хмарної платформі IBM Bluemix, і виконати звичні команди DB2, зокрема, db2 describe table mytable і db2 list tables for all для вашої SQLDB. Ви також зможете експортувати базу даних SQLDB, зберегти її резервну копію в хмарі і навіть застосувати резервну копію для клонування примірника SQLDB.

Всі ці можливості доступні в додатку DB2climate. Зараз я розповім, як побудувати це додаток.

DB2climate - це консольний додаток CLI на основі серверного пакету Tmate від Dan Higham, який допомагає керувати службою Bluemix SQLDB. Воно відкриває SSH-з'єднання з контейнером додатки, де знаходяться клієнт середовища виконання DB2, Dropbox CLI і попередньо завантажений і налаштований клієнт Dropbox API. Отже, ви можете виконати всі підтримувані команди DB2 для ваших баз даних SQLDB і перемістити дані в середу Bluemix і з неї за допомогою хмарного сховища Dropbox.

отримайте код

DB2climate - це швидке і просте додаток, яке допомагає спростити управління базами даних SQLDB. Воно також дозволяє виконувати завдання, які на даний момент неможливо виконати за допомогою вбудованої веб-консолі Managed Database Console SQLDB, а саме:

  1. Імпорт або вивантаження файлу в форматі IXF в базу даних
  2. Експорт таблиць за допомогою консолі SQLDB
  3. Міграція даних між екземплярами SQLDB за допомогою резервної копії
  4. Додавання довготривалого дискового простору в Bluemix
  5. Синхронізація даних з SQLDB

Що потрібно для створення додатка

Крок 1. Виконайте розгортання DB2climate в Bluemix

  1. Увійдіть в середу Bluemix . формат: cf login [-a API_URL] приклад: cf login -a https://api.ng.bluemix.net
  2. створіть екземпляр служби SQL Database . формат: cf create-service SERVICE PLAN SERVICE_INSTANCE_NAME приклад: cf create-service sqldb sqldb_small SQLDB_001
  3. Клонуйте репозиторій через git. git clone https://hub.jazz.net/git/felixf/bluemix-db2-cli-mate
  4. Перейдіть в каталог клонованого додатки. cd bluemix-db2-cli-mate
  5. З каталогу клонованого додатки DB2climate виконайте push додатки з параметром --no-start для прив'язки служби SQLDB до її запуску. формат: cf push APP [--no-start] приклад: cf push db2climate --no-start
  6. Виконайте прив'язку служби SQLDB до нового додатком. формат: cf bind-service APP SERVICE_INSTANCE_NAME приклад: cf bind-service db2climate SQLDB_001
  7. Відкрийте програму. формат: cf start APP приклад: cf start db2climate
  8. Процес запуску включає завантаження і установку ряду пакетів, в тому числі середовища виконання Ruby, клієнта середовища виконання DB2 v9.7, клієнта Dropbox Linux, клієнта Dropbox API і перекомпонувати сервера Tmate. Установка повного пакета, готового до роботи, займає всього кілька хвилин.

    Зверніть увагу: коли Bluemix в перший раз вказує, що додаток запущено, за фактом все ще може виконуватися його ініціалізація. Розмір повного Ініціалізувати додатки повинен становити близько 360 МБ. Якщо розмір програми більше, це означає, що воно не готове до роботи. Зачекайте приблизно 10 секунд а потім виконайте таку команду для перевірки:

    cf app db2climate cf app db2climate

Готово! Розгортання DB2climate в хмарі Bluemix успішно завершено.

Крок 2. Встановіть SSH-з'єднання з контейнером додатки DB2climate

  1. Виконайте наступну команду: cf files db2climate logs / tmate.log
  2. Останні 4 рядки файлу tmate.log повинні виглядати так:
  3. URL підключення вказано в останньому рядку файлу журналу. Два кодових числа 1000 позначають висоту і ширину вікна терміналу. Слідом за ними вказано URL підключення.

    Якщо ви використовуєте ПК під управлінням Windows, вам буде потрібно термінал, аналогічний Cygwin. Я використовую оболонку Babun для Windows, яку можна завантажити за адресою https://github.com/babun/babun .

    Увага: Перш ніж спробувати встановити SSH-з'єднання в перший раз, обов'язково запустіть програму ssh-keygen в кореневому каталозі - в іншому випадку виникне помилка connection denied.

  4. Після виконання програми ssh-keygen ви зможете встановити SSH-з'єднання з контейнером додатки.
  5. Якщо ви віддаєте перевагу використовувати PuTTY, ознайомтеся з цією статтею про генерацію закритих ключів та встановлення з'єднань .

Крок 3. Встановіть Dropbox в якості довгострокового сховища

За замовчуванням DB2climate недоступні довгострокові сховища даних, тому при зупинці або перезапуску програми всі зміни, записані на диск, губляться. Отже, необхідно додати якесь довгострокове сховище для резервних копій бази даних і експортованих таблиць.

У цьому керівництві я покажу, як використовувати Dropbox в якості довгострокового сховища. Це не єдине рішення, але воно дозволяє швидко забезпечити роботу програми. Перевага використання Dropbox API в порівнянні з клієнтом Dropbox для Linux полягає в тому, що Dropbox API не робить синхронізацію з хмарним сховищем автоматично, тому ви спокійно можете використовувати вже наявну обліковий запис Dropbox.

  1. DB2climate поставляється з встановленою копією базового клієнта Dropbox API. Щоб не вводити ключі Dropbox API при кожному перезапуску DB2climate, ви можете зберігати ключі Dropbox API в захищеному вигляді всередині бази SQLDB, прив'язаною до додатка DB2climate.

    Запустіть сценарій set_dbox_api.rb і за запитом введіть API key і API secret. Далі виберіть access type. Зазначений access type повинен відповідати permission type вашого застосування API, вказаною при створенні програми API.

    Зазначений access type повинен відповідати permission type вашого застосування API, вказаною при створенні програми API

  2. Після збереження ключів Dropbox API в базі даних ми можемо почати використання програми Dropbox API.

    Виконайте команду dropbox-api. Скопіюйте відображений URL і вставте його в браузер. Увійдіть в обліковий запис Dropbox і натисніть Allow (Дозволити). Потім поверніться в консоль SSH і натисніть Enter для завершення установки.

    Потім поверніться в консоль SSH і натисніть Enter для завершення установки

    Ви прив'язали контейнер додатки до облікового запису Dropbox!

  3. Запустіть dropbox.api help, щоб отримати список доступних команд. Наприклад, щоб вивантажити файл local.tar з контейнера в кореневу директорію Dropbox, виконайте наступну команду: $ dropbox-api put local.tar dropbox: /

    Щоб отримати список файлів в облікового запису Dropbox, виконайте команду:

    $ Dropbox-api ls

Крок 4. Використовуйте DB2climate в якості клієнта DB2

Після з'єднання з контейнером через SSH ви можете виконувати всі підтримувані команди DB2 CLI для ваших баз даних SQLDB. Каталог всіх вузлів TCPIP і баз даних буде складено автоматично.

Крім того, щоб користувачі не зверталися до файлу VCAP_SERVICE за ідентифікаційними даними бази даних при виконанні команд DB2, використовуйте наступні сценарії, які допоможуть спростити управління базами даних.

універсальні сценарії

Сценарії для експорту та імпорту таблиць

  • Назва сценарію: export_table.rb
    Призначення: Експорт таблиць в підтримуваному форматі (.ixf або .del). Вихідний файл: найменування експортованої таблиці, розширення - формат експорту Синтаксис: $ export_table.rb [db_name] schema_name table_Name export_format Приклад 1: $ export_table.rb BX country ixf (одиночний екземпляр БД, прив'язаний до додатка) Найменування вихідного файлу - country.ixf Приклад 2: $ export_table.rb SQLDB_002 BX CITY del (кілька примірників БД, прив'язаних до додатка) Найменування вихідного файлу - CITY.del
  • Назва сценарію: import_table.rb
    Призначення: імпорт таблиць в підтримуваному форматі (.ixf або .del) з усіма підтримуваними режимами імпорту. Синтаксис: $ import_table.rb [db_name] schema_name table_file_name [import_mode] Підтримувані режими імпорту: 1 = insert (за замовчуванням), 2 = insert_update, 3 = replace, 4 = replace_create (тільки для ixf), 5 = create (тільки для ixf ) Приклад 1: $ import_table.rb BX country.ixf (одиночний екземпляр БД, прив'язаний до додатка, з режимом insert за замовчуванням) Приклад 2: $ import_table.rb SQLDB_002 BX country.ixf 2 (кілька примірників БД, прив'язаних до додатка, з режимом insert_update)

Сценарії для резервного копіювання та відновлення баз даних

На жаль, використовувати вбудовані засоби db2 backup або db2 restore з DB2climate не можна. Причина в тому, що команда db2 get authorizations "видає" всю інформацію, тому у користувача за замовчуванням недостатньо прав для виконання резервного копіювання та відновлення.

Причина в тому, що команда db2 get authorizations видає всю інформацію, тому у користувача за замовчуванням недостатньо прав для виконання резервного копіювання та відновлення

Засіб резервного копіювання та відновлення DB2 вимагає авторизації на рівні примірника, зокрема, як SYSADM, SYSCTRL або SYSMAINT. Користувач за замовчуванням має лише права DBADM, тому будь-яка спроба створити резервні копії або відновлення призведе до наступної помилки:

Користувач за замовчуванням має лише права DBADM, тому будь-яка спроба створити резервні копії або відновлення призведе до наступної помилки:

Я рекомендують використовувати команду db2move, яку я регулярно застосовую для міграції баз даних між операційними системами. Ця команда експортує всі таблиці в форматі IXF, тому їх можна імпортувати в нову базу даних. Цей процес повністю автоматизований і дуже простий. Зверніть увагу, що db2move не поставляється з клієнтом середовища виконання DB2. Цей інструмент доступний тільки в серверних версіях, проте ви можете завантажити безкоштовну версію DB2 Express-C .

Максимальний розмір контейнера додатки в Bluemix становить 2 ГБ, тому повна версія сервера DB2 Express-C займе дуже багато дискового простору. На щастя, для запуску db2move потрібно всього три файли: db2move, db2common.bndі db2move.bnd.

Помістіть файл db2move в каталог sqllib / bin, а обидва файли .bnd - в каталог sqllib / bnd. Ви отримаєте повноцінну робочу версію db2move.

Увага: Проект db2move вже об'єднаний з додатком DB2climate, тому для застосування в нашому прикладі виконувати описані вище дії не потрібно.

Нижче наведені сценарії для резервного копіювання та відновлення бази даних:

  • Назва сценарію: export_db.rb
    Призначення: експорт всіх таблиць бази даних в форматі .ixf за допомогою команди db2move export.
    Вихідний файл: db_name з розширенням .tar.gz в поточному каталозі. Синтаксис: $ export_db.rb db_name Приклад: $ export_db.rb SQLDB_001 Приклад вихідного файлу: `$ SQLDB_001.tar.gz
  • Назва сценарію: import_db.rb script
    Призначення: імпорт всіх таблиць бази даних за допомогою команди db2move import. Використовуйте його для відновлення таблиць в існуючій базі даних або для створення нової бази. Синтаксис: $ import_db.rb db_name db_backup_file_name Приклад: $ import_db.rb SQLDB_001 SQLDB_001.tar.gz

Рекомендації по використанню DB2climate і відомі проблеми

рекомендації

  • Bluemix дозволяє виконувати прив'язку декількох додатків до одного службі, і навпаки. Отже, DB2climate можна використовувати як допоміжний додаток для прив'язки до тієї ж службі SQLDB, що і основне додаток. Як показано на наступній ілюстрації, ми виконали прив'язку примірника SQLDB_001 до додатків Bluemix101-FF і DB2climate. У цьому прикладі Bluemix101-FF - основне додаток, що використовує SQLDB_001 в якості серверної бази даних, а DB2climate - наше допоміжне додаток, яке допомагає нам керувати примірником БД.
  • Важливо: Якщо ви закінчили роботу з терміналом, завершіть його роботу, клацнувши на значку X і натиснувши OK. В цьому випадку сесія Tmate не буде завершено процес, і ви зможете повторно підключитися до неї, ввівши колишні ідентифікаційні дані Tmate.

    Якщо ви введете команду exit в терміналі Tmate, сервер Tmate завершить роботу, і вам доведеться перезапустити програму DB2climate. В результаті будуть створені нові ідентифікаційні дані Tmate. Крім того, вам буде потрібно виконати повторну настройку облікового запису Dropbox і повторно перерахувати всі бази даних.

    Крім того, вам буде потрібно виконати повторну настройку облікового запису Dropbox і повторно перерахувати всі бази даних

відомі проблеми

  • Якщо ви скасуєте прив'язку примірника SQLDB до додатка DB2climate, а потім виконайте прив'язку повторно, то вже не зможете виконувати деякі команди DB2. Деякі команди, зокрема, db2 get dbm cfg і db2 get authorization як і раніше будуть працювати коректно, але інші команди, зокрема, db2 list tables і db2 select * from ... будуть виконуватися з помилками, як показано нижче:

    Через вищевказаного обмеження скасовувати прив'язку примірника SQLDB до додатка DB2climate не слід. Якщо ви випадково скасуйте прив'язку, то зможете повноцінно управляти за потрібне екземпляром SQLDB через DB2climate тільки в разі, якщо видаліть екземпляр SQLDB, створите новий екземпляр і відновите базу даних з хмарної резервної копії в Dropbox.

  • Іноді при розгортанні або запуску програми DB2climate можливі помилки ініціалізації Tmate. В результаті Tmate URL може не відображатися. У цьому випадку просто зупиніть і запустіть програму DB2climate.

висновок

Додаток DB2climate, описане в цьому керівництві - це просте додаток, що допоможе вам керувати базами даних SQLDB. Воно дозволяє встановлювати SSH-з'єднання з контейнером додатки, звідки ви можете виконувати звичні команди DB2 за допомогою клієнта середовища виконання DB2.

DB2climate також надає деякі додаткові можливості, які в даний час відсутні в веб-консолі управління Bluemix SQLDB за замовчуванням, зокрема, імпорт і експорт таблиць в форматі IXF і резервне копіювання і відновлення баз даних в різні екземпляри баз даних SQLDB. Крім того, DB2climate використовує Dropbox як довгострокове сховище в Bluemix.

Ресурси для скачування

Підпишіть мене на повідомлення до коментарів