MySQL abfrage ueber ODBC

28/02/2016 - 16:12 von Julius Kavay | Report spam
Hallo,

als erstes, bitte zu entschuldigen, falls mein Posting
"ein wenig" OT ist - und das duerfte es sein, aber eine
bessere Gruppe habe ich nicht gesehen, anderseits, das
Problem koennte durch eine MySQL- bzw. FW-Einstellung
ausgeloest sein.

Wie gesagt, "koennte". Ich tappe noch sehr im Dunkeln.
Ich bin ein "SW-Maxerl" und habe weder mit MySQL noch
mit FWs zu tun.

Ich hoffe, dass fuer die Loesung "meines" Problems bzw.
Phaenomens (weil die Leute meinen, es sei ein SW-Problem)
jemand hier einen Hinweis hat, der mich in die richtige
Richtung weist.


Standort-A
-
- ein (Server)Rechner
(OS, und OS-Version sind mir nicht bekannt)

- der Rechner ist unter einer privaten-IP, IP1 und
unter einer oeffentlichen IP, IP2 erreichbar

- eine MySQL-Datenbank ist installiert, Version (mir) unbekannt

- die Datenbank ist unter IP1:port1 und ueber IP2:port2 erreichbar


Standort-B
- Windows Server,

- an dem sind unter ODBC_Data_Sources mehrere System-DSNs definiert,
unter anderem:

1) MySQL ODBC5.1 Driver
Name : AngDataInt
Server: IP1 // die private IP ueber VPN-Tunnel, siehe oben
Port : port1 // siehe oben
DBName: Orders

2) MySQL ODBC5.1 Driver
Name : AngDataExt
Server: IP2 // die oeffentliche IP, siehe oben
Port : port2 // wie oben

Das Problem/Phaenomen


ich befinde mich am Standort-B (WindowsServer) und moechte mit einer
SELECT-Abfrage Daten aus der MySQL Datenbank bekommen.
Die (groben) Datenwege sind:

Weg1: <ServerB/AngDataInt>--<FW/VPN>--<Internet>--<FW/VPN>--<ServerA>
Weg2: <ServerB/AngDataExt>--<FW/VPN>--<Internet>--<FW/VPN>--<ServerA>

d.h. einmal verwende ich das <AngDataInt> DSN, der auf die Gegenseite
ueber eine private-IP (die ueber einen VPN-Tunnel geht), zugreift und
das andere mal wird das <AngDataExt> DSN verwendet, der die
oeffentliche IP-Adresse der Gegenseite (der MySQL-Servers) benuetzt.

Die Select-Abfrage wird zwar ueber eine eigene SW durchgefuehrt,
aber um Diskussionen wie 'das Problem wird wohl in deiner SW liegen'
vorzubeugen, habe ich exakt die selben Abfragen auch mit dem
oeffentlich zugaenglichem Programm WinSQL durchgefuehrt,
die Ergebnisse sind auch exakt die selben:

Weg1
-
select col1, col2,... from table where AngNr = 42
funktioniert, so lange ich WENIGER als 15 Spalten abfrage, d.h.

select c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15 from...
funktioniert nicht mehr. Statt eines Ergebnis, friert die Abfrage ein
und nach ca. einer Stunde kommt eine Fehlermeldung:

"SQLState: (08S01) NativeError: [2013] Message:
[MySQL][ODBC 5.1 Driver][mysqld-5.5.43-log]
Lost connection to MySQL server during query"


Es ist egal, welche Spalten ich abfrage.
Maximal 14 gehen, ab der 15. Spalte haengt das Select.

Weg2
funktioniert immer, egal ob ich eine, 10, 15, 20 oder
alle Spalten abfrage.


Ich verstehe es nicht, warum eine FW (auch dann wenn die ein
besonders "streng" konfiguriertes UTM hat) und so in den Datenverkehr
eingreift - wenn das Problem ueberhaupt von der FW verursacht wird.

Das ich durch die verschiedenen Wege an verschieden MySQL-Instanzen
komme, glaube ich auch nicht so wirklich, denn die Daten sind gleich
(OK, gut repliziert koennte es auch noch sein...).

An den Daten sollte es auch nicht liegen, denn die Abfragen:

select AngDatum from table where AngNr = 42
select AngDatum, AngDatum from table where AngNr = 42
select AngDatum, AngDatum, AngDatum from table where AngNr = 42
usw. funktioniert bis ich 14 mal AngDatum schreibe, aber ab dem
15-ten AngDatum haengt die Verbindung. Eine Stunde lang.

Die "lost connection" duerfte dann, denke ich, durch eine der FWs
ausgeloest werden, die die Verbindung mangels Kommunikation beendet.

Der Vollstaendigkeit halber moechte ich vermerken, dass mit einer
dritten DSN, die genau so ausschaut wie AngDataInt, aber statt
DBName=Orders, DBName=Artikel hat, funktionieren alle Abfragen,
auch die, die mehr als 15 Spalten abfragen - seit fast 10 Jahren!

Frage, hat jemand eine Idee, was sich da abspielt?
Oder habe ich nur Balken vor die Augen?

Gibt es im MySQL eine Einstellung, um die abgefragte Spaltenanzahl
zu begrenzen? Waere eher sinnlos, aber ich frage mal so dumm...
Dass man FW-UTMs auf Protokolle wie http, pop, smtp ansetzen kann
zwecks Ueberwachung, das weiss ich, aber SQL ist doch kein
Netzwerkprotokoll. Oder gibt es FWs/UTMs die das koennen?
Meine kann das jedenfalls nicht.

Danke,
Julius

 

Lesen sie die antworten

#1 Florian Weimer
28/02/2016 - 16:21 | Warnen spam
* Julius Kavay:

Weg1: <ServerB/AngDataInt>--<FW/VPN>--<Internet>--<FW/VPN>--<ServerA>
Weg2: <ServerB/AngDataExt>--<FW/VPN>--<Internet>--<FW/VPN>--<ServerA>

d.h. einmal verwende ich das <AngDataInt> DSN, der auf die Gegenseite
ueber eine private-IP (die ueber einen VPN-Tunnel geht), zugreift und
das andere mal wird das <AngDataExt> DSN verwendet, der die
oeffentliche IP-Adresse der Gegenseite (der MySQL-Servers) benuetzt.



Das kann dazu führen, daß der Server eine andere IP-Adresse sieht und
andere ACLs usw. anwendet. Ein erster Schritt wàre, das
auszuschließen.

Ähnliche fragen