BEM VINDO AO BLOG DO MARCOS CARRARO CRIADOR DO "CARRARO DASHBOARD". MUITO MAIS QUE UM SIMPLES BLOG.
Mostrando postagens com marcador banco de dados. Mostrar todas as postagens
Mostrando postagens com marcador banco de dados. Mostrar todas as postagens

segunda-feira, 25 de agosto de 2014

Postgresql 9.2 Log ---> AVISO: pgstat wait timeout + Alguns dicas de performance do pg

Buenas,

Tenho um BI aqui na empresa o qual sempre dá alguns problemas insanos com o pg, porém hoje fiquei na cola dos caras, até pegar o momento exato que ocorre os problemas.

No pg ele lança a seguinte informação nos logs "AVISO:  pgstat wait timeout", como se ele não estivesse dando conta do recado.

Acompanhando IO estava tranquilo "iostat -x 1" porém ele continuava a reclamar.

Pesquisando aqui ali em questão de 15 minutos já tinha encontrado várias pedras para tentar resolver o problema.

Dentre elas a principal de todas "stats_temp_directory" onde o pq salva algumas estatísticas, onde o ideal seria carregar isso na memoria, e não em disco.

Então para jogar estas estatísticas na ram basta seguir estes passos.

# Diretório
mkdir /var/lib/pgsql_stats_tmp

# Permissão para a pasta geral
chmod 777 /var/lib/pgsql_stats_tmp

# Permissão "sticky-bit", onde todos podem ler, escrever e executar, porém so podem fazer isso com seus arquivos.
chmod +t /var/lib/pgsql_stats_tmp

# No fstab vamos montar o diretório e indicar o quanto de memoria ram ele vai ocupar, nesta caso 2G já esta ótimo.
tmpfs /var/lib/pgsql_stats_tmp tmpfs size=2G,uid=postgres,gid=postgres 0 0
# Agora é so reiniciar o serviço e correr para o abraço
/etc/init.d/postgresql-9.2 restart
# FSTAB dos diretórios
/dev/xvda1 / ext4 defaults,noatime,nodiratime,data=writeback,commit=100,nobh 1 1
/dev/xvda3 /db_sadig xfs defaults,noatime,nodiratime,allocsize=512m,barrier=0,inode64,logbufs=8 1 2

# Limites /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535

# Sysctl.conf
vm.swappiness = 0 # não usa o swap
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 4194304
net.ipv4.tcp_rmem = 4096 262144 4194304
net.ipv4.tcp_wmem = 4096 262144 4194304
vm.dirty_background_ratio = 50
vm.dirty_ratio = 80
fs.file-max = 6815744
fs.aio-max-nr = 104857600
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_tw_reuse = 0
net.core.netdev_max_backlog = 65536
net.ipv4.tcp_rfc1337 = 1
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_no_metrics_save = 1
net.ipv4.tcp_moderate_rcvbuf = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.conf.all.arp_notify = 1
# Aqui é feito calculos
# http://www.postgresql.org/docs/9.0/static/kernel-resources.html
# http://helkmut.blogspot.com.br/2011/07/postgresql-tunando-seu-shmmax-e-shmall.html
# http://michael.otacoo.com/postgresql-2/take-care-of-kernel-memory-limitation-for-postgresql-shared-buffers/
# http://serverfault.com/questions/341680/postgresql-performance-adjusting-shmmax-and-shmall
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296

