Ubuntu22: Installation von Firebird5 parallel zu Firebird3

Forum für Fragen rund um die Installation, Konfiguration und Inbetriebnahme von Firebird.

Moderator: martin.koeditz

Benutzeravatar
RS667
Beiträge: 24
Registriert: Do 29. Aug 2024, 19:01

Hallo zusammen.

Ich scheitere gerade seit 4 Stunden an einer ganz simplen Aufgabe:

Ich habe hier einen relativ potenten Datenbank-Server auf Ubuntu Basis. Dort läuft produktiv ein Firebird 3 x64.
Ich wollte nun zum Testen / Vergleichen der Performance "mal kurz" eine 5.0er Instanz starten, um dort ebenfalls den ib-aid Performance Test durchzuführen. Unter Windows ist der parallele Betrieb ja ein mittelschweres Kinderspiel, ich habe dafür auch schon tausend Anleitungen und auch die Videos von Holger Klempt gefunden.

Unter Linux allerdings ist das Ganze zum Verzweifeln. Die offiziele Anleitung sagt, dass das geht. Man soll in den ReleaseNotes schauen wie. Da steht nichts drin, abgesehen von kilometerlangen, unnützen Infos.

Es würde mir auch reichen, wenn mir irgendwer einen Hint gibt, wie ich die binary direkt als User im SuperServer mode mit Port 3051 starte.


Vielen Dank schon mal im Voraus.
bfuerchau
Beiträge: 534
Registriert: Mo 7. Mai 2018, 18:09
Kontaktdaten:

I.d.R reicht für die Verbindung einen anderen Port als den Default 3050 zu verwenden.
In den Verbindunsgeinstellungen nutzt man dann halt
<ip>/<port>:<Name oder Pfad der DB>

Die Umgebungsvariable für das Standard-Bin des Servers wird nicht benötigt, kann ja aber prozessindividuell festgelegt werden.

Damit hatte ich zeitweise FB 2,5/3.0/4.0 im Parallelbetrieb, auf Windows.
Benutzeravatar
RS667
Beiträge: 24
Registriert: Do 29. Aug 2024, 19:01

Hallo,

das ist mir tatsächlich klar. Aber Du kannst nicht einfach auf einem Server einen anderen Port ansprechen, wenn auf diesem Port gar kein Service lauscht. Die Frage hat sich tatsächlich darauf bezogen, dass ich einen 5.0er Prozess starten wollte, der dann auf einem anderen Port lauschen sollte.

Ich habs mittlerweile in einer frischen ubuntu Server 22.04 VM hinbekommen, aber kann sagen, dass das Ganze mit "etwas unkomfortabel" noch sehr wohlwollend beschrieben ist....Die korrekte bezeichnung würde wahrscheinlich etwas gegen die Forenregeln verstoßen.

Das beginnt damit, dass die install.sh auf bestehende firebird Prozesse schaut, die man nicht beenden kann, wenn man auf einem Prodssystem ist. Interessanterweise auch dann, wenn man eigentlich über

./install.sh -path /some/path

nicht im geringsten die Standardinstallation anfasst. Dann war es in meinem Fall so, dass die security5.fdb nicht korrekt initialisiert war, und die Hilfe, wie man das macht ebenfalls absolut unbrauchbar ist. Also so richtig. Ich hab mich dann an einen Tip erinnert, den Holger K. mal gegeben hat:
Installier Dir auf irgendeiner Windows Maschine einen Firebird, dann hast Du eine security fdb.

Da kam der nächste geile Fallstrick: der Installationsprozess sagte "gib kein Passwot ein, dann nimmt der standardmäßig masterkey". Ich weiß nicht was der damit meint, jedenfalls ist es so, dass das NICHT stimmt. Ich habe die Meldung erhalten, dass die Installation fehlerhaft wäre, und keine securityDB initialisiert wurde, als ich dann zugreifen wollte.

Deinstalliert > neu installiert, Passwort masterkey manuell eingetragen, > Connect auf die Win Maschine > GEHT!

