Thursday, September 26, 2013

avERP Migration von Windows zu Linux

avERP von Windows zu Linux Firebird migrieren.

Eine Anleitung.

Installationsschritte um von einer (single User)Windows avERP Installation zu einer Linux avERP Multiuser Installation zu kommen.

Voraussetzungen:
1) Es gibt eine bestehende Windows avERP Installation
2) Es gibt ein Linuxsystem das als Server fungieren soll. in unserem Fall Debian Wheezy 7.1 (x86)

Windows
=======

Wir vergewissern uns das die Installation funktioniert.
Eine cmd öffnen
"c:\program files\firebird\firebird_2_5\bin\gbak.exe" 
ist das Firebird Backup Programm welches wir nutzen möchten.

von hier kann das DB-Backuptool gbak.exe mit folgendem Aufruf gestartet werden:

"c:\program files\firebird\firebird_2_5\bin\gbak.exe" -b "c:\program files(x86)\averp\averp.fdb" "c:\<wo Schreibberechtigung besteht>\averpdb.fbk" -y <Pfad>\averpdb.log -v -user sysdba -pas masterkey

Das Kennwort des sysdba Users ist im Programmverzeichnis von avERP zu finden (Password.txt).


Das Datenbankbackup File kann dann z.B mit scp auf das Linuxzielsystem kopiert werden.

Wir kommen nach Abschluß der Linuxinstallation noch auf den Windows Client zurück um die Datenbankverbindung einzutragen und die Migration zu testen.

Linux
======
Firebird installieren:

Folgende Pakete wurden normal über "apt-get install" installiert:
root@TestAvERP:/var/lib/firebird/2.5/data# dpkg -l | grep fire
ii  firebird-dev                         2.5.2~svn+54698.ds4-3         i386         Development files for Firebird - an RDBMS based on InterBase 6.0 code
ii  firebird2.5-classic-common           2.5.2~svn+54698.ds4-3         i386         common files for firebird 2.5 "classic" and "superclassic"
ii  firebird2.5-common                   2.5.2~svn+54698.ds4-3         all          common files for firebird 2.5 servers and clients
ii  firebird2.5-common-doc               2.5.2~svn+54698.ds4-3         all          copyright, licnesing and changelogs of firebird2.5
ii  firebird2.5-examples                 2.5.2~svn+54698.ds4-3         all          Examples for Firebird - an RDBMS based on InterBase 6.0 code
ii  firebird2.5-server-common            2.5.2~svn+54698.ds4-3         i386         common files for firebird 2.5 servers
ii  firebird2.5-superclassic             2.5.2~svn+54698.ds4-3         i386         Firebird SuperClassic Server - an RDBMS based on InterBase 6.0 code

ich glaube "apt-get install firebird2.5-superclassic"  zieht die anderen Pakete nach.

Durch dpkg-reconfigure firebird2.5-superclassic kann das Kennwort des sysdba Users einfach geändert werden

Installation UDF (User Defined Functions)
Von der Herstellerseite die Bibliothek downloaden:
http://www.synerpy.de/cm/index.php/downloads/file/5-udf-bibliotheken.html

in einem Unterverzeichnis das FreeAdhocUDF.zip auspacken

root@TestAvERP:~/UDF# ls
COPYING                       FreeAdhocUDF_FB15.so            FreeAdhocUDF_FB2x_glibc23.so  FreeAdhocUDF_FBi64_MSVC8.dll  liesmich.txt
COPYING.LESSER                FreeAdhocUDF_FB15_SuSe10.so     FreeAdhocUDF_FB2x.so          gpl_deu.txt                   UDF_Bibliotheken.zip
Copyright.txt                 FreeAdhocUDF_FB15_ubuntu606.so  FreeAdhocUDF_FBi32_MSVC8.dll  inhalt.txt                    welche_version.txt
FreeAdhocUDF_FB15_glibc23.so  FreeAdhocUDF_FB2x64.so          FreeAdhocUDF_FBi32_oWatC.dll  lgpl_deu.txt

wir haben open mit dpkg -l... gesehen das es sich in unserem Fall um eine 32bit Version von Firebird handelt (i386). Unsere Firebird Version ist mindestens 2.x.
Daraus wissen wir das wir die Datei FreeAdhocUDF_FB2x.so verwenden müssen.
Die Datei "welche_version.txt" hilft ansonsten weiter

