Статьи

Миграция приложения MySQL в NuoDB

В этой статье TechBlog я покажу вам, как перенести приложение MySQL в NuoDB. Я буду использовать приложение OLAP Saiku Server, чтобы продемонстрировать, как это сделать.  Saiku  — это полнофункциональное веб-приложение на Java, размещенное в Tomcat, которое использует  аналитическое ядро Mondrian для выполнения некоторых полезных аналитических задач. JDBC используется для подключения к базовой базе данных.

В этом примере я настрою приложение Saiku Server, сначала используя MySQL. Далее я буду использовать инструмент миграции NuoDB для переноса этой базы данных MySQL в NuoDB. Наконец, я буду запускать приложение Saiku Server, используя NuoDB.

Начиная с чистой машины Ubuntu 12:

Установите Java и MySQL

В этом примере я установил пароль пользователя MySQL «root» равным «root»:

$ sudo apt-get update
$ sudo apt-get install openjdk-7-jre
$ sudo apt-get install mysql-server   
$ sudo apt-get install libmysql-java

Установите JAVA_HOME и CLASSPATH

Вы должны установить переменные среды JAVA_HOME и CLASSPATH, которые необходимы для сервера Saiku:

$ export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")
$ export CLASSPATH=$CLASSPATH:/usr/share/java/mysql-connector-java.jar

Загрузить Saiku Server 2.4

Затем загрузите сервер Saiku с веб-сайта аналитической лаборатории и распакуйте его:

$ cd ${HOME}
$ wget http://analytical-labs.com/downloads/saiku-server-foodmart-2.4.tar.gz
$ tar -xzf saiku-server-foodmart-2.4.tar.gz

Создание базы данных MySQL foodmart

Foodmart — это пример набора данных, поставляемого в комплекте с Saiku, который представляет собой небольшой склад бизнеса, ориентированного на коммерцию, с данными о продажах, заработной плате и других данных. Сервер Saiku не поставляется с MySQL-версией этих данных, но вы можете скачать ее с нашего сайта:

$ wget www.nuodb.com/latest/foodmart.mysql.sql.gz

Затем распакуйте и создайте пустую базу данных MySQL foodmart, а затем загрузите ее:

$ gunzip foodmart.mysql.sql.gz
$ echo "create database foodmart;" | mysql -uroot -proot
$ mysql -uroot -proot foodmart < foodmart.mysql.sql

Измените сервер Saiku для использования порта 8081

По умолчанию веб-консоль NuoDB и сервер Saiku используют localhost: 8080. Чтобы избежать конфликта, я заменю Saiku Server на использование порта 8081. Отредактируйте: ~ / saiku-server / tomcat / conf / server.xml и измените порт соединителя на «8081» в строке 69:

<Connector port="8081" protocol="HTTP/1.1"

Изменить сервер Saiku для использования источника данных MySQL

Отредактируйте ~ / saiku-сервер / tomcat / webapps / saiku / WEB-INF / classes / saiku-datasources / foodmart:

type=OLAP
name=foodmart-mysql
driver=mondrian.olap4j.MondrianOlap4jDriver
location=jdbc:mondrian:Jdbc=jdbc:mysql://localhost/foodmart;JdbcDrivers=com.mysql.jdbc.Driver;Catalog=res:foodmart/FoodMart.xml;
username=root
password=root

Запустить Saiku Server

$ cd ~/saiku-server
$ chmod +x start-saiku.sh
$ ./start-saiku.sh

Запустите Сайку (MySQL)

Откройте веб-браузер на http: // localhost: 8081

Войти используя admin / admin

В раскрывающемся списке «Кубики» выберите «FoodMart-> Sales». В разделе «Размеры» выберите «Пол -> Пол» и перетащите в «Столбцы». Затем в Dimensions выберите «Store-> Store State» и перетащите в «Rows».

Остановить текущий экземпляр Saiku Server

Теперь, когда у нас есть Saiku, работающий с MySQL, давайте перенесем его на NuoDB. Сначала остановите текущий запущенный экземпляр Saiku Server:

$ ./stop-saiku.sh

Скачать, установить NuoDB, запустить быстрый старт

Загрузите NuoDB  http://www.nuodb.com/download , установите NuoDB и запустите быстрый запуск NuoDB.

$ sudo dpkg -i ~/Downloads/nuodb-1.1.1.linux.x64.deb
$ cd /opt/nuodb
$ ./run-quickstart
...
SQL> exit;

Перенос базы данных MySQL в NuoDB

Фактическая миграция — всего три простых шага. Сначала перенесите схему базы данных из MySQL в NuoDB:

$ /opt/nuodb/tools/migrator/bin/nuodb-migrator schema --source.driver=com.mysql.jdbc.Driver --source.url=jdbc:mysql://localhost:3306/foodmart --source.username=root --source.password=root --target.url=jdbc:com.nuodb://localhost/test?schema=FOODMART --target.username=dba --target.password=goalie

На данный момент мы перенесли информацию о схеме и таблице из MySQL в NuoDB. Второй шаг — сбросить данные из базы данных MySQL foodmart:

$ /opt/nuodb/tools/migrator/bin/nuodb-migrator dump --source.driver=com.mysql.jdbc.Driver --source.url=jdbc:mysql://localhost:3306/foodmart?zeroDateTimeBehavior=convertToNull --source.username=root --source.password=root --output.type=csv --output.path=/tmp/foodmart.cat

На этом этапе данные таблицы из базы данных MySQL были сохранены с использованием формата «разделенных запятыми» (csv) в каталоге / tmp. Последний шаг — загрузка этих данных в базу данных NuoDB:

$ /opt/nuodb/tools/migrator/bin/nuodb-migrator load --target.url=jdbc:com.nuodb://localhost/test?schema=FOODMART --target.username=dba --target.password=goalie --input.path=/tmp/foodmart.cat

Скопируйте nuodbjdbc.jar на сервер saiku

$ cp /opt/nuodb/jar/nuodbjdbc.jar $HOME/saiku-server/tomcat/webapps/saiku/WEB-INF/lib

Изменить сервер Saiku для использования источника данных NuoDB

Отредактируйте ~ / saiku-сервер / tomcat / webapps / saiku / WEB-INF / classes / saiku-datasources / foodmart:

type=OLAP
name=foodmart-nuodb
driver=mondrian.olap4j.MondrianOlap4jDriver
location=jdbc:mondrian:Jdbc=jdbc:com.nuodb://localhost/test?schema=foodmart;JdbcDrivers=com.nuodb.jdbc.Driver;Catalog=res:foodmart/FoodMart.xml;
username=dba
password=goalie

Запустить Saiku Server

$ cd ~/saiku-server
$ ./start-saiku.sh

Запустить Сайку (NuoDB)

Откройте веб-браузер на http: // localhost: 8081

Войти используя admin / admin

Как и выше, в раскрывающемся списке «Кубики» выберите «FoodMart-> Sales». В разделе «Размеры» выберите «Пол -> Пол» и перетащите в «Столбцы». Затем в Dimensions выберите «Store-> Store State» и перетащите в «Rows».

saiku_nuodb