Re: [Bacula-users] Error Director /usr/lib64/libbaccats-7.4.0.so: undefined symbol: mysql_init

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [Bacula-users] Error Director /usr/lib64/libbaccats-7.4.0.so: undefined symbol: mysql_init

Kern Sibbald
Hello,

To everyone who is having problems building Bacula to support MySQL
version 5.7.x.  This is indeed a linking problem.  This version is found
on Ubuntu 16.04, and probably other OSes with the most recent MySQL
releases.  MySQL has eliminated the libmysqlclient_r.so library, which
is the thread safe library by making the standard libmysqlclient.so
thread safe.  While this is logical and desirable, to do so, they
modified the way that MySQL is linked and rely on mysql_config to
provide the correct parameters.  All is OK to that point.  
Unfortunately, since Bacula has a lot of detection code for old versions
of MySQL, the Bacula implementation was not quite up to par.

I have now fixed that problem and pushed a somewhat complicated patch
into the Bacula public repositories for Branch-7.0, Branch-7.2, and
Branch-7.4.

If you want a quickie work around without getting the latest code:

- cd <bacula>
- run your ./configure
  - cd <bacula>/src/cats
- edit Makefile
- Change the line that reads:
MYSQL_LIBS =
to
MYSQL_LIBS = -L/usr/lib/x86_64-linux-gnu -lmysqlclient -lpthread -lz -lm
-lrt -ldl
- cd <bacula>
- make -j9
- ...

You should then have a Bacula that is correctly built.  Note: it is
possible that the mysqlclient library is in a different place on your
system.  To get the correct values to assign to MYSQL_LIBS, on your
system simply do:

mysql_setup --libs_r

A final note about MySQL: for version 5.7, it seems that either they
have a bug or more likely some default sync/fsync has been made the
default, which means that using an out of the box MySQL and delivered on
Ubuntu 16.04 is 10-15 times slower than either PostgreSQL out of the box
or prior MySQL versions.  For me, this makes even running regression
tests on that particular MySQL totally unusable (i.e. the normal set of
regression tests run in about 2 hours; with this version of MySQL, it
will probably take between 20 and 30 hours).  Hopefully Ubuntu or Oracle
(MySQL) will fix this problem, which I will officially report today.

Best regards,
Kern

PS:

If any of you are C/C++ experienced Linux or Windows developers, Bacula
Systems is hiring two new developers.  These jobs are in Switzerland.  
If you are interested, please see:

     http://www.baculasystems.com/company/careers


On 01/30/2016 03:16 AM, Phil Stracchino wrote:

> On 01/29/16 19:41, Hector Javier Agudelo Corredor wrote:
>> HI team
>>
>>
>> I installed centos 6.7.
>>
>> I have installed bacula 7.4 with postgres  5.7.10 but when I set the
>> mysql password in the file director.
> [...]
>
>> But when I test settings file manager with the command
>>
>> bacula-dir sudo -tc /etc/bacula/bacula-dir.conf
>>
>> get the following error:
>>
>> bacula-dir: symbol lookup error: /usr/lib64/libbaccats-7.4.0.so
>> <http://libbaccats-7.4.0.so>: undefined symbol: mysql_init
>
> Ummmmm......   What's wrong with this picture?
>
> Did you mean you installed with *MySQL* 5.7.10?
>
>
> Personally, if I were you, I would not be using MySQL 5.7 yet.  It seems
> to still have some teething issues, some of them serious.  You might try
> backing out to MySQL (or Percona Server) 5.6.28.
>
> That said, as Michael suggested, it looks as though there is something
> wrong (or simply odd) about either your configure options or your build
> environment.
>
>


------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are
consuming the most bandwidth. Provides multi-vendor support for NetFlow,
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports. http://pubads.g.doubleclick.net/gampad/clk?id=1444514421&iu=/41014381
_______________________________________________
Bacula-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/bacula-devel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Ubuntu 16: make_mysql_tables misbehavior "Invalid default value for"

Heitor Faria
Hello, Kern,

Another Ubuntu 16 issue is running the make_mysql_tables results in error:

ERROR 1067 (42000) at line 91: Invalid default value for 'CleaningDate'
ERROR 1067 (42000) at line 111: Invalid default value for 'SchedTime'
ERROR 1067 (42000) at line 145: Invalid default value for 'SchedTime'
ERROR 1067 (42000) at line 187: Invalid default value for 'Date'
ERROR 1067 (42000) at line 201: Invalid default value for 'CreateTime'
ERROR 1067 (42000) at line 225: Invalid default value for 'FirstWritten'
ERROR 1067 (42000) at line 321: Invalid default value for 'Time'

The workaround for this is:

sed -i s/'DATETIME DEFAULT 0'/'DATETIME'/g /etc/bacula/scripts/make_mysql_tables

I wasn't able to reproduce it in any Debian yet.
If it is needed I'll be glad to open a bug report.

Regards,

----- Original Message -----
> From: "Kern Sibbald" <[hidden email]>
> To: [hidden email], "bacula-devel" <[hidden email]>
> Sent: Wednesday, June 15, 2016 4:51:18 AM
> Subject: Re: [Bacula-devel] [Bacula-users] Error Director /usr/lib64/libbaccats-7.4.0.so: undefined symbol: mysql_init

> Hello,
>
> To everyone who is having problems building Bacula to support MySQL
> version 5.7.x.  This is indeed a linking problem.  This version is found
> on Ubuntu 16.04, and probably other OSes with the most recent MySQL
> releases.  MySQL has eliminated the libmysqlclient_r.so library, which
> is the thread safe library by making the standard libmysqlclient.so
> thread safe.  While this is logical and desirable, to do so, they
> modified the way that MySQL is linked and rely on mysql_config to
> provide the correct parameters.  All is OK to that point.
> Unfortunately, since Bacula has a lot of detection code for old versions
> of MySQL, the Bacula implementation was not quite up to par.
>
> I have now fixed that problem and pushed a somewhat complicated patch
> into the Bacula public repositories for Branch-7.0, Branch-7.2, and
> Branch-7.4.
>
> If you want a quickie work around without getting the latest code:
>
> - cd <bacula>
> - run your ./configure
>  - cd <bacula>/src/cats
> - edit Makefile
> - Change the line that reads:
> MYSQL_LIBS =
> to
> MYSQL_LIBS = -L/usr/lib/x86_64-linux-gnu -lmysqlclient -lpthread -lz -lm
> -lrt -ldl
> - cd <bacula>
> - make -j9
> - ...
>
> You should then have a Bacula that is correctly built.  Note: it is
> possible that the mysqlclient library is in a different place on your
> system.  To get the correct values to assign to MYSQL_LIBS, on your
> system simply do:
>
> mysql_setup --libs_r
>
> A final note about MySQL: for version 5.7, it seems that either they
> have a bug or more likely some default sync/fsync has been made the
> default, which means that using an out of the box MySQL and delivered on
> Ubuntu 16.04 is 10-15 times slower than either PostgreSQL out of the box
> or prior MySQL versions.  For me, this makes even running regression
> tests on that particular MySQL totally unusable (i.e. the normal set of
> regression tests run in about 2 hours; with this version of MySQL, it
> will probably take between 20 and 30 hours).  Hopefully Ubuntu or Oracle
> (MySQL) will fix this problem, which I will officially report today.
>
> Best regards,
> Kern
>
> PS:
>
> If any of you are C/C++ experienced Linux or Windows developers, Bacula
> Systems is hiring two new developers.  These jobs are in Switzerland.
> If you are interested, please see:
>
>     http://www.baculasystems.com/company/careers
>
>
> On 01/30/2016 03:16 AM, Phil Stracchino wrote:
>> On 01/29/16 19:41, Hector Javier Agudelo Corredor wrote:
>>> HI team
>>>
>>>
>>> I installed centos 6.7.
>>>
>>> I have installed bacula 7.4 with postgres  5.7.10 but when I set the
>>> mysql password in the file director.
>> [...]
>>
>>> But when I test settings file manager with the command
>>>
>>> bacula-dir sudo -tc /etc/bacula/bacula-dir.conf
>>>
>>> get the following error:
>>>
>>> bacula-dir: symbol lookup error: /usr/lib64/libbaccats-7.4.0.so
>>> <http://libbaccats-7.4.0.so>: undefined symbol: mysql_init
>>
>> Ummmmm......   What's wrong with this picture?
>>
>> Did you mean you installed with *MySQL* 5.7.10?
>>
>>
>> Personally, if I were you, I would not be using MySQL 5.7 yet.  It seems
>> to still have some teething issues, some of them serious.  You might try
>> backing out to MySQL (or Percona Server) 5.6.28.
>>
>> That said, as Michael suggested, it looks as though there is something
>> wrong (or simply odd) about either your configure options or your build
>> environment.
>>
>>
>
>
> ------------------------------------------------------------------------------
> What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
> patterns at an interface-level. Reveals which users, apps, and protocols are
> consuming the most bandwidth. Provides multi-vendor support for NetFlow,
> J-Flow, sFlow and other flows. Make informed decisions using capacity planning
> reports. http://pubads.g.doubleclick.net/gampad/clk?id=1444514421&iu=/41014381
> _______________________________________________
> Bacula-devel mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/bacula-devel

