Finalizar todas as sessões ativas de um banco PostgreSQL

Para fazer um DROP DATABASE é necessário “matar” as conexões ativas, existe várias maneiras de fazer isso, porém a mais simples é você usar a a função pg_terminate_backend(int).

Você pode obter todas as seções ativas, rodando pg_stat_activity.

A forma mais simples de matar todas as sessões é executando essa query (claro que você não pode estar conectado na mesma base de dados).

select pg_terminate_backend(procpid)
from pg_stat_activity
where datname = ‘nome_do_database’

Fonte: http://stackoverflow.com/

Resolvendo o problema Too many connections do MySQL

O MySQL por default vem configurado para aceitar 100 conexões simultâneas e isso é mais que suficiente para a grande maioria das situações. Porém é comum receber periodicamente o erro “Too many connections”.

Uma solução paliativa é aumentar o número de conexões do MySQL, dessa forma:

Fara MySQL 3.x:
# vi /etc/my.cnf
set-variable = max_connections = 250

Para MySQL 4.x and 5.x:
# vi /etc/my.cnf
max_connections = 250

Reiniciar o MySQL. É possível checar o número de conexões configuradas dessa forma:

echo “show variables like ‘max_connections’;” | mysql

Agora, este problema normalmente ocorre porque o PHP esta persistindo as conexões, ou seja, cada vez que chama-se uma página com conexão com o banco, é adicionado mais um pool de conexão. Para resolver de vez, não é necessário aumentar o número de conexões do MySQL, conforme mostrado acima, pois o problema esta na configuração do PHP, tem que desativar a persistência das conexões, editando o arquivo php.ini, e colocando o allow_persistent em OFF.

[MySQL]
; Allow or prevent persistent links.
mysql.allow_persistent = Off

E é tudo, reinicie o Apache com /etc/init.d/httpd restart.

Aplicações Open Source para transformar a educação

Enquanto alguns educadores rapidamente compreendem o potencial de software de código aberto, muitos outros têm hesitado em se afastar da zona confortável de aplicações comerciais.

No entanto, isso está mudando. Mais professores e instituições estão agora participando de organizações como Schoolforge, a Fundação Open Source para Educação e Escolas Open Source. Esses educadores estão começando a ver que a filosofia open source tem o poder de transformar a educação em vários aspectos.

Em primeiro lugar, as escolas podem usar aplicativos de código aberto para substituir o software comercial caro e liberar recursos para outros fins. Por exemplo, openSIS executa as mesmas tarefas que programas de administração escolar de código fechado (agendamento, notas, boletins, atendimento, etc), reduzindo o custo total de propriedade em até 75% por cento.

Em segundo lugar, aplicativos de código aberto estão mudando a maneiras de alunos e professores interagirem e algumas instituições, nomeadamente o MIT e a Universidade de Berkeley, ter utilizado o conceito de ensino a distância open source.  Como membros do Consórcio OpenCourseWare , eles disponibilizam o conteúdo de alguns cursos gratuitamente, de modo que qualquer pessoa no mundo pode se beneficiar de seus conhecimentos.

Finalmente, o software de código aberto dá aos educadores mais opções do que nunca. Hoje, os instrutores têm dezenas, se não centenas, de opções de aplicativos de código livre e aberto que os ajudam a apresentar lições sobre tudo, desde aprender o ABC até sobre a modelagem das interações complexas de moléculas durante os processos bioquímicos.

Confira no link abaixo uma pequena amostra das aplicações de código aberto disponíveis para ajudar os educadores a ensinar e inspirar seus alunos.

Link: http://www.datamation.com/osrc/article.php/3831751/55-Open-Source-Apps-Transforming-Education.htm

Como montar um servidor gratuito por um ano na Amazon Web Services

E-book  muito bom e em português, com um passo a passo sobre como criar um servidor na Amazon Web Services do início ao fim.

Esse livro te ensinará o passo a passo para a utilização de diversos serviços e produtos da Amazon Web Services, com o intuito final de você ter um servidor completo e funcionando gratuitamente por um ano inteiro e posteriormente com um preço muito baixo na AWS!

Links para downloads:

Maiores informações:

NAT 1:1 ou Proxy Reverso, qual a melhor alternativa?

Genericamente falando, tanto o NAT 1:1 como o Proxy Reverso tem por finalidade ligar um endereço interno específico para um endereço externo.

