O documento discute como configurar e otimizar o Firebird na nuvem, incluindo como configurar o servidor no marketplace, realizar tuning de parâmetros como cache de disco e memória, e replicar dados entre bancos locais e remotos.
Escalabilidade e alta disponibilidade no php com nginx
Replicação e tuning do Firebird na nuvem
1. Replicação e tuning do
Firebird na nuvem
11/01/2021
Edson Gregório
DBA Firebird
Powered
2. Firebird na Nuvem - Como configurar
Opção Marketplace no
painel de controle, digite
Firebird. Teste o ping para
definir região.
https://www.youtube.com/watch?v=dAT1pySAKfk ->Como Configurar
3. Firebird na Nuvem - Como configurar
Cadastrado com sucesso, os dados
são mostrados na tela, salve-os.
4. Firebird na Nuvem - Tuning
Se prepare para as configurações:
● Obtenha a maior quantidade de memória (Figura 1) do seu container pelo Ícone
"Mudar ambiente de topologia"
● No ícone para acessar as configurações, navegue até “/opt/firebird/” (Figura 2);
● Faça uma cópia do arquivo firebird.conf e/ou databases.conf (FB 3.0);
Figura 1 Figura 2
5. Firebird na Nuvem - Tuning
Principais alterações no firebird.conf / databases.conf
● Mude o “ServerMode” para “SuperClassic”;
● Defina valores para "DefaulDBCachePages" e "FileSystemCacheThreshold":
Fórmulas
● DefaulDBCachePages (quantidade de páginas)
○ memória_disponível / qtd_conexões / tamanho_página
○ 1.000.000.000 / 30 / 8192 = 4069,0104
● FileSystemCacheThreshold (limite_cache)
○ (qtd_páginas * qtd_conexões) + 1
○ (4000 * 30) + 1 = 120001
6. Firebird na Nuvem - Benchmark
● SaveInCloud SP (Container Ubuntu - 128MB RAM e CPU 400MHz):
● AWS SP (VM Windows Server 2019 - 1GB RAM e CPU 2.4GHz):
Link para o vídeo: https://youtu.be/gk815Sk-4h4
7. Firebird na Nuvem - Replicação e Cópias
● Replicação Nativa
● Opção de terceiros
● Cópia de dados para outro banco, sem API
externa
8. Firebird na Nuvem - Exemplo de insert
execute block
as
declare variable id integer;
declare variable data date;
declare variable descricao varchar(40);
begin
for
select f.id, f.data, f.descricao
from feriado f
into id, data, descricao
do
begin
/*inserção sem informar a PK, porém armazenando o ID local para manter o relacionamento*/
execute statement
('insert into feriado (id_local, data, descricao) values (:pId, :pData, :pDescricao)')
(pId := id, pData := data, pDescricao := descricao)
on external 'mqfssp.jelastic.saveincloud.net/11905:exemplo'
as user 'TESTE' password 'teste';
end
end
9. Firebird na Nuvem - Exemplo de update
execute block
as
Begin
/*Atualização local referenciando PK da tabela*/
update feriado f set f.data = current_date where f.id = 123;
/*Atualização em NUVEM referenciando ID da tabela local*/
execute statement
('update feriado f set f.data = current_date where f.id_local = 123')
on external 'mqfssp.jelastic.saveincloud.net/11905:exemplo'
as user 'TESTE' password 'teste';
end
end
10. Firebird na Nuvem - Exemplo de delete
execute block
as
begin
/*Delete simples em nuvem referenciando o ID deletado localmente*/
execute statement
('delete from feriado f where f.id_local = 123')
on external 'mqfssp.jelastic.saveincloud.net/11905:exemplo'
as user 'TESTE' password 'teste';
end
11. Firebird na Nuvem - Exemplo de select
execute block
returns (data date)
as
begin
/*Select retornando as datas cadastradas na NUVEM e imprimindo o resultado na tela*/
for execute statement
'select f.data from feriado f'
on external 'mqfssp.jelastic.saveincloud.net/11905:exemplo'
as user 'TESTE' password 'teste'
into data
do suspend;
end
12. Cloud Firebird na SaveinCloud
★ Latência
★ Banda de internet
★ Respostas rápidas IOPs - Disco
★ Compartilhado x Exclusivo
★ Versões
★ Proteção usando Proxy e uso de Firewall
13. Cloud Firebird na SaveinCloud
★ Dimensionamento custos
★ Uso de escalabilidade vertical
★ Compartilhar o servidor ?