banco de dados de servidor de cache Memcache
O que é Memcache?
memcached é um alto desempenho, servidores de cache de memória distribuída, a fim de melhorar o desempenho, dados em memcached são armazenados na memória, mas a reinicialização do sistema operacional irá resultar na perda de todos os dados no cache
Como funciona: os dados são armazenados em cache de memória built-in espaço de armazenamento de memória
Por Memcache?
MySQL: o banco de dados, os dados no disco ler escrever relativamente lento
Memcached: na memória de banco de dados, ler e gravar dados mais rápido, mas fácil de dados perder
algoritmo de memória memcached
Memcached usando o mecanismo de afectação laje para alocar e gerir a memória, o qual de acordo com um tamanho pré-determinado, a memória atribuída é dividido em um comprimento de bloco de memória específicas, em seguida, os mesmos blocos de memória tamanho são divididos em grupos , no momento de armazenamento de dados, de acordo com o tamanho da tecla combinando laje do tamanho da laje para encontrar a loja mais próxima, o método pode efetivamente resolver o problema de fragmentação de memória, mas pode haver um desperdício de espaço
Memcache arquitetura comum
memcache construção
Nota: O ambiente de compilação está configurado em CentOS7, porque a versão do memcache é compatível com bastante rígida, CentOS6 construção é fácil erro
servidor memcache: 192.168.0.102 (libvent instalação, memcached, MariaDB e mysql)
um servidor web (memcahe Cliente API): 192.168.0.101 (nginx instalação, php, libmemcached eo memcached)
servidor memcache configurar (192.168.0.102)
1. compilar e instalar libevent
tar zxf libevent-1.4.14b-stable.tar.gz
cd libevent-1.4.14b-estável
./configure --prefix = / usr / local / libevent
make && make install
2. Instale memcached
tar zxf memcached-1.4.31.tar.gz
cd memcached-1.4.31
./configure --prefix = / usr / local / memcached with-libevent = / usr / local / libevent /
make && makeinstall
3. Comando otimização de rotas
ln -s / usr / local / memcached / bin / * / usr / / bin local /
4. Iniciar serviços
memcached -d -m 64 -u raiz -l 192.168.0.102 -p 11211 -c 1024 -P /usr/local/memcached/memcached.pid
-d: no daemon daemon é executado serviços Memcached;
-m: 64MB de memória alocada para o Memcached (ajustável);
u: Especifica a conta de usuário que executa;
-p Especifica o número da porta TCP não está definido como o padrão 11211;
-l: especifica os endereços IP de ligação, todos os quais são permitidas por padrão, existem riscos de segurança, se definido como 127.0.0.1 você só pode acessar a máquina;
-U: UDP porta de escuta (padrão é off 11.211,0);
-P: O número PID gravados em um arquivo, assim você pode fazer termina processo rápido para trás, necessidade de ser usado com o -d
-c: O número máximo de conexões simultâneas, padrão 1024
teste de conexão remota 5.telnet
telnet 192.168.0.102 11211
Versão: Versão Ver
operações de banco de dados Memcache
Adicionando dados: Bandeira chave set expirar bytes
chave: a estrutura de chave da chave do valor-chave, um valor de pesquisa cache.
bandeiras: parâmetros inteiros podem incluir um cliente chave para usá-lo para armazenar informações adicionais sobre os pares chave-valor.
EXPTIME: o período de tempo é armazenado no par de chaves de cache (em segundos, indica sempre 0)
bytes: o número de bytes armazenados no buffer
Consulta de dados: get keyname
atualizar dados: chave set (dados pode não existir), os dados de substituição (os dados devem estar presentes)
Excluir os dados: tecla delete
Verificar atualizações: recebe keyname
Função obtém comando semelhante ao comando básico get. A diferença entre os dois comandos que informações de retorno fica um pouco mais: valor inteiro de 64 bits é muito parecido com o valor pares / identificador "versão" nome
gets keyname
VALUE keyname 0 8 3
asdfgh12
END
cas keyname 0 0 4 3
1234
STORED
Acrescentar dados: chave de acréscimo (as teclas adicionais originais), chave prepend (tecla de adição prepro)
Limpar dados: flush_all
estatísticas de consulta: Estatísticas (comando retorna informação estatística (ID do processo), o número da versão, o número de conexões, tais como PID, etc.)
pid: processo do servidor memcache ID
Uptime: O número de segundos que o servidor já está em execução
tempo: atual servidor Unix timestamp
versão: Versão memcache
pointer_size: OS tamanho do ponteiro
rusage_user: processo cumulativo tempo do usuário
rusage_system: o tempo de processo de sistema acumulado
curr_connections: O número atual de conexões
total_connections: Memcached desde a correr número total de conexões
connection_structures: Memcached distribuição estrutura de conexão número
cmd_get: obter o número de pedidos de comando
cmd_set: comando set o número de pedidos
cmd_flush: número de comando onda de pedidos
get_hits: obter Shots comando bater
get_misses: obter Misses comando
delete_misses: acidentes comando delete
delete_hits: Tiros comando delete bateu
incr_misses: senhoritas comando incr
incr_hits: Tiros comando incr bateu
decr_misses: senhoritas comando decr
decr_hits: Tiros comando decr atingidas
cas_misses: senhoritas comando cas
cas_hits: Tiros comando cas bateu
cas_badval: usar o número de toalhetes
auth_cmds: o número de processamento de comandos de autenticação
auth_errors: o número de autenticação falhou
bytes_read: número total de bytes ler
bytes_written: Número total de bytes enviados
limit_maxbytes: tamanho da memória alocada (bytes)
accepting_conns: servidor de conexão máxima é atingida (0/1 )
listen_disabled_num: o número de ouvintes de falha
tópicos: número atual de linhas
conn_yields: junte operações desistir do número
de bytes: o número atual de bytes armazenados ocupados
curr_items: o número total atual de dados armazenados no
número total de armazenamento de dados desde o início: TOTAL_ITEMS
-se expulsões: o número de objetos de libertação LRU
o número de entrada de dados expirada para armazenar novos dados: recuperado
lajes estatísticas memcached (comando laje para exibir informações diversas, incluindo o tamanho do bloco, o número, condição, etc)
Adicionado: scripts de inicialização de serviço (lembre-se de adicionar permissões executáveis x)
#!/bin/bash
qd=`/usr/local/memcached/bin/memcached -d -m 128 -u root`
start()
{
$qd
}
stop()
{
killall memcached
}
ACTION=$1
case $ACTION in
start)
start;;
stop)
stop;;
restart)
stop
sleep 2
start;;
*)
echo "Usage:{start|stop|restart}"
esa
servidor web (memcahe API Cliente 192.168.0.101)
1. Instale nginx
Dependências instalados, crie um grupo de usuários
yum -y install pcre pcre-devel OpenSSL openssl-devel zlib zlib-devel
groupadd nginx
useradd -g nginx -s / sbin / nologin nginx
Compilar e instalar o nginx
tar zxf nginx-1.12.0.tar.gz
cd nginx-1.12.0
./configure --prefix = / usr / local / nginx --sem-http_memcached_module user = nginx --group = nginx with-http_stub_status_module with-http_ssl_module with-http_gzip_static_module
make && make install
Modificar o proprietário do diretório
chown -R nginx: nginx / usr / local / nginx
2. Instale php
Montagem várias dependências
yum install gcc -y gcc-c ++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libpng libpng-devel libxml2 libxml2-devel zlib zlib-devel xml2 xml2-devel OpenSSL openssl-devel glibc glibc-devel glib2 bzip2 glib2-devel bzip2-volvimento ncurses ncurses-volvimento onda libcurl-volvimento gdbm-volvimento db4-volvimento libXpm libXpm-volvimento libX11 libX11-volvimento gd-volvimento GMP-volvimento readline-volvimento libxslt-volvimento relaxarem-volvimento xmlrpc-c-c-xmlrpc mento
Instalar mcrypt (php dentro de extensões de suporte de criptografia importante)
necessidade libmcrypt para instalar antes de instalar o pacote e mhash
tar zxf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure
make && make install
tar zxf mhash-0.9.9.9.tar.gz
cd mhash-0.9.9.9
./configure
make && make install
tar zxf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8
./configure
make && make install
compilação de descompressão e instalar php
tar JXF php-5.6.31.tar.bz2
cd php-5.6.31
./configure --prefix = / usr / local / php --with-config-file-path = / usr / local / php / etc --with-mysql = mysqlnd --with-DOP-mysql = mysqlnd --with -mysqli = mysqlnd with-openssl with-freetype-dir with-jpeg-dir with-PNG-dir with-zLIB-dir with-mhash with-mcrypt --com -bz2 enable-zip with-onda with-gettext with-iconv enable-mbstring enable with-xmlrpc enable-fpm enable-sockets enable-SYSVSHM -pdo --enable-libxml --enable-xml --enable-soap --enable-sessão --enable-ctype --enable-ftp --enable-bcmath --enable-shmop --enable-inline-otimização - -enable-opcache --enable-mbregex --enable-PCNTL --enable-cgi --enable-wddx
make && make install
Use php.ini template
php.ini-produção cp /usr/local/php/etc/php.ini
Ln -s /usr/local/php/etc/php.ini /etc/php.ini
Consistência; "= pid executar / php-fpm.pid" comentários, e modificar o funcionamento da conta através de serviços em execução arquivo de conta php-fpm.conf nginx, cancelar
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
Ln -s /usr/local/php/etc/php-fpm.conf /etc/php-fpm.conf
sed -i 's |; = pid executar / php-fpm.pid | = pid executar / php-fpm.pid | g' /usr/local/php/etc/php-fpm.conf
sed -i 's | user = ninguém | user = nginx | g' /usr/local/php/etc/php-fpm.conf
sed -i 's | group = ninguém | group = nginx | g' /usr/local/php/etc/php-fpm.conf
encaixe arquivos de configuração Modificar nginx php
vim /usr/local/nginx/conf/nginx.conf
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
Serviços começar php teste
3. Instale biblioteca libmemcached (biblioteca Libmemcached fornece uma API para interagir com o servidor Memcached)
tar zxf libmemcached-1.0.18.tar.gz
cd libmemcached-1.0.18
./configure --prefix = / usr / local / libmemcached --with-memcached
make && make install
4. Instalação php memcached de expansão montagem (, 3.0.0 ou posterior para php7.0 e acima memcached-php)
tar zxf memcached-2.2.0.tar.gz
cd memcached-2.2.0
/ Usr / local / php / bin / phpize
./configure --enable-memcached --with-php-config = / usr / local / php / bin / php-config --with-libmemcached-dir = / usr / local / libmemcached --disable-memcached-sasl
make && make install
5. Instalação php-memcache
tar zxf memcache-2.2.7.tar.gz
cd memcache-2.2.7
/ Usr / local / php / bin / phpize
./configure --enable-memcache --with-php-config = / usr / local / php / bin / php-config
make && make install
6. Iniciar o pacote de expansão no arquivo de configuração do PHP, e em seguida, nginx restart php-fpm
Nota: veja a figura abaixo lá memcached.so e memcache.so dois documentos, ele mostra o processo de instalação não é um problema
vim /usr/local/php/etc/php.ini
[Intl]
extension = intl.so
[Memcached]
extension = memcached.so
[Memcache]
extension = memcache.so
7. funções da API de teste memcached e página de teste php
Use phpinfo do php () para verificar se a instalação foi bem sucedida, você também pode usar o / usr / local / php / bin / php -m comando para verificar que não há instalação bem sucedida de dois plug-ins
php teste de conexão com o servidor memcached
<?php
$memcache=new Memcache;
$memcache->connect('192.168.0.102',11211) or die("对不起,连接失败!!!");
$memcache->set('key','恭喜你memcache连接测试成功!!!');
$get_value=$memcache->get('key');
echo $get_value;
?>
mysql e memcache
Usando MySQL Memcached UDF (User Defined Functions) Método mysql memcached UDF
Na verdade, ser usado por memcache libmemcached uma série de funções, e você pode ser obter, conjunto, cas, acrescentar, preceder, de exclusão, de incremento, decremento objetos memcache através da operação destas funções, essas funções se usarmos por gatilho mysql, em seguida, mysql pode passar melhor, memcache gestão mais automatizada!
1. musql montado em um servidor ou memcache MariaDB
Download Mysql e instalar o LAMP antes que você possa instalar a referência blog e LNMP
MariaDB instalação:
yum -y install MariaDB MariaDB-servidor MariaDB-devel
2. Instalação libmemcached (libmemcached-0,34 emparelhamento com montagem memcached_functions_mysql-1.1)
tar zxf libmemcached-0.34.tar.gz
cd libmemcached-0,34
./configure --prefix = / usr / local / libmemcached --with-memcached
make && make install
3. Instale memcached_functions_mysql
tar zxf memcached_functions_mysql-1.1.tar.gz
cd memcached_functions_mysql-1.1
./configure with-mysql = / usr / local / mysql / bin / mysql_config with-libmemcached = / usr / local / libmemcached /
make && make install
Nota: MariaDB instalado MariaDB-devel terá mysql_config
Lib 4. Copie o arquivo para uma biblioteca de arquivo mysql o plugin do diretório, MySQL adicionado às funções memcache UDF
cp /usr/local/lib/libmemcached_functions_mysql.* / usr / local / mysql / lib / plugin /
MariaDB início ou mysql, aterragem mysql em
mysql -uroot -p123456
O banco de dados para execução
mysql> source install_functions.sql /root/memcached_functions_mysql-1.1/sql/
Nota: A execução do arquivo no diretório de origem memcached_functions_mysql-1.1
função de consulta: SELECT * FROM mysql.func;
6. importados para a função de banco de dados (realizada na casca, não no banco de dados)
mysql -uroot -p123456 </root/memcached_functions_mysql-1.1/sql/install_functions.sql
7. Teste se a função tiver êxito
Estabelecer uma ligação: MySQL> memc_servers_set SELECIONAR ( '192.168.0.102:11211');
Inquérito: MySQL> o memc_server_count SELECIONAR ();
inserção de dados: MySQL> memc_set SELECIONAR ( 'm', 'ABCDEFG');
Consulta de dados: MySQL> memc_get SELECIONAR ( 'm');
8. teste se os clientes remotos para sincronizar dados, a capacidade de consulta
Como tomar a iniciativa para sincronizar os dados para mysql memcache
gratidão gatilho
1. Faça login no as novas tabelas de banco de dados e banco de dados
mysql> criar test123 banco de dados;
mysql> criar tab1 mesa (id int não nulo, nome varchar (32) não nulo, chave primária (id));
2. Ligue memcache
mysql> select memc_servers_set ( '192.168.0.102:11211');
3 .. tabelas relacionadas para estabelecer o gatilho (trigger inserção de dados)
de inserção de dados:
MySQL> DELIMITER $
MySQL> CREATE TRIGGER tab1_insert_memc
-> antes TAB1 INSERT ON
-> para o começo de cada Row
-> SET @ m = memc_set (NOVO. ID, NEW.name);
-> End $
atualizar dados:
MySQL> CREATE tRIGGER tab1_update_memc
-> antes atualização TAB1 ON
-> para o começo de cada Row
-> SET @ m = memc_replace (OLD.id, NEW.name);
-> acabar $
dados de exclusão:
MySQL> Criar o tab1_delete_memc Gatilho
-> a antes da tab1 ON DELETE
->para cada linha começar
-> set @ m = memc_delete (OLD.id);
-> end $
replicação mestre-mestre memcached para alcançar alta disponibilidade
suportes memcached cada cópia (cópia a partir da cópia mestre e bi são legíveis e gravável) usando detecção de falha de alta disponibilidade keepalived
Nota: necessidade de baixar a versão suportada pela replicação do pacote de instalação do Memcached memcached-1.2.8-repcached-2.2.tar.gz
Passo dois servidores precisa a mesma configuração, apenas diferentes keepalived
1. Instale o pacote de apoio
yum -y install psmisc
pacote Psmisc contém três ajudar a gerenciar o programa diretório / proc
user: exibição PID especificado arquivos ou processos de sistemas de arquivos
killall: Mate um nome de processo que especifica o comando para executar todos os processos sinais
pstree: Árvore exibe os processos correntes
2. Instale libevent e memcached (omitido aqui é consistente com as etapas de instalação anteriores notas, só que não memcached a mesma versão)
Compilar e instalar o memcached
./configure --prefix = / usr / local / memcached_replication enable-replicação with-libevent = / usr / / libevent locais
make && make install
Após a instalação, a necessidade de construir e instalar libevent-1.4.so.2 módulo de copiar os blocos em / usr / lib64 diretório, caso contrário, um erro
ln -s /usr/local/libevent/lib/libevent-1.4.so.2 / usr / lib64 /
3. Iniciar serviço (os dois últimos diferente opção -x ip, do outro lado do ip)
./memcached -d -u -m raiz 64 -x 192.168.0.103
./memcached -d -u -m raiz 64 -x 192.168.0.104
Se o módulo não está carregado, ele vai me dizer o erro:
./memcached: Erro ao carregar bibliotecas compartilhadas: libevent-1.4.so.2: não pode abrir arquivo objeto compartilhado: Nenhum tal lima ou diretório
4. Teste para verificar se para implementar a replicação mestre-mestre
Foram adicionados para ver se a sincronização chave em ambos os servidores
5. Instale keepalived (ver o meu blog de keepalived)
Teste para ver se uma falha da máquina para alcançar alta disponibilidade