NAT 1:1 (one-to-one)
Se desejarmos que uma máquina da rede interna possa ser vista de fora da rede, ou seja, possa receber conexões e ter servidores instalados, podemos usar o NAT 1:1. Esse esquema de NAT é bem simples e consiste em criarmos manualmente uma tabela no roteador mapeando o IP privado para um IP público. Esse tipo de NAT também é chamado de NAT estático, uma vez que as informações na tabela permanecem válidas indefinidamente após serem criadas.

Como existe permanentemente uma entrada na Tabela NAT associando o IP 10.1.1.2 ao IP 200.3.3.3, tanto a máquina A pode iniciar a comunicação com alguma máquina da Internet como alguma máquina da Internet é que pode iniciar uma comunicação com a máquina A. A figura acima mostra o caso onde a máquina A enviou um pacote para uma máquina na Internet que possuía o IP 60.6.6.6. Quando esse pacote passa pelo roteador, o IP de origem será trocado para o IP 200.3.3.3. Do mesmo modo, como pode ser visto na próxima figura, sempre que o roteador receber um pacote da Internet para o IP 200.3.3.3 o IP de destino será trocado para 10.1.1.2.

Read More

Como remover placas de redes no CentOS (Vmware ESXi)

No procedimento de clonagem de uma máquina virtual pode acontecer da eth0 não iniciar, este erro foi comentado aqui.

Pois bem, existe ainda o problema de NICs diferentes, ou seja, suponhamos que na máquina de origem havia 2 placas de rede (eth0 e eth1) e na máquina clone, você só irá utilizar uma única placa (eth0).

Ao realizar o clone, normalmente nenhuma das interfaces de rede é levantada, vejamos como corrigir isso.

1. Utilizando o VSphere Cliente, edite as configurações da máquina virtual e remova todas os Networks Adapters e adicione um novo VMXNET 3 ou E1000.

2. Inicialize a máquina.

3. Estando logado na máquina virtual pelo VCenter Console, execute os seguintes comandos:

# rm -rf /etc/udev/rules.d/70-persistent-net.rules
# rm -rf /etc/sysconfig/networking/devices/ifcfg-eth*
# rm -rf /etc/sysconfig/networking/profiles/default/ifcfg-eth*
# rm -rf /etc/sysconfig/network-scripts/ifcfg-eth*

4. Renicie a máquina. Mesmo que você tente adicionar uma interface de rede neste momento utilizando o comando system-config-network não será possível, pois não será detectado uma interface de rede.

5. Simplesmente crie o arquivo ifcfg-eth0, com o seguinte conteúdo:

# vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
NETWORK=192.168.0.0
IPADDR=192.168.0.199
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
DNS1=192.168.0.2

6. Reinicie novamente a máquina, e ao retornar a eth0 estará ativa e nem sinal da NICs legadas. Você pode inclusive agora usar o setup do CentOS para configurar a rede, normalmente.

Referência:

MySQL ORDER BY RAND() – Qual a melhor forma de fazer?

Essa é uma dúvida que volta e meia aparece nos fóruns, como obter linhas aleatórias em uma query. Normalmente o que vemos é algo assim:

SELECT * FROM tabela ORDER BY rand();

Contudo, o que muitos não sabem é que uma query dessa forma causa um grande impacto na performance do SGBD.

A maneira correta para ordenar os resultados por um número aleatório é:

SELECT *, RAND() as rand FROM tabela ORDER BY rand;

Por quê? Bem, a resposta é realmente muito simples, ORDER BY RAND () faz com que a ordem seja recalculada a cada vez que é buscado uma nova linha pois cada linha RAND () retorna um valor diferente.

Quando usado na seleção o valor é calculado apenas uma vez por linha e os resultados só são ordenados.

Inspiração:
http://www.mysqlperformanceblog.com/2006/09/01/order-by-limit-performance-optimization/

Gerenciar Máquina Virtual no VMware ESXi via console (SSH)

Basicamente para controlar as VMs utiliza-se o comando vim-cmd vmsvc

Primeira coisa, você deve saber o ID da máquina virtual que você deseja manipular:

Listar máquinas registradas:
# vim-cmd vmsvc/getallvms

Visualizar o sumário da máquina:
# vim-cmd vmsvc/get.summary [ID]