# postgresql.conf
#
# ATENCAÇÃO
# Não sou DBA, então pode ter parâmetros fora do normal, que na visão de um DBA estão errados,
# ou deveriam, ter outros valores. Então se você é DBA ou percebeu algum erro comunique-me.
#
#
listen_addresses = '*' # what IP address(es) to listen on;
max_connections = 300 # (change requires restart)
shared_buffers = 2048MB # min 128kB
# (change requires restart)
temp_buffers = 512MB # min 800kB
max_prepared_transactions = 300 # zero disables the feature
# (change requires restart)
work_mem = 256MB # min 64kB
maintenance_work_mem = 512MB # min 1MB
synchronous_commit = on # synchronization level;
# off, local, remote_write, or on
checkpoint_segments = 32 # in logfile segments, min 1, 16MB each
checkpoint_timeout = 1h # range 30s-1h
checkpoint_completion_target = 0.9 # checkpoint target duration, 0.0 - 1.0
random_page_cost = 6.0 # same scale as above
effective_cache_size = 2048MB
log_destination = 'stderr' # Valid values are combinations of
logging_collector = on # Enable capturing of stderr and csvlog
log_directory = 'pg_log' # directory where log files are written,
# can be absolute or relative to PGDATA
log_filename = 'postgresql-%a.log' # log file name pattern,
# can include strftime() escapes
log_truncate_on_rotation = on # If on, an existing log file with the
# in all cases.
log_rotation_age = 1d # Automatic rotation of logfiles will
# happen after that time. 0 disables.
log_rotation_size = 0 # Automatic rotation of logfiles will
# happen after that much log output.
#log_lock_waits = off # log lock waits >= deadlock_timeout
log_statement = 'all' # none, ddl, mod, all
#log_temp_files = -1 # log temporary files equal or larger
# than the specified size in kilobytes;
# -1 disables, 0 logs all temp files
log_timezone = 'Brazil/East'
log_checkpoints = on
stats_temp_directory = '/var/lib/pgsql_stats_tmp'
datestyle = 'iso, dmy'
#intervalstyle = 'postgres'
timezone = 'Brazil/East'
# These settings are initialized by initdb, but they can be changed.
lc_messages = 'pt_BR.ISO88591' # locale for system error message
# strings
lc_monetary = 'pt_BR.ISO88591' # locale for monetary formatting
lc_numeric = 'pt_BR.ISO88591' # locale for number formatting
lc_time = 'pt_BR.ISO88591'
default_text_search_config = 'pg_catalog.english'
default_with_oids = off
escape_string_warning = on
standard_conforming_strings = on
Read More

terça-feira, 22 de julho de 2014

Mysql - Tabela para armazenar imagens e grandes textos

Bueno, se você esta montando algum sistema de notícias, que o mesmo vai ter imagens, e muito texto, e não deseja hospedar as imagens, então suba todo no banco. 

Para o editor estou utilizando o http://hackerwins.github.io/summernote/ junto do http://getbootstrap.com/

Então lembre-se que a coluna que vai armazenar o conteúdo, deve ter estes tipos, avalie o tamanho que podera ter e utilize a de acordo.

TINYBLOB, TINYTEXT                                 (255 Bytes) 
    BLOB, TEXT                                                    (64 Kilobytes) 
       MEDIUMBLOB, MEDIUMTEXT                 (16 Megabytes) 
  LONGBLOB, LONGTEXT                              (4 Gigabytes)

Forte quebra costelas,
Marcos Carraro.
Read More

segunda-feira, 31 de março de 2014

Xenserver + Storage + Linux + Aumentar espaço partição

Buenas,

Mais um daqueles dias, meu BI acusando falta de espaço ok, então lá vamos nos aumentar. Por sorte eu já tenho experiencia com o linux e espaço em disco, então sempre faço LVM ou duas partições.

Neste caso montei duas partições, pelo motivo dele ser um Banco, e quase todas as documentações falam que LVM é menos performático do que uma partição normal.