Also hab ich die security5.fdb genommen, auf meine VM kopiert, mit den korrekten Rechten versehen, und schon kann ich mich auch da verbinden.

Der nächste Step wird dann also sein, das Ganze auf unseren produktiven DBServer zu übertragen, und da dann die lange ersehnten Benchmarks zu fahren.

Ich schreibe das noch mal etwas mehr "step by step", professioneller und schöner auf, wenn ich fertig bin.

Ich danke auf jeden Fal schon mal für die rasche Antwort.

MfG Michael
bfuerchau
Beiträge: 534
Registriert: Mo 7. Mai 2018, 18:09
Kontaktdaten:

Es gibt ja immer die Möglichkeit, gar keinen Installer zu nehmen sondern nur einen Copy-Install durchzuführen. Die SecurityX.fdb kommt mit und braucht nicht erstellt zu werden.
Für den Vorgang gibts auch eine Beschreibung, da ich z.B. die 4.0 nicht als Service installieren wollte.
- Copy der Objekte in ein Verzeichnis
- firebird.conf Port ändern
- Prozess als App starten
- isql verbinden mit der SecurityX.fdb
- Masteruser und Kennwort einrichten (darf der SYSDBA auch sein).
Dann kann man mit anderen DB's verbinden, soweit kompatibel, oder eben per backup3/restore4 oder restore5 DB's erstellen und damit arbeiten.
Benutzeravatar
RS667
Beiträge: 24
Registriert: Do 29. Aug 2024, 19:01

bfuerchau hat geschrieben: Fr 30. Aug 2024, 17:48 Es gibt ja immer die Möglichkeit, gar keinen Installer zu nehmen sondern nur einen Copy-Install durchzuführen. Die SecurityX.fdb kommt mit und braucht nicht erstellt zu werden.
Für den Vorgang gibts auch eine Beschreibung, da ich z.B. die 4.0 nicht als Service installieren wollte.
- Copy der Objekte in ein Verzeichnis
- firebird.conf Port ändern
- Prozess als App starten
- isql verbinden mit der SecurityX.fdb
- Masteruser und Kennwort einrichten (darf der SYSDBA auch sein).
Dann kann man mit anderen DB's verbinden, soweit kompatibel, oder eben per backup3/restore4 oder restore5 DB's erstellen und damit arbeiten.
So ähnlich habe ich das jetzt durchgeführt, nur dass ich einen extra Service angelegt habe, den ich aus einem fresh install aus einer VM genutzt habe. Wo genau findet man denn die genaue Beschreibung hierfür? Ich habe mich hier offenbar sehr dumm angestellt, weil ich über Stunden keine finden konnte....
isql hat mir auch die Verbindung auf die securitydb verwehrt, mit dem Hinweis dass die Initialisierung der DB fehlte.

MfG
bfuerchau
Beiträge: 534
Registriert: Mo 7. Mai 2018, 18:09
Kontaktdaten:

Vielleicht hilft dir dies, per command instsvc konnte man abweichende Services installieren.
https://github.com/FirebirdSQL/firebird ... nually.txt

Siehe da:
Initializing the Security Database
----------------------------------
see README.security_database.txt for instructions.
Benutzeravatar
RS667
Beiträge: 24
Registriert: Do 29. Aug 2024, 19:01

bfuerchau hat geschrieben: So 1. Sep 2024, 11:26 Vielleicht hilft dir dies, per command instsvc konnte man abweichende Services installieren.
https://github.com/FirebirdSQL/firebird ... nually.txt

Siehe da:
Initializing the Security Database
----------------------------------
see README.security_database.txt for instructions.
Hallo,

instsvc für Windows hilft mir tatschlich nicht so richtig für meine Ubuntu Server Installationen. Die Readme.txt für die security DB habe ich auch gefunden. Ich hatte dort leicht übersehen, dass man den FB Server stoppen soll, um die security DB mit isql zu bearbeiten. Das fällt in meinem Scenario, in dem ich ja auf dem produktiven DB-Server einfach parallel eine 5.0er Instanz testen wollte aus.