Para ligar uma VM:
# vim-cmd vmsvc/power.on [ID]

Para desligar uma VM: 
# vim-cmd vmsvc/power.off [ID]

Para suspender uma VM
# vim-cmd vmsvc/power.suspend [ID]

Existem muitos outros…

Fontes:
http://blogs.vmware.com/vsphere/2011/03/ops-changes-part-6-quick-troubleshooting-tips.html
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1038043

Resolvendo problema de conexão entre servidores ESXi para transferência de VMs

Vamos ao problema:

1. Você tem habilitado o acesso SSH, e a conexão entre um cliente desktop (putty, ssh secure shell…) e o servidor funciona normalmente. OK

2. Estando conectado ao servidor ESXI você resolve transferir uma VM para outro servidor ESXI utilizando SCP, algo como isto:

# cd /vmfs/volumes/datastore1

# scp -r vmxpto root@192.168.100.20:/vmfs/volumes/datastore1

porém a conexão não é estabelecida e o único erro exibido é:

# ssh: connect to host 192.168.100.20 port 22: Connection timed out

O problema é o perfil de segurança em cada um dos servidores ESXi.

Para resolver:

1. Conecte via cliente vSphere

2. Clica no servidor (lateral esquerda), em seguida vá até aba Configuration e clique em Security Profile no grupo Software e depois em Properties do Firewall.

3. Então, você só precisa marcar o SSH Client em Secure Shell. Isto irá abrir a comunicação SSH entre os servidores ESXi. Você pode restringir as configurações, acessando as configurações de firewall para qualquer um dos serviços.

Você também pode habilitar via linha de comando, diretamente do console dos servidores, utilizando o esxcli:

Para listar a configuração atual:
# esxcli network firewall ruleset list

Para habilitar o SSH Client e permitir a cópia usando SSH:
# esxcli network firewall ruleset set –ruleset-id sshClient –enabled yes

Se você estiver utilizando o ESXI 5.1 você faz assim:
# esxcli network firewall ruleset set -e true -r sshClient

Para atualizar a configuração:
# esxcli network firewall refresh

Fontes:

Renomeando fisicamente uma máquina virtual no VMware ESXi 5

Howto: Renomeando fisicamente uma máquina virtual no VMware ESXi/5x.

Ao migrar uma máquina virtual entre servidores de VMs é possível pelo vSphere renomear o nome da máquina no histórico de VMs, mas fisicamente o disco (vmdk) e outros arquivo permanecem com o nome da máquina original.

Para renomear todos os arquivos fisicamente, siga esses passos. Lembrando que a máquina virtual deve estar desligada.

1. Logue via SSH no seu servidor de VM-ESXi

# cd /vmfs/volumes/datastore1

2: Renomeie a pasta:
# mv maquina_velha maquina_nova

3: Entre na pasta renomeada
# cd maquina_nova

4: Renomeie todos os arquivos manualmente:
# mv maquina_velha.vmx maquina_nova.vmx
# mv maquina_velha.vmsd maquina_nova.vmsd
# mv maquina_velha.nvram maquina_nova.nvram
# mv maquina_velha.vmdk maquina_nova.vmdk
# mv maquina_velha-flat.vmdk maquina_nova-flat.vmdk
# mv maquina_velha.vmxf maquina_nova.vmxf

Uma observação, o arquivo .vmsd estava vazio por não ter sido feito nenhum snapshot da máquina.

5: Edite o conteúdo do arquivo .vmx, usando o vi. No exemplo abaixo usei o search and replace, bastando digitar :%s

# vi maquina_nova.vmx
:%s/maquina_velha/maquina_nova/g

6: Edite o arquivo .vmdk

# vi maquina_nova.vmdk
:%s/maquina_velha/maquina_nova/g

7: Se a máquina estiver registrada no histórico de VMs a mesma deve ser removida do registro.

# vim-cmd vmsvc/getallvms
# vim-cmd vmsvc/unregister 900

No caso o 900 ai é o Vmid, mas se a máquina ainda não tiver sido registrada pode-se pular este passo.

8: Registrando a nova máquina
# vim-cmd solo/registervm /vmfs/volumes/datastore1/maquina_nova/maquina_nova.vmx

E só. Agora é so editar a máquina_nova e definir uma interface de rede e inicializa-la.