Arquivo de julho \18\UTC 2007

Instalando o FirebirdSQL 2

O FirebirdSQL (aka Firebird) é um excelente banco de dados relacional compatível com a conformidade SQL ISO/IEC 9075:2003, ele nasceu Livre depois do fork com o Interbase 6 oferecido pela Borland em julho de 2000, que mais tarde tornou-se proprietário novamente. Daí não teve jeito, nasceu o fork chamado FirebirdSQL. O Banco de Dados Relacional FirebirdSQL roda em Windows, *BSD, Linux e vários sabores de Unix e diferentes tipos de hardwares e processadores, possui uma série de vantagens como concorrência, performance e uma linguagem poderosa para escrever triggers e stored procedures.

Atualmente o FirebirdSQL encontra-se na versão 2.0 e com a versão 2.1 em fase beta, mas há um problema : para sistemas baseados no debian (ubuntu incluso), o Firebird encontra-se nos repositórios como versão 1.5.3, que possui menos recursos do que a versão 2.0. Para resolver essa situação vamos precisar fazer um backport, isto é, pegar o código fonte da versão 2.0 que está em repositórios para versões futuras (Gutsy) e porta-lo para a versão que estou utilizando (Feisty). O backport é melhor do que rodar o instalador (também existente) para linux ou usar o método configure; make; make install porque os binários compatíveis com o nosso sistema já estará ambientado à nossa distribuição.

A receita de bolo abaixo ensina a fazer isso em distros usando Ubuntu, mas a mesma receita pode ser seguida por outros administradores que utilizem uma versão compatível com Debian, bastando modificar a URI no source.list no primeiro passo.

1) Edite o arquivo /etc/apt/sources.list, e acrescente no final dele a seguinte linha :

deb-src http://archive.ubuntu.com/ubuntu/ gutsy main restricted universe multiverse

2) Atualizar a base de dados do sistema :

sudo apt-get update

3) Instalar as dependências para compilação do FirebirdSQL 2.0 :

sudo apt-get build-dep firebird2.0

4) Compilar e gerar os pacotes binários no formato .deb :

sudo apt-get -b source firebird2.0

Isso irá baixar os fontes do FirebirdSQL, compilar e gerar pacotes binários no formato .deb para serem instalados em computadores que usem o mesmo sistema que o seu. Esse processo é automátizado, é por isso que administradores Debian gostam tanto do apt. Veja o resultado final num Ubuntu Feisty :

$ ls -1 *.deb
 firebird2.0-classic_2.0.1.12855.ds1-7_i386.deb
 firebird2.0-common_2.0.1.12855.ds1-7_i386.deb
 firebird2.0-dev_2.0.1.12855.ds1-7_all.deb
 firebird2.0-doc_2.0.1.12855.ds1-7_all.deb
 firebird2.0-examples_2.0.1.12855.ds1-7_all.deb
 firebird2.0-super_2.0.1.12855.ds1-7_i386.deb
 firebird-utils_2.0.1.12855.ds1-7_all.deb
 libfbclient2_2.0.1.12855.ds1-7_i386.deb
 libfbembed2_2.0.1.12855.ds1-7_i386.deb

5) Para concluir a instalação :

Muitos pacotes .deb são gerados, mas nem todos devem ser instalados, básicamente o que há ali são documentação, banco de dados de exemplos, cliente de banco de dados (necessário para que aplicações acessem o banco de dados local ou remoto), utilitários (ferramentas de backup, isql) e três sabores do Firebird : SuperServer, Classic e embeded(embarcado). No exemplo abaixo, estarei instalando o FirebirdSQL SuperServer, cliente de banco de dados e os utilitários :

sudo dpkg -i firebird2.0-common_2.0.1.12855.ds1-7_i386.deb  firebird2.0-super_2.0.1.12855.ds1-7_i386.deb \\
   firebird-utils_2.0.1.12855.ds1-7_all.deb \\
   libfbclient2_2.0.1.12855.ds1-7_i386.deb