Ich bin nun wie folgt vorgegangen:

Installation einer VM mit Ubuntu Server 22.04
Installation der Firebird3.0 Instanz analog dem Prodserver, via apt

Code: Alles auswählen

sudo apt install firebird-server
Damit hatte ich einen funktionalen fb3.0 Server. Nun habe ich mir die tarball install geholt, entpackt, und das Install-Shellscript so angepasst, dass nicht mehr auf laufende fb-Prozesse geschaut wird. Das Script bricht sonst ab, selbst wenn man vollkommen abweichende Pfade angibt:

Code: Alles auswählen

wget https://github.com/FirebirdSQL/firebird/releases/download/v5.0.1/Firebird-5.0.1.1469-0-linux-x64.tar.gz
tar xzvf Firebird-5.0.1.1469-0-linux-x64.tar.gz
nano install.sh
Die Anpassung findet in dem Part mit dem Kommentar "# Check is server is being actively used." statt. Da habe ich die Prozessnamen verfälscht.
Ist das angepasst kann man das Script abspeichern und mit dem path Schalter ausführen. Da ich das Ganze einfach reversibel haben wollte habe ich einfach direkt im root einen Ordner namens "services" genutzt:

Code: Alles auswählen

mkdir /services
./install.sh -path /services/fb5
Das installiert auch gleich einen passenden Service mit. Da der mittelschwer hässlich benannt ist kann man den mit

Code: Alles auswählen

mv /lib/systemd/system/firebird.altername.service /lib/systemd/system/firebird5.0.service
umbenennen. Ist aber optional.
Dann muss noch die firebird.conf angepasst werden, damit der abweichende Port genutzt wird. Ich hab mich hier für 3051 entschieden, wobei eigentlich charmant wäre 3053 für FB3, 3054 für FB4 und 3055 für FB5 zu nuttzen....nächstes Mal dann. Ich habe außerdem den Usermanager angepasst, damit auch legacy Verbindungen mit alten Cient Libraries klappen.

Code: Alles auswählen

nano /services/fb5/firebird.conf

Code: Alles auswählen

UserManager = LegacyUserManager,Srp
RemoteServicePort = 3051
Damit hat man dann wahrscheinlich eine lauffähige Instanz, die man über

Code: Alles auswählen

systemctl start firebird5.0
starten kann. In meinem Fall schlug das fehl, weil das Instal Script die Rechte nicht korrekt gesetzt hatte, das habe ich aber mit

Code: Alles auswählen

sudo chown firebird:firebird  /services -R
korrigiert. Danach war das Ganze startbar, und ich hatte auf der Test-VM eine laufende 3.0.8er Instanz auf Port 3050, installiert aus dem standard-Repo. Das wird im nächsten Beitrag noch interessant....
Außerdem lief eine manuell installierte 5.0.1 auf Port 3051.

Das Ganze habe ich dann per ssh file Transfer von der VM kopiert ( Den Ordner /services und das service file aus /lib/systemd/system/ ), auf den anderen Server geschoben, die Service Datei im System hinterlegt, das Verzeichnis an die korrekte Stelle kopiert, die Rechte vergeben, den daemon reloaded und schon hatte ich dort einen lauffähigen 5er FB laufen, auf dem ich die benchs laufen lassen konnte:

Code: Alles auswählen