--
=======================================================================
Heitor Medrado de Faria | Bacula do Brasil
Próximas aulas telepresencial ao-vivo - 02 de maio: http://www.bacula.com.br/agenda/ 
Ministro treinamento e implementação in-company Bacula: http://www.bacula.com.br/in-company/ 
61 8268-4220
Site: www.bacula.com.br
========================================================================

------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are
consuming the most bandwidth. Provides multi-vendor support for NetFlow,
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports. http://pubads.g.doubleclick.net/gampad/clk?id=1444514421&iu=/41014381
_______________________________________________
Bacula-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/bacula-devel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Ubuntu 16: make_mysql_tables misbehavior "Invalid default value for"

Phil Stracchino-2
On 06/15/16 16:49, Heitor Faria wrote:

> Hello, Kern,
>
> Another Ubuntu 16 issue is running the make_mysql_tables results in error:
>
> ERROR 1067 (42000) at line 91: Invalid default value for 'CleaningDate'
> ERROR 1067 (42000) at line 111: Invalid default value for 'SchedTime'
> ERROR 1067 (42000) at line 145: Invalid default value for 'SchedTime'
> ERROR 1067 (42000) at line 187: Invalid default value for 'Date'
> ERROR 1067 (42000) at line 201: Invalid default value for 'CreateTime'
> ERROR 1067 (42000) at line 225: Invalid default value for 'FirstWritten'
> ERROR 1067 (42000) at line 321: Invalid default value for 'Time'
>
> The workaround for this is:
>
> sed -i s/'DATETIME DEFAULT 0'/'DATETIME'/g /etc/bacula/scripts/make_mysql_tables

OR, you could replace the 0 with a valid DATETIME default value such as
'0000-00-00 00:00:00' or '01-01-1970 00:00:00' (the Unix epoch), which
would be a more proper fix than just removing the default.  MySQL
started enforcing valid defaults for DATETIME in the 5.6 branch.


--
  Phil Stracchino
  Babylon Communications
  [hidden email]
  [hidden email]
  Landline: 603.293.8485

------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are
consuming the most bandwidth. Provides multi-vendor support for NetFlow,
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports. http://pubads.g.doubleclick.net/gampad/clk?id=1444514421&iu=/41014381
_______________________________________________
Bacula-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/bacula-devel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Ubuntu 16: make_mysql_tables misbehavior "Invalid default value for"

Kern Sibbald
In reply to this post by Heitor Faria
Hello Heitor,

This is fixed in 7.4.1.  The problem originates from MySQL version 5.7
no longer permitting a DEFAULT 0 on a timestamp.  However, a timestamp
in MySQL is nothing other than a Unix/Linux time/date, which is nothing
other than a simple integer, and the value 0 is a perfectly valid
timestamp value.  Thus this change by MySQL does absolutely nothing
other than make certain applications incompatible -- too bad.

The solution is to upgrade to 7.4.1 or if you are running on Ubuntu
16.04 you will need the patch that is in the public repository (or my
email).  In my recent testing of MySQL 5.7, I found it out of the box 10
times slower than Postgres out of the box (both on Ubuntu 16.04), so for
me, despite the fact that Postgres is a bit harder to initially
configure, Postgres wins hands down for use with Bacula.

Best regards,
Kern

On 06/15/2016 10:49 PM, Heitor Faria wrote:

> Hello, Kern,
>
> Another Ubuntu 16 issue is running the make_mysql_tables results in error:
>
> ERROR 1067 (42000) at line 91: Invalid default value for 'CleaningDate'
> ERROR 1067 (42000) at line 111: Invalid default value for 'SchedTime'
> ERROR 1067 (42000) at line 145: Invalid default value for 'SchedTime'
> ERROR 1067 (42000) at line 187: Invalid default value for 'Date'
> ERROR 1067 (42000) at line 201: Invalid default value for 'CreateTime'
> ERROR 1067 (42000) at line 225: Invalid default value for 'FirstWritten'
> ERROR 1067 (42000) at line 321: Invalid default value for 'Time'
>
> The workaround for this is:
>
> sed -i s/'DATETIME DEFAULT 0'/'DATETIME'/g /etc/bacula/scripts/make_mysql_tables
>
> I wasn't able to reproduce it in any Debian yet.
> If it is needed I'll be glad to open a bug report.
>
> Regards,
>
> ----- Original Message -----
>> From: "Kern Sibbald" <[hidden email]>
>> To: [hidden email], "bacula-devel" <[hidden email]>
>> Sent: Wednesday, June 15, 2016 4:51:18 AM
>> Subject: Re: [Bacula-devel] [Bacula-users] Error Director /usr/lib64/libbaccats-7.4.0.so: undefined symbol: mysql_init
>> Hello,
>>
>> To everyone who is having problems building Bacula to support MySQL
>> version 5.7.x.  This is indeed a linking problem.  This version is found
>> on Ubuntu 16.04, and probably other OSes with the most recent MySQL
>> releases.  MySQL has eliminated the libmysqlclient_r.so library, which
>> is the thread safe library by making the standard libmysqlclient.so
>> thread safe.  While this is logical and desirable, to do so, they
>> modified the way that MySQL is linked and rely on mysql_config to
>> provide the correct parameters.  All is OK to that point.
>> Unfortunately, since Bacula has a lot of detection code for old versions
>> of MySQL, the Bacula implementation was not quite up to par.
>>
>> I have now fixed that problem and pushed a somewhat complicated patch
>> into the Bacula public repositories for Branch-7.0, Branch-7.2, and
>> Branch-7.4.
>>
>> If you want a quickie work around without getting the latest code:
>>
>> - cd <bacula>
>> - run your ./configure
>>   - cd <bacula>/src/cats
>> - edit Makefile
>> - Change the line that reads:
>> MYSQL_LIBS =
>> to
>> MYSQL_LIBS = -L/usr/lib/x86_64-linux-gnu -lmysqlclient -lpthread -lz -lm
>> -lrt -ldl
>> - cd <bacula>
>> - make -j9
>> - ...
>>
>> You should then have a Bacula that is correctly built.  Note: it is
>> possible that the mysqlclient library is in a different place on your
>> system.  To get the correct values to assign to MYSQL_LIBS, on your
>> system simply do:
>>
>> mysql_setup --libs_r
>>
>> A final note about MySQL: for version 5.7, it seems that either they
>> have a bug or more likely some default sync/fsync has been made the
>> default, which means that using an out of the box MySQL and delivered on
>> Ubuntu 16.04 is 10-15 times slower than either PostgreSQL out of the box
>> or prior MySQL versions.  For me, this makes even running regression
>> tests on that particular MySQL totally unusable (i.e. the normal set of
>> regression tests run in about 2 hours; with this version of MySQL, it
>> will probably take between 20 and 30 hours).  Hopefully Ubuntu or Oracle
>> (MySQL) will fix this problem, which I will officially report today.
>>
>> Best regards,
>> Kern
>>
>> PS:
>>
>> If any of you are C/C++ experienced Linux or Windows developers, Bacula
>> Systems is hiring two new developers.  These jobs are in Switzerland.
>> If you are interested, please see:
>>
>>      http://www.baculasystems.com/company/careers
>>
>>
>> On 01/30/2016 03:16 AM, Phil Stracchino wrote:
>>> On 01/29/16 19:41, Hector Javier Agudelo Corredor wrote:
>>>> HI team
>>>>
>>>>
>>>> I installed centos 6.7.
>>>>
>>>> I have installed bacula 7.4 with postgres  5.7.10 but when I set the
>>>> mysql password in the file director.
>>> [...]
>>>
>>>> But when I test settings file manager with the command
>>>>
>>>> bacula-dir sudo -tc /etc/bacula/bacula-dir.conf
>>>>
>>>> get the following error:
>>>>
>>>> bacula-dir: symbol lookup error: /usr/lib64/libbaccats-7.4.0.so
>>>> <http://libbaccats-7.4.0.so>: undefined symbol: mysql_init
>>> Ummmmm......   What's wrong with this picture?
>>>
>>> Did you mean you installed with *MySQL* 5.7.10?
>>>
>>>
>>> Personally, if I were you, I would not be using MySQL 5.7 yet.  It seems
>>> to still have some teething issues, some of them serious.  You might try
>>> backing out to MySQL (or Percona Server) 5.6.28.
>>>
>>> That said, as Michael suggested, it looks as though there is something
>>> wrong (or simply odd) about either your configure options or your build
>>> environment.
>>>
>>>
>>
>> ------------------------------------------------------------------------------
>> What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
>> patterns at an interface-level. Reveals which users, apps, and protocols are
>> consuming the most bandwidth. Provides multi-vendor support for NetFlow,
>> J-Flow, sFlow and other flows. Make informed decisions using capacity planning
>> reports. http://pubads.g.doubleclick.net/gampad/clk?id=1444514421&iu=/41014381
>> _______________________________________________
>> Bacula-devel mailing list
>> [hidden email]
>> https://lists.sourceforge.net/lists/listinfo/bacula-devel