(os nomes dos binários podem variar conforme a distribuição, versão e método utilizados. As linhas acima são um único comando)

As vezes, podem haver dependências, então se houverem mensagens de erro corroborando isso, então instale-as com o seguinte comando :

sudo apt-get install -f

Se por ventura voce precisar configur a senha do SYSDBA (administrador) em seu sistema, execute o comando :

sudo dpkg-reconfigure firebird2.0-super

Também é possivel com o comando acima, relacionar o serviço do banco de dados do firebird que é iniciado com o boot da máquina para usar o Firebird classic ou super.

6) Para administrar o banco, executar queries e afins numa interface gráfica :

Recomendo a instalação do programa FlameRobin, um frontend gráfico, porém peso-leve (sem dependencias pesadas também), crossplataform (windows, linux, *bsd, macos) e completamente opensource. Voce encontra esse programa na seguinte página :

http://www.flamerobin.org/

Baixe a versão .deb e em seguida :

sudo dpkg -i flamerobin_0.7.6-1_i386.deb
sudo apt-get install -f

Para quem tem o repositório universe habilitado, nem precisa do procedimento acima, basta :

sudo apt-get install flamerobin

7) Convertendo banco de dados de versões anteriores para serem usados no FB2 :
Os arquivos de dados do FB2 não são compátiveis com as versões anteriores, mas não se aflija, a solução é simples : fazer uma cópia de segurança (backup) do banco de dados antigo e restaura-lo no banco de dados novo. Vamos a um outro passo-a-passo :

7.1) Se voce ainda mantém (ou manterá) um FB1.5 em sua rede, então :

a) Faça um backup dele e guarde na maquina onde voce já tem o FB2.0 instalado :

gbak -b -v -t -user "SYSDBA" -password "masterkey" \\
   IP.DO.SERVIDOR:/caminho/para/o/banco/de/dados/arquivo.fdb \\
   /var/lib/firebird/2.0/backup/arquivo.fbk

Repita a mesma operação com o arquivo /var/lib/firebird2/system/security.fdb se desejar guardar também as contas de usuários.

b) Agora restaure-o num arquivo novo, genuinamente compátivel com o FB2.0 :

gbak -r -v -t -user "SYSDBA" -password "masterkey" \\
    /var/lib/firebird/2.0/backup/arquivo.fbk \\
    /var/lib/firebird/2.0/data/arquivo.fdb

A restauração do arquivo security.fbk da-se-a da mesma forma, no entanto, deverá ser restaurado como /var/lib/firebird/2.0/system/security.fdb.

7.2 Se voce vai trocar a versão anterior do FB pela 2.0 no mesmo servidor :

a) Faça a copia de segurança do seu banco de dados antigo (incluindo as contas de usuários), para salvaguardar de problemas e tenha de retornar ao banco de dados antigo, exemplo :

# criando uma pasta para guardar os backups originais
# o fb deverá estar parado para realizar esta operação
mkdir -p /local/do/backup/original

# uma copia das contas dos usuários
cp /var/lib/firebird2/system/security.fdb /local/do/backup/original

# copia dos arquivos de dados que voce possuir
cp /caminho/para/o/banco/de/dados/arquivo.fdb /local/do/backup/original

b) Faça agora um backup (meta-dados e dados) :

gbak -b -v -t -user "SYSDBA" \\
     -password "masterkey" \\
     192.168.1.5:/caminho/para/o/banco/de/dados/arquivo.fdb \\
     /local/do/backup/original/arquivo.fbk

Se voce precisar também das contas dos usuários, repita este procedimento para o arquivo security.fdb .

c) Tendo removido o FB anterior e instalado FB2.0 novo, vamos resturar o backup anterior :

gbak -r -v -t -user "SYSDBA" \\
  -password "masterkey" \\
  /local/do/backup/original/arquivo.fbk \\
  /var/lib/firebird/2.0/data/arquivo.fdb

A restauração do arquivo security.fbk da-se-a da mesma forma, no entanto, deverá ser restaurado como /var/lib/firebird/2.0/system/security.fdb.