Primeiro de tudo, fiz um BKP do postgre, como a instalação do DB esta separada vide link ( http://marcoscarraro.blogspot.com.br/2013/04/instalando-postgresql-92-alterar-local.html ), foi mais fácil.

Feito o BKP é hora de baixar a VM, e no xenserver desconectar o DISCO, para uma maior segurança, selecione o disco, e clique em "Detach".


Feito, isso conecte no HP CMC, gerenciador do Storage, então vamos fazer o resize do disco.

Aumente o tamanho necessário, clique em OK e espere.

Após aumentar o espaço em disco, no xenserver aumente o tamanho do disco, clicando em propriedades, conforme exemplo.


Clique em OK, e pronto, reatach com a máquine, e mande iniciar a VM. Ao iniciar a VM, na linha de comando digitar '# df -h' vai ver que nada mudou para isso, '# fdisk -l', vai perceber que o disco já pegou o tamanho novo.

No linux.

Obs: xvda é o meu disco, o seu pode ser diferente

# umount /dev/xvda3

É necessário desmontar a partição para poder prosseguir.

# fdisk /dev/xvda
p -> mostra todos discos, vamos deletar a partição 3 que é a que vai ser aumentada
d -> comando para apagar
    3 -> numero da partição
w -> grava alterações

# reboot

Ao iniciar a máquina devemos dar o formato à  partição.

# make -t xfs -i size=1024 /dev/xvda3

Aguarde alguns instantes....

# mount -a

# df -h

Vai mostrar o tamanho novo da partição, pronto, so restaurar o bkp, iniciar o DB e aproveitar.

Abraços
Marcos Carraro.
Read More

segunda-feira, 25 de novembro de 2013

Oracle 11g Express + SQL Developer no Windows X64.

Buenas,

Para download do Oracle Express : http://www.oracle.com/technetwork/products/express-edition/downloads/index.html

para Download do SQL Developer : http://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/index.html

Ao instalar o Oracle Express, ele vai retornar um erro que não foi possível acessar, pois ele não existe. Para resolver este  problema é batata!

O erro apresentando é este ali de cima.

para isto, entre no regedit.

Vá neste destino.


Altera a chave de numero 1. Nela insira o caminho da tela acima do erro, porém repare que no meu caso ficou c:\users\Marcos onde marcos é o nome da conta de usuário do meu notebook.


Feito isto, a instalação vai proceder normalmente.

Ao tentar abrir o atalho conceitos básicos do oracle, vai ter problemas.. como este.


Calma, mais um que vai ser batata de resolver.

Apenas altera o caminho...
Acesse: C:\oraclexe\app\oracle\product\11.2.0\server

Onde vai ter um atalho chamado "Get_Started" um atalho para um site, botão direito, e altera a url para:

http://127.0.0.1:8080/apex/f?p=4950

Aqui já esta tudo rodando perfeito...



Bora Instalar o SQL Developer.


Este é barabada, baixa a versão com JDK incluso, caso baixar não incluso, primeiro instala o JDK x32, e por ultimo inicie o sql-developer.

Forte quebra costelas,
marcos carraro.
Read More

quarta-feira, 30 de outubro de 2013

Erro MariaDB/Mysql com MysqlWorkbench mysql.proc

Buenas,

Se você esta tendo problemas ao sincronizar o modelo que esta no workbench com o DB, o mesmo retorna o seguinte erro.

"Exception: Cannot load from mysql.proc. The table is probably corruptedFetching schema list"

Para resolver é simples.

No linux entre com o comando.

# mysql_upgrade -u root -p

Feito isso é so correr para o abraço.

abraços!
marcos carraro
Read More

sexta-feira, 25 de outubro de 2013

MariaDB no Centos 6.4 x64

Buenas,

Que tal migrar para MariaDB???

Bora lá.

# cd /etc/yum.repos.d/
# vim MariaDB.repo

Cole o seguinte conteúdo.

# MariaDB 10.0 CentOS repository list - created 2013-10-25 17:24 UTC
# http://mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.0/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

# yum clean all
# yum update

# yum remove mysql mysql-server

# yum install MariaDB-server MariaDB-client MariaDB-cassandra-engine

Pergunta: Mas Marcos eu não uso centos!
Resposta: Meu caro amigo(a) então.
https://downloads.mariadb.org/mariadb/repositories/


Abraços
Marcos Carraro.


Read More

quinta-feira, 10 de outubro de 2013

Backup Postgresql Remotamente

Buenas,

Hoje lembrei-me que deveria fazer backup da pequena base do BI que esta no postgresql... então nada melhor do que por a mão na massa.

Meu servidor de backup é um ML110 onde já tem várias rotinas de Backup, sim eu não tenho um servidor de backup, não utilizo nenhum software de backup, e muito bem tenho meus scripts que até hoje nunca me deixaram na mão, com isso eu tenho uma maleabilidade dos backups tudo na mão, diferente dos programas que já me deixaram na mão, talvez por não saber utilizar ou, bueno vamos ao que interessa.

Pacotes necessários
Centos 6.4 x64

Download do repostitorio do postgresql
# rpm -Uvh http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm
# yum update

Vamos apenas instalar os binários básicos para a manutenção do banco remotamente.
#  yum install postgresql92 postgresql92-libs

Então já esta tudo instalado, não vou explicar como fazer o postgresql liberar o acesso remoto!

Comando para executar o bkp

# pg_dump -C -h IP_DO_SERVIDOR -U USUARIO_DO_DB DB_NAME > bkp.sql

Bueno, com isso já é possível executar o bkp do seu PostgreSQL...

abraços



Read More

Posts que a turma mais esta lendo...

Posts que a turma mais esta lendo...

Marcos Carraro