Die Datei  FreeAdhocUDF_FB2x.so muss in den "lib Bereich" von Firebird kopiert werden.

cp FreeAdhocUDF_FB2x.so \ /usr/lib/firebird/2.5/UDF/FreeAdhocUDF.so 

erledigt dies für uns. Die Zieldatei muss wie im Beispiel heißen - also ohne _FB2x.
Berechtigungen sollten wie folgt aussehen:
root@TestAvERP:/usr/lib/firebird/2.5/UDF# ls -la
insgesamt 232
drwxr-xr-x 2 root     root       4096 Sep 25 09:14 .
drwxr-xr-x 5 root     root       4096 Aug 12 17:36 ..
-rw-r--r-- 1 firebird firebird  17864 Mär 22  2013 fbudf.so
-rw-r--r-- 1 firebird firebird   7112 Mär 22  2013 fbudf.sql
-rw-r--r-- 1 firebird firebird 141379 Sep 25 09:12 FreeAdhocUDF.so
-rw-r--r-- 1 firebird firebird  19170 Mär 22  2013 ib_udf2.sql
-rw-r--r-- 1 firebird firebird  13708 Mär 22  2013 ib_udf.so
-rw-r--r-- 1 firebird firebird  18525 Mär 22  2013 ib_udf.sqler 



Ich denke es sollte nun eigentlich ein neuer Firebird User erstellt werden dem die Datenbank gehört. (mit gsec)
Wir überspringen diesen Schritt hier.

Hier ist es vielleicht gute Firebird neu zu starten

root@TestAvERP:/var/lib/firebird/2.5/data# ps aux | grep fb
firebird  2618  0.0  0.0   4448   792 ?        S    Sep24   0:00 /usr/sbin/fbguard -daemon -forever -pidfile /var/run/firebird/2.5/fbserver.pid
firebird  5039  0.1  0.3  81080  7336 ?        Sl   09:18   0:11 /usr/sbin/fb_smp_server
root      5367  0.0  0.0   3564   812 pts/0    S+   12:12   0:00 grep fb

Mit kill habe ich dann den fb_smp_server den Prozess beendet der durch fbguard gleich wieder frish gestartet wurde.


Nun können wir das Backup zurückspielen:
gbak -r <pfad zum Backup>\averpdb.fbk  /var/lib/firebird/2.5/data/averpdb.fdb -y <ordner>averpdb-restore.log -v -user sysdb -pass <password>

Log auf Fehler prüfen.

Die neue Datenbank in /var/lib/firebird/2.5/data/averpdb.fdb benötigt folgende Rechte:
root@TestAvERP:/var/lib/firebird/2.5/data# ls -al
insgesamt 729376c:\program files(x86)\averp\AVERPCONNECT.cfg
drwxrwx--- 2 firebird firebird      4096 Sep 25 00:16 .
drwxrwx--- 6 firebird firebird      4096 Aug 12 17:34 ..
-rw-rw---- 1 firebird firebird 746192896 Sep 25 10:50 averpdb.fdb
-rw-rw---- 1 firebird firebird         0 Mär 22  2013 no_empty
-rw-rw---- 1 firebird firebird    675840 Sep 24 16:09 test.fdb

Testen der Installation
========================

Um die Installation testen zu können müssen wir auf unserem Windows Client den DB-Connectionstring anpassen:
Mit Administratorrechten ist die Datei
"c:\program files(x86)\averp\AVERPCONNECT.cfg" zu öffnen.
Den DB-Connect String ändern/ergänzen: Hinterd em letzten ; ALIAS=<IP/hostname>:<Path to DB on DB Server>
Beispiel
;AVERPDB=172.30.0.170:/var/lib/firebird/2.5/data/averpdb.fdb;

Nun kann der avERP Client gestartet werden.

Mehere Clients sollten sich nun gegen den Linuxserver verbinden lassen.
Neue avERP Installationen benötigen nun die averpconnect.cfg

Verbesserungen:
===============
Der DB Owner sollte ggf nicht sysdba sein.
Backupspace kann durch Nutzung von nbackup verringert werden (Incremental Backups)
Der Betrieb Firebird als Super oder Classic sollte noch untersucht werden
firebird.conf kann ggf noch optimiert werden.

Viel Erfolg

No comments:

Post a Comment