Instalando e otimizando o MySQL para alto tráfego de dados

Instalando o MySQL

Realize o download e descompactação do MySQL com os comandos abaixo

1
2
3
wget http://cdn.mysql.com/archives/mysql-5.5/mysql-5.5.47-linux2.6-x86_64.tar.gz
tar -zxvf mysql-5.5.47-linux2.6-x86_64.tar.gz -C /usr/local
ln -sf /usr/local/mysql-5.5.47-linux2.6-x86_64 /usr/local/mysql

Copie o script de inicialização do MySQL

1
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

Edite o arquivo /etc/init.d/mysql alterando as linhas conforme exemplo abaixo

1
2
basedir=/usr/local/mysql
datadir=/databases/mysql/bases

Crie o arquivo /databases/mysql/my.cnf  com o conteúdo abaixo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
## Helvio Junior – my.cnf template
### my.cnf
[client]
port            = 3306
socket          = /databases/mysql/mysql.sock
[mysqld_safe]
open_files_limit = 1024000
basedir        = /usr/local/mysql
timezone        = America/Sao_Paulo
socket          = /databases/mysql/mysql.sock
nice            = 0
# Diretório de logs e consultas lentas
log-error       = /databases/mysql/logs/error.log
pid-file        = /databases/mysql/bases/mysql.pid
[mysqld]
open_files_limit = 1024000
general_log     = 0
log_warnings    = 1
general_log_file = /databases/mysql/logs/mysqld.log
log-error       = /databases/mysql/logs/error.log
log-slow-admin-statements = 0
#Consultas lentas
long_query_time         = 5
log-slow-queries        = /databases/mysql/logs/mysql-slow.log
log-queries-not-using-indexes = 0
user            = mysql
pid-file        = /databases/mysql/bases/mysql.pid
socket          = /databases/mysql/mysql.socket
port            = 3306
basedir        = /usr/local/mysql
datadir         = /databases/mysql/bases/
tmpdir          = /databases/mysql/tmpdir
lc-messages-dir = /usr/local/mysql/share/
# Performance Analsys
performance_schema = off
# Desativa o LOAD FILE
local-infile = 0
old_passwords=0
# 0x = MASTER
# 1x = Slave Level 1
# 2x = Slave em baixo de Slave
server-id=01
# Master Setup (Caso tenha replicação)
#binlog_format = ROW
#log-bin        = /databases/mysql/binlog/mysql-bin
#log_slave_updates = 1
#log_bin_trust_function_creators = 1
#expire_logs_days = 1
# Configuracoes Diversas
#Compatibilidade
sql_mode = ''
skip-name-resolve
max_connections = 10000
query_cache_size = 80M
query_cache_min_res_unit = 2K
query_cache_type = 1
sort_buffer_size = 2M
read_buffer_size = 128k
join_buffer_size = 5M
myisam_sort_buffer_size = 128M
bulk_insert_buffer_size = 128M
max_allowed_packet = 1G
thread_cache_size = 100
table_cache = 512
# Tabelas temporárias
# Configura o tamanho maximo para tabela do tipo MEMORY
max_heap_table_size = 1G
# Configura o tamanho maximo antes de converter para MyISAM
tmp_table_size = 1G
# Federated Store Engine
federated
# MyISAM Store Engine
# depreciado...
key_buffer = 256M
myisam_repair_threads = 1
myisam_recover = FORCE
# InnoDB (Default)
# Depreciado na 5.6 - Armazena dicionario de dados na ram
innodb_additional_mem_pool_size = 16M
# BUFFER POOL
#
# Alterar este valor para +- 80 da memória do servidor
innodb_buffer_pool_size = 1G
# Segregacao do buffer_pool - Performance para algoritmo LRU (qtd cpu)
innodb_buffer_pool_instance = 6
# Redo Log
innodb_log_buffer_size = 1G
innodb_log_group_home_dir = /databases/mysql/innolog
innodb_log_files_in_group = 7
innodb_log_file_size = 512M
# Manipulacao de arquivos
innodb_open_files = 1024000
innodb_file_per_table = 1
innodb_data_file_path = ibdata1:1G:autoextend
innodb_data_home_dir=/databases/mysql/bases/
# O_DIRECT para fazer by-pass (O EBS controla)
innodb_flush_method = O_DIRECT
innodb_file_format = BARRACUDA
# QTD de IOPS que esta disponível para o datadir
innodb_io_capacity = 1000
# Controle Transacional
transaction-isolation=READ-COMMITTED
innodb_support_xa = 0
# Qtd de segundos antes de um Lock wait timeout exceeded
innodb_lock_wait_timeout = 120

Altere o parâmetro innodb_buffer_pool_size deste arquivo recém criado para um valor de +- 80% da memória do ser servidor.

Crie um link simbólico do arquivo de configuração para o diretório /etc

1
ln -s /databases/mysql/my.cnf /etc/my.cnf

Crie as bases de dados iniciais do MySQL

1
2
cd /usr/local/mysql
scripts/mysql_install_db --datadir=/databases/mysql/bases/ --basedir=/usr/local/mysql

Configure para que o MySQL inicie automaticamente na inicialização do sistema operacional e inicie o serviço

1
2
update-rc.d -f mysql defaults
service mysql start

Por questões de segurança, altere a senha padrão do usuário root do banco de dados

1
/usr/local/mysql/bin/mysqladmin -u root password 'new-password'

Pronto, o seu servidor de MySQL está instalado e pronto para uso.

Caso deseje outras otimizações não citadas neste post segue uma sugestão se referência para consulta: http://blog.neweb.co/pt/how-to-optimize-a-mysql-server/

 

http://www.helviojunior.com.br/it/mysql/instalando-e-otimizando-mysql-para-alto-trafego-de-dados/

Deixe um comentário