------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are
consuming the most bandwidth. Provides multi-vendor support for NetFlow,
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports. http://pubads.g.doubleclick.net/gampad/clk?id=1444514421&iu=/41014381
_______________________________________________
Bacula-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/bacula-devel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Ubuntu 16: make_mysql_tables misbehavior "Invalid default value for"

Kern Sibbald
In reply to this post by Phil Stracchino-2
For Bacula, the solution is even simpler, simply delete or the DEFAULT
0.  Bacula does use the value 0, which MySQL unsuccessfully attempts to
outlaw, and it is absolutely critical to use with Bacula, but Bacula
will set it itself even if it is not the default value.


On 06/15/2016 10:56 PM, Phil Stracchino wrote:

> On 06/15/16 16:49, Heitor Faria wrote:
>> Hello, Kern,
>>
>> Another Ubuntu 16 issue is running the make_mysql_tables results in error:
>>
>> ERROR 1067 (42000) at line 91: Invalid default value for 'CleaningDate'
>> ERROR 1067 (42000) at line 111: Invalid default value for 'SchedTime'
>> ERROR 1067 (42000) at line 145: Invalid default value for 'SchedTime'
>> ERROR 1067 (42000) at line 187: Invalid default value for 'Date'
>> ERROR 1067 (42000) at line 201: Invalid default value for 'CreateTime'
>> ERROR 1067 (42000) at line 225: Invalid default value for 'FirstWritten'
>> ERROR 1067 (42000) at line 321: Invalid default value for 'Time'
>>
>> The workaround for this is:
>>
>> sed -i s/'DATETIME DEFAULT 0'/'DATETIME'/g /etc/bacula/scripts/make_mysql_tables
> OR, you could replace the 0 with a valid DATETIME default value such as
> '0000-00-00 00:00:00' or '01-01-1970 00:00:00' (the Unix epoch), which
> would be a more proper fix than just removing the default.  MySQL
> started enforcing valid defaults for DATETIME in the 5.6 branch.
>
>


------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are
consuming the most bandwidth. Provides multi-vendor support for NetFlow,
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports. http://pubads.g.doubleclick.net/gampad/clk?id=1444514421&iu=/41014381
_______________________________________________
Bacula-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/bacula-devel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Ubuntu 16: make_mysql_tables misbehavior "Invalid default value for"

Phil Stracchino-2
On 06/16/16 04:29, Kern Sibbald wrote:
> For Bacula, the solution is even simpler, simply delete or the DEFAULT
> 0.  Bacula does use the value 0, which MySQL unsuccessfully attempts to
> outlaw, and it is absolutely critical to use with Bacula, but Bacula
> will set it itself even if it is not the default value.

In that case, the DEFAULT should indeed not be needed.


--
  Phil Stracchino
  Babylon Communications
  [hidden email]
  [hidden email]
  Landline: 603.293.8485

------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are
consuming the most bandwidth. Provides multi-vendor support for NetFlow,
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports. http://pubads.g.doubleclick.net/gampad/clk?id=1444514421&iu=/41014381
_______________________________________________
Bacula-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/bacula-devel
Loading...