В этой статье 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».