Wpisy otagowane ‘DBCluster’

SQLgrey support for DBCluster

poniedziałek, 28 Lipiec 2008

Próbowałem uruchomić SQLgrey w połączeniu z wieloma (>1) bazami danych MySQL, ale nie wyszło. Niemniej poniżej moje doświadczenia:

  • bazy tylko do odczytu (read_hosts) muszą nasłuchiwać na domyślnym porcie (3306), nie ma innej możliwości konfiguracji,
  • $DBIx::DBCluster::CLUSTERS = {
    "$self->{sqlgrey}{db_host}" => {
    'WRITE_HOSTS'  => [$self->{sqlgrey}{db_host}],
    'READ_HOSTS'   => [@read_hosts],
    },
    };
  • połączenie na takiego samego użytkownika i to samo hasło jak baza podstawowa (db_host)
$self->{sqlgrey}{dbh} = DBIx::DBCluster->connect($self->cnctinfo(),
$self->{sqlgrey}{db_user},
$self->{sqlgrey}{db_pass},
{ PrintError => 0,
AutoCommit => 1,
InactiveDestroy => 1 }
)
or $self->mylog('dbaccess', 0, "can't connect to DB: $DBI::errstr");

O ile z użytkownikiem i hasłem nie ma problemu (baza mysql również się replikuje na serwer zapasowy), to z portem jak najbardziej jest, no ale można się dostosować.

  • pożyteczną opcją może być db_cleanup_hostname, która zapewnia, że tylko jeden serwer z SQLgrey będzie wykonywał okresowe czyszczenie tabel. W przypadku, gdy mamy spory ruch (dużo rekordów w bazie) i wiele frontend‘owych serwerów pocztowych powinno to zmniejszyć obciążenie bazy, a negatywnego wpływu na pracę raczej nie ma.

Uruchomienie SQLgrey z DBCluster kończy się mniej więcej tak:

Jul 28 11:28:01 mailin-ng1 sqlgrey: dbaccess: Using DBIx:DBCluster
Jul 28 11:28:01 mailin-ng1 sqlgrey: dbaccess: Read_hosts: 10.0.27.176
Jul 28 11:28:01 mailin-ng1 sqlgrey: fatal: Can't locate object method "connect" via
 package "DBIx::DBCluster" at /usr/sbin/sqlgrey line 829.

DBIx::DBCluster w wersji 0.01. SQLgrey – 1.7.4. Perl 5.8.8.