LINUX.ORG.RU
решено ФорумAdmin

Не стартит демон Bacula

 , ,


0

1

Собственно, вот.

Два демона стартят успешно. Главный демон bacula-director не стартит совсем. MySQL внешний, находится на другом сервере.

Вот лог бакулы, пишет что не может подрубиться к базе. Руками я на этом сервере могу приконнектиться к MySQL и залогиниться под указанным в конфиге пользователем и просмотреть базы.

30-Jan 15:36 bacula-dir JobId 0: Fatal error: Could not open Catalog "MyCatalog", database "bacula".
30-Jan 15:36 bacula-dir JobId 0: Fatal error: sqlite.c:182 Database /var/lib/bacula/bacula.db does not exist, please create it.
30-Jan 15:36 bacula-dir ERROR TERMINATION
Please correct configuration file: /etc/bacula/bacula-dir.conf

Вот конфиг bacula-dir.conf с секцией подключения к MySQL. Если затребуется выложить весь конфиг - выложу.

# Generic catalog service
Catalog {
  Name = MyCatalog
# Uncomment the following line if you want the dbi driver
#  dbdriver = "dbi:mysql"; dbaddress = "10.5.1.6"; dbport = "3306"  
  dbname = "bacula"; DB Address = "10.5.1.6"; dbuser = "bacula"; dbpassword = "storage"
}

В логах мускуля при попытке старта демона бакулы нет строчки коннекта от, собственно, этого сервера c бакулой, т.е. демон даже не коннектит к мускулю.

ЧЯДНТ?



Последнее исправление: cetjs2 (всего исправлений: 3)

Ответ на: комментарий от nebraska_edu

у меня такое чувство, что он ломится по умолчанию на локальный мускуль, которого нет, о чем пишет во второй строчке лога.

nebraska_edu
() автор топика

sqlite.c:182 Database /var/lib/bacula/bacula.db does not exist

Он у тебя пытается sqlite базу использовать. Может ты вместо bacula-director-mysql поставил bacula-director-sqlite3? ПО крайней мере в Debian/Ubuntu это разные пакеты

selivan ★★★
()
Ответ на: комментарий от selivan

а вот это вполне возможно.

сейчас посмотрю.

спасибо.

nebraska_edu
() автор топика
Ответ на: комментарий от selivan

стоп. :)

пока топик еще жив, последний вопрос.

накатил я нормальный пакет, но все равно демон не стартит, теперь ругается на таблицу, вот лог мускуля, что коннект от бакулы идет

140130  7:22:49	  629 Connect	bacula@10.5.1.49 on bacula
		  629 Query	SELECT VersionId FROM Version
		  629 Quit	

лог бакулы

30-Jan 16:21 bacula-dir JobId 0: Fatal error: Query failed: SELECT VersionId FROM Version: ERR=Table 'bacula.Version' doesn't exist
30-Jan 16:21 bacula-dir JobId 0: Fatal error: Could not open Catalog "MyCatalog", database "bacula".
30-Jan 16:21 bacula-dir JobId 0: Fatal error: Query failed: SELECT VersionId FROM Version: ERR=Table 'bacula.Version' doesn't exist
30-Jan 16:21 bacula-dir ERROR TERMINATION

я, честно гвооря, не очень понимаю, как корректный sql-запрос создать для таблицы.

nebraska_edu
() автор топика
Ответ на: комментарий от nebraska_edu

А база создана? Там должны быть скрипты типа:

/usr/libexec/bacula/grant_mysql_privileges
/usr/libexec/bacula/create_mysql_database
/usr/libexec/bacula/make_mysql_tables 
sin_a ★★★★★
()
Ответ на: комментарий от nebraska_edu

Создай базу. При нормальной установке оно, по-моему само создаёт, но если не прокатило - смотри в /usr/share/doc/bacula*, где-нибудь там описано

selivan ★★★
()
Ответ на: комментарий от sin_a

Базу я создал руками.

Видимо, создал ее криво.

Вопрос - как ее создать вот этим набором скриптов, которые есть в бакуле?

nebraska_edu
() автор топика
Ответ на: комментарий от selivan

не, при нормальной установке оно инсталлит тебе на машину мускуль и уже в нем создает (наверное, создает), да.

поэтому от настройки мускуля, который шел вместе с пакетом я отказался, т.к. у меня есть другой.

nebraska_edu
() автор топика
Ответ на: комментарий от nebraska_edu

Где-нибудь в /usr/share/doc/bacula* должна быть инструкция, как этими скриптами пользоваться

selivan ★★★
()
Ответ на: комментарий от MrClon

нет.

во первых, я не могу найти скрипты, которые идут с пакетом бакулы.

во вторых, я не знаю какие табоицы надо создавать руками.

я так понимаю, что скрипты надо выполнять на mysql сервере?!

nebraska_edu
() автор топика
Ответ на: комментарий от black_13

А не, неправду сказал. У меня debian, в пакете идут bash скрипты, которые нужно последовательно выполнить из под рута:

root@deb:~# ls -l /usr/share/bacula-director/
итого 28
-rwxr-xr-x 1 root root  2591 Апр 24  2013 grant_postgresql_privileges
-rwxr-xr-x 1 root root 14327 Апр 24  2013 make_postgresql_tables
-rwxr-xr-x 1 root root   608 Апр 16  2013 postinst-common
-rwxr-xr-x 1 root root  1534 Апр 24  2013 pdate_postgresql_tables
root@deb:~#

У тебя такиеже, только для mysql. Посмотри что в них, там все довольно просто.

black_13
()
Ответ на: комментарий от MrClon

Создаётся только локально. На удалённом сервере только ручками.

1. Цепляешься к серверу mysql

2. Создаёшь базу (я обычно иду на сайт софта и там в разделе «Установка» есть скрипты/команды для создания базы)

3. Проверяешь, что удалённое подключение возможно к БД

- my.cnf bind = <твой айпишник>

- добавляешь учётку для удалённого доступа к БД

GRANT ALL PRIVILEGES ON racktables_db.* TO racktables_user@<ip с которого подключаешься к БД> IDENTIFIED BY 'password';

Deleted
()
Ответ на: комментарий от black_13

У меня debian, в пакете идут bash скрипты, которые нужно последовательно выполнить из под рута:

да, я нашел их, сенкс за путь. :)

теперь ключевой вопрос - мне их выполнить нужно, так понимаю, локально на mysql сервере?! (он у меня удаленный).

nebraska_edu
() автор топика
Ответ на: комментарий от nebraska_edu

Ну откройте скрипты да посмотрите, что оно делает, судя по всему, там либо bash, либо perl. Ну, или если тот, кто их делал, подумал о пользователях, позвать скрипты с --help или --usage.

undertaker ★★
()
Ответ на: комментарий от undertaker

я уже.

но там ничего внятного.

запустил один на машине с mysql

выдало вот что:

root@mail:/usr/share/bacula/usr/share/bacula-director# bash make_mysql_tables
make_mysql_tables: line 13: MinValue: command not found
make_mysql_tables: line 13: MaxValue: command not found
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
Creation of Bacula MySQL tables failed.
nebraska_edu
() автор топика
Ответ на: комментарий от MrClon
#!/bin/sh
#
# shell script to create Bacula MySQL tables
#
# Important note: 
#   You won't get any support for performance issue if you changed the default
#   schema.
#
bindir=/usr/bin
PATH="$bindir:$PATH"
db_name=${db_name:-XXX_DBNAME_XXX}

if mysql -D ${db_name} $* -f <<END-OF-DATA
--
-- Note, we use BLOB rather than TEXT because in MySQL,
--  BLOBs are identical to TEXT except that BLOB is case
--  sensitive in sorts, which is what we want, and TEXT
--  is case insensitive.
--
CREATE TABLE Filename (
  FilenameId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  Name BLOB NOT NULL,
  PRIMARY KEY(FilenameId),
  INDEX (Name(255))
  );

CREATE TABLE Path (
   PathId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
   Path BLOB NOT NULL,
   PRIMARY KEY(PathId),
   INDEX (Path(255))
   );

-- We strongly recommend to avoid the temptation to add new indexes.
-- In general, these will cause very significant performance
-- problems in other areas.  A better approch is to carefully check
-- that all your memory configuation parameters are
-- suitable for the size of your installation.	If you backup
-- millions of files, you need to adapt the database memory
-- configuration parameters concerning sorting, joining and global
-- memory.  By default, sort and join parameters are very small
-- (sometimes 8Kb), and having sufficient memory specified by those
-- parameters is extremely important to run fast.  

-- In File table
-- FileIndex can be 0 for FT_DELETED files
-- FileNameId can link to Filename.Name='' for directories
CREATE TABLE File (
   FileId BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
   FileIndex INTEGER UNSIGNED DEFAULT 0,
   JobId INTEGER UNSIGNED NOT NULL REFERENCES Job,
   PathId INTEGER UNSIGNED NOT NULL REFERENCES Path,
   FilenameId INTEGER UNSIGNED NOT NULL REFERENCES Filename,
   DeltaSeq SMALLINT UNSIGNED DEFAULT 0,
   MarkId INTEGER UNSIGNED DEFAULT 0,
   LStat TINYBLOB NOT NULL,
   MD5 TINYBLOB,
   PRIMARY KEY(FileId),
   INDEX (JobId),
   INDEX (JobId, PathId, FilenameId)
   );

вот.

тут основной конфиг в шапке, дальше все типовое как в нижней секции.

nebraska_edu
() автор топика
Ответ на: комментарий от nebraska_edu

Короче забей на скрипт подключить к нужному mysql серверу вручную под рутом (или пользователем у которого есть права на нужную базу) и выполни вручную эти sql команды (то что после «if mysql -D ${db_name} $* -f <<END-OF-DATA»)

MrClon ★★★★★
()
Ответ на: комментарий от MrClon

да, я уже так и сделал. :)

спасибо всем за помощь, топег закрываю!

nebraska_edu
() автор топика
Ответ на: комментарий от nebraska_edu
if mysql -D ${db_name} $*

Вот и ответ. Скрипту надо передать те же параметры, что и mysql-ю: --host, --port, --username и --password.

P.S. А вот usage в скрипте могли бы и сделать.

undertaker ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.