Dear members,
I have timeout issues with back-sql using mysql as backend (read-only).
I could successfully setup open-ldap with back-sql querying from a mysql db.
However there is a wait_timeout in mysql and if no query is being made for > then
wait_timeout the slapd breaks and I have to restart it to connect to mysql again.
http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html
As a workaround I could implement a cron-job to execute a query every x hour (depending on
wait_timeout). However I would much more like that back-sql is able to (auto-)reconnect.
I'm not a developer and have no idea how this can be done - maybe this is in the
sql-wrap.c code?
executing an ldap query after "wait_timeout" returns slapd.log:
Jul 20 17:22:53 STAG-BCC slapd[2054]: ==>backsql_get_db_conn()
Jul 20 17:22:53 STAG-BCC slapd[2054]: <==backsql_get_db_conn()
Jul 20 17:22:53 STAG-BCC slapd[2054]: ==>backsql_attrlist_add(): adding
"objectClass" to list
Jul 20 17:22:53 STAG-BCC slapd[2054]: ==>backsql_dn2id("dc=bbn,dc=ch")
matched expected
Jul 20 17:22:53 STAG-BCC slapd[2054]: backsql_dn2id("dc=bbn,dc=ch"): id_query
"SELECT id,keyval,oc_map_id,dn FROM ldap_entries WHERE dn=?"
Jul 20 17:22:53 STAG-BCC slapd[2054]: backsql_dn2id("dc=bbn,dc=ch"): error
executing query ("SELECT id,keyval,oc_map_id,dn FROM ldap_entries WHERE dn=?",
"dc=bbn,dc=ch"):
Jul 20 17:22:53 STAG-BCC slapd[2054]: Return code: -1
Jul 20 17:22:53 STAG-BCC slapd[2054]: nativeErrCode=2006 SQLengineState=08S01
msg="[MySQL][ODBC 5.1 Driver][mysqld-5.5.49-0+deb8u1]MySQL server has gone
away"
Jul 20 17:22:53 STAG-BCC slapd[2054]: <==backsql_dn2id("dc=bbn,dc=ch"):
err=80
Any suggestions are most welcome
Br
Simon
I'm using the following setup:
-----------------------------
Debian Jessie x86_64 (up to date)
Openldap-2.4.44 compiled from source with ./configure --enable-sql
libmyodbc 5.1.10-3
mysql 5.5.49-9
odbc.ini:
[ldapds]
Driver = MySQL
Description = BCC MySQL DB
SERVER = 127.0.0.1
PORT = 3306
USER = ldap
Password = ldap
Database = prov_ldap
SOCKET = /var/lib/mysql/mysql.sock
odbcinst.ini:
[MySQL]
Description = ODBC for MySQL
Driver = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libodbcmyS.so
FileUsage = 1
slapd.conf:
include /usr/local/etc/openldap/schema/core.schema
include /usr/local/etc/openldap/schema/cosine.schema
include /usr/local/etc/openldap/schema/inetorgperson.schema
include /usr/local/etc/openldap/schema/SIP.schema
pidfile /usr/local/var/run/slapd.pid
argsfile /usr/local/var/run/slapd.args
loglevel any
database sql
suffix "dc=bbn,dc=ch"
rootdn "dc=bbn,dc=ch"
rootpw ldap
dbname ldapds
dbuser ldap
dbpasswd ldap
subtree_cond "ldap_entries.dn LIKE CONCAT('%',?)"
insentry_stmt "INSERT INTO ldap_entries (dn,oc_map_id,parent,keyval) VALUES
(?,?,?,?)"
has_ldapinfo_dn_ru no
#cachesize 0