mv /home/username/firebird5.0.service /lib/systemd/system/firebird5.0.service
chown root:root /lib/systemd/system/firebird5.0.service
mkdir /services
mv /home/username/services/fb5 /services/fb5
chown firebird:firebird /services/fb5
chmod +x /services/fb5/bin/*
systemctl daemon-reload
systemctl start firebird5.0
Falls das Jemand nachfrickeln will....

MfG Michael
Benutzeravatar
RS667
Beiträge: 24
Registriert: Do 29. Aug 2024, 19:01

Noch ein cooler Effekt/Bug:

Ich habe auf die gleiche Art versucht, einen Firebird3.0.10 neben den per apt installierten 3.0.8 zu installieren.
Die Installation des Firebird3 schlägt aufgrund 2er Abhängigkeiten fehl. "Fehlend" ist die libtommath, die man per symlink für den fb3 auffindbar machen kann, und eine libncurses.so.5 scheint komplett zu fehlen.

Code: Alles auswählen

ln -sf /usr/lib/x86_64-linux-gnu/libtommath.so.1 /usr/lib/x86_64-linux-gnu/libtommath.so.0
apt-get install libncurses5
Das finde ich deshalb so interessant, weil auf der Kiste ja schon ein Firebird läuft, der diese Bibliotheken NICHT vermisst....
Es scheint also einen gravierenden Unterschied zu machen, ob man die install.sh nutzt, oder das apt repo. Finde ich sehr unglücklich, muss ich sagen.

Der Thread hier ist damit also gelöst, nachdem ich viel gelernt, geflucht, und Zeit mit dieser eigentlich sehr einfachen Aufgabe verschwendet habe.

Ich danke auf jeden Fall für die Antworten.

MfG Michael

P.S.: Ich habe einen Step vergessen, der aber schon weiter oben beschrieben war: Die security DBs habe ich mir per Windows Installer erzeugt, und auf die Ubuntu Kisten übertragen.
vr2
Beiträge: 236
Registriert: Fr 13. Apr 2018, 00:13

Hi Michael,

unterhaltsam, ich versteh Dich gut ;-)

Ich nutze Firebird seit Ewigkeiten auftraggeberbedingt fast nur auf Windows, und dort ist die Parallelinstallation eines Firebird-Servers, egal in welcher Kombi, eine Sache von 3 Miinuten. Port anpassen, Dienst registrieren, fertig, wie es sein sollte. Das hat nix mit Windows zu tun, sondern ist eine manuelle Installation ohne Paketverwaltung, im Prinzip ein Verzeichnisbaum ausgepackt, ein/zwei Dateien angepasst und gut ist. Firebird ist nun wirklich nicht so komplex organisiert, als dass man dafür eine Paketverwaltung bräuchte. Der Spaß beginnt bei linux dann, wenn jeder die Zutaten anders übers Filesystem verkleckern muss. Und da finde ich linux tatsächlich ätzend, weil Du nicht alles an einem Ort zusammen hast, sondern Dich zum Affen suchst, wo die Zutaten heute mal rumliegen. Mal davon abgesehen, dass man bei debian nicht gewaltfrei brandaktuelle Firebirds installieren kann.

Ich hab auch die Arie ähnlich Deiner mitbekommen, als ein linux (debian) Admin-Kollege einen 4er oder 5er parallel installieren wollte. Der meinte irgendwann, "das ist scheiße paketiert". Ich hab den Ranz dann manuell ergänzt und irgendwann lief es. Zwischendurch hatte der Admin den Paketierer kontaktiert und der hat nachgebessert. Aber so richtig rund scheint es noch nicht zu sein. Komisch, weil die Firebird-Entwickler vorwiegend auf linux entwickeln und testen.

Kannst Du auf github ein Ticket aufmachen wegen der schwergängigen Paralellinstallation unter linux?
Benutzeravatar
RS667
Beiträge: 24
Registriert: Do 29. Aug 2024, 19:01

vr2 hat geschrieben: Do 5. Sep 2024, 02:59 Hi Michael,

unterhaltsam, ich versteh Dich gut ;-)

Kannst Du auf github ein Ticket aufmachen wegen der schwergängigen Paralellinstallation unter linux?
Hallo,

ich kann das die Woche mal machen, ja. Man muss aber auch sagen, dass die Prüfung auf einen laufenden Dienst auch unter Win aktiv ist, wenn man denn den Installer nutzt, und nicht die zip-Download-Variante. Das empfinde ich auch als störend, weil die Parallelinstallation in einem anderen Pfad ja nicht den laufenden Prozess beeinflusst.

MfG Michael
Antworten