banco de dados de servidor de cache Memcache

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

 

Publicado 37 artigos originais · ganhou elogios 6 · vê 10000 +

Acho que você gosta

Origin blog.csdn.net/feili12138/article/details/105263059
Recomendado
Clasificación