7.3 Como definir quem terá acesso físico ao arquivo de dados ?

A pasta /var/lib/firebird/2.0/data é um local já organizado pelo firebird para serem colocados os arquivos de dados, usando esta pasta como referencia voce não precisará se preocupar com permissões, pois nela há permissões suficientes apenas para o usuário firebird(criado pelo próprio firebird) e root, nenhum outro usuário cadastrado no Linux terá acesso a arquivos de dados colocados nesta pasta. Obviamente, se voce quiser um arquivo de dados em outro local voce pode, no entanto, para inibir o arquivo de ser copiado por outro usuário na rede voce terá que nas pastas/arquivos de dados executar o comando :

chmod 700 /home/fbdados
chown firebird.firebird  /home/fbdados
chown firebird.firebird  /home/fbdados/arquivo.fdb
chmod 600 /home/fbdados/arquivo.fdb

Onde /home/fbdados/ representa a pasta onde voce restaurou ou colocou o(s) arquivo(s) de banco de dados. Obviamente, praticar o mesmo comando para os arquivos (arquivo.fdb) é redundancia, no entanto, é bom saber que se a segurança da pasta for trocada acidentalmente ainda o arquivo de dados estará seguro.

Este procedimento é o mesmo que se fazia também nas versões anteriores.

8) Criando aliases para acesso ao banco de dados (opcional) :

Uma dificuldade que muitos sentem ao acessar um arquivo de dados é revelar o path da localização física deste arquivo por ocasião de conectar o banco de dados, isso gera dois problemas principais :

  • Revela a localização física do arquivo de dados, se esta localização for exposta num arquivo texto ou algo do gênero alguém poderá reutilizar essa informação para outros fins.
  • Engessa sua aplicação porque o banco de dados não poderá sair daquele local sem alterar na aplicação ou arquivos de configuração do seu aplicativo.

Esses dois problemas só ocorrem porque não foram criados aliases, as conexões ao invés de referirem-se ao arquivo de dados deveriam referir-se a aliases e este por sua vez foi programado para representar o arquivo de dados com sua localização fisica. Edite o arquivo /etc/firebird/2.0/aliases.conf e acrescente :

principal_dados= /var/lib/firebird/2.0/data/arquivo.fdb

Agora, na sua aplicação voce configura-o para acessar SERVIDOR:principal_dados ao invés do comum SERVIDOR:/caminho/para/arquivo.fdb. Se seu arquivo de dados tiver que mudar de lugar (inclusive de servidor físico), basta alterar o aliases e com isso sua aplicação permanecerá a mesma.

Observações Importantes :

Nem todos os administradores precisam usar o sudo, o sudo normalmente é usado apenas por usuários do sistema Ubuntu e embora a versão do Debian Etch também possa utiliza-lo, é desnecessário quando se estar fazendo uso da conta “root”.

Links uteis :

Documentação a respeito do Firebird :

http://www.firebirdsql.org/index.php?op=doc

Instalação do Firebird (1.5) no Ubuntu, apesar de ser uma versão anterior, ainda é bastante usado :

http://www.firebirdsql.org/manual/ubusetup.html

Migração do banco de dados Microsoft SQL Server (MSSQL) para Firebird, aqui relatando conversões de tipos, funções, etc… :

http://www.firebirdsql.org/manual/migration-mssql.html

Conformidade com o padrão SQL :

http://www.firebirdsql.org/index.php?op=devel⊂=engine&id=SQL_conformance&nosb=1

Lista de discussão em português sobre o FirebirdSQL e FirebirdSQL+PHP (ambas bastante movimentadas) :

http://br.groups.yahoo.com/group/firebird-br/messages

http://tech.groups.yahoo.com/group/firebird-php/messages

E por fim, mas não menos importante, a página oficial sobre o FirebirdSQL :

http://www.firebirdsql.org/

3 Comentários

Voce me achou !

Poxa vida, voce me encontrou, eu sou o Hamacker.

Agora corra antes que eu invada seu sistema :)

1 Comentário