Implementação autônoma do MysqL # Redis, sincronização mestre-escravo

=================================================

Um, compilar e instalar redis autônomo, adicionar gerenciamento de sistema tl de redis

[root@redis-master ~]# mkdir -p /data/application     ---创建工作目录
[root@redis-master ~]# wget http://download.redis.io/releases/redis-4.0.9.tar.gz   ---下载redis
[root@redis-master ~]# tar xzf redis-4.0.9.tar.gz -C /data/application/    ---解压
[root@redis-master ~]# cd /data/application/
[root@redis-master application]# mv redis-4.0.9/ redis
[root@redis-master application]# cd redis/
[root@redis-master redis]# yum install -y gcc make  #安装编译工具
[root@redis-master redis]# make
直接make编译就行
编译完成,安装成功
注:如果报错请将刚才解压的安装包删除掉,再次重新解压并进行make安装即可。
[root@redis-master redis]# cp redis.conf redis.conf.bak
#redis通过多个配置文件创建多节点实例
[root@redis-master redis]# vim redis.conf     ---修改如下
bind 192.168.246.202  #只监听内网IP
daemonize yes     #开启后台模式将on改为yes,开启后可以在后台运行
timeout 300      #连接超时时间
port 6379                      #端口号
dir /data/application/redis/data  #本地数据库存放持久化数据的目录该目录-----需要存在
pidfile /var/run/redis_6379.pid  #定义pid文件
logfile /var/log/redis.log  #定义log文件
创建存放数据的目录
[root@redis-master redis]# mkdir /data/application/redis/data
配置redis为systemctl启动
[root@redis-master redis]# cd /lib/systemd/system
[root@redis-master system]# vim redis.service
[Unit]
Description=Redis
After=network.target

[Service]
ExecStart=/data/application/redis/src/redis-server /data/application/redis/redis.conf  --daemonize yes
ExecStop=/data/application/redis/src/redis-cli -h 127.0.0.1 -p 6379 shutdown

[Install]
WantedBy=multi-user.target
=====================
参数详解:
• [Unit] 表示这是基础信息 
• Description 是描述
• After 是在那个服务后面启动,一般是网络服务启动后启动

• [Service] 表示这里是服务信息 
• ExecStart 是启动服务的命令
• ExecStop 是停止服务的指令

• [Install] 表示这是是安装相关信息 
• WantedBy 是以哪种方式启动:multi-user.target表明当系统以多用户方式(默认的运行级别)启动时,这个服务需要被自动运行。
===================
启动服务:
[root@redis-master system]# systemctl daemon-reload
#加载一下刚才写的启动文件
[root@redis-master system]# systemctl start redis.service

Dois, teste de login redis e uso simples

登陆redis
./redis-cli -a password   如果指定了密码
内部:Auto  tab
[root@redis-master system]# cd /data/application/redis/src/
[root@redis-master src]# ./redis-cli -h 192.168.246.202 -p 6379
192.168.246.202:6379> ping     ---测试redis是否可以用
PONG
192.168.246.202:6379> set name newrain    #设置key--name,并设置值
OK
192.168.246.202:6379> get name    #获取到key
"newrain"
192.168.246.202:6379>
单机版redis已经部署完成。将ip和端口发给开发就可以了。

Três, ferramentas de gerenciamento relacionadas ao Redis

./redis-benchmark     #用于进行redis性能测试的工具 
./redis-check-dump    #用于修复出问题的dump.rdb文件
./redis-cli           #redis的客户端
./redis-server        #redis的服务端
./redis-check-aof     #用于修复出问题的AOF文件
./redis-sentinel      #用于集群管理

Quarto, implantar sincronização redis-mestre-escravo de três máquinas

redis-master----192.168.246.202
redis-slave-1-----192.168.246.203
redis-slave-2-----192.168.246.204
1.首先三台服务器将redis部署完成。
2.编辑master的redis配置文件:
[root@redis-master ~]# cd /data/application/redis/
[root@redis-master redis]# vim redis.conf
设置监听ip地址:bind 0.0.0.0
关闭加密保护:protected-mode no
2.修改slave1、slave2的配置文件:
[root@redis-slave-1 ~]# cd /data/application/redis/
[root@redis-slave-1 redis]# vim redis.conf      ---修改如下:
设置监听ip地址:bind 0.0.0.0
关闭加密保护:protected-mode no
搜索/slaveof
添加master的内网ip和端口
slaveof 10.11.67.31 6379
如果主服务器有密码(从服务器如果设置密码,设置成和住服务器一样)
masterauth 123
4.重启三台redis
[root@redis-master redis]# systemctl restart redis.service
5.测试主从
master 有读写的权利
slave 只有读的权利

1.在master上面执行
[root@redis-master redis]# cd src/
[root@redis-master src]# ./redis-cli 
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> set name xuan
OK
127.0.0.1:6379> get name
"xuan"
127.0.0.1:6379>
2.分别在slave-1和slave-2上面执行:
[root@redis-slave-1 redis]# cd src/
[root@redis-slave-1 src]# ./redis-cli 
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> get name
"xuan"
127.0.0.1:6379>
[root@redis-slave-2 src]# ./redis-cli 
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> get name
"xuan"
127.0.0.1:6379>
查看复制状态
master执行:
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.246.203,port=6379,state=online,offset=490,lag=0
slave1:ip=192.168.246.204,port=6379,state=online,offset=490,lag=1
==============================================================================
slave上面执行:
127.0.0.1:6379> info replication
# Replication
role:slave
master_host:192.168.246.202
master_port:6379
master_link_status:up

Cinco, explicação detalhada do arquivo de configuração redis

1 、 inclui

Explicação: Apresente outros arquivos de configuração. Por exemplo, quando você tem vários servidores e alguns itens de configuração são comuns a eles, você pode gravar esses itens de configuração comuns em um arquivo de configuração common.conf e, em seguida, esses servidores incluem este arquivo de configuração e os próprios servidores Os itens de configuração são gravados em seus próprios arquivos de configuração.

Exemplo: include /path/to/common.conf

2 、 módulo de carga

Explicação: Este item de configuração ainda não foi compreendido. A nota é esta: carregue o módulo na inicialização, se o servidor não puder carregar o módulo, esta configuração será ignorada. Você pode usar vários módulos de carregamento.
Exemplo: loadmodule /path/to/my_module.so

3 、 vincular

Explicação: Por padrão, o redis escuta as conexões do cliente em todas as interfaces de rede válidas no servidor. Se você deseja que ele escute apenas em uma ou mais interfaces de rede, vincule um ou vários IPs. Vários espaços ip podem ser separados.

Exemplo: bind 192.168.1.100 10.0.0.1
bind 127.0.0.1 :: 1

4 、 modo protegido

Explicação: Quando ativado, o acesso à rede pública para o redis é proibido. Existem duas condições para que ele seja ativado: a primeira é que o bind não seja usado e a segunda é que nenhuma senha de acesso seja definida.

Exemplo: modo protegido sim

5 、 porta

Explicação: Especifique o número da porta que o servidor redis monitora. O padrão é 6379, se 0 for especificado, ele não escutará.

Exemplo: porta 6379

6 、 tcp-backlog

Explicação: Este parâmetro determina o comprimento da fila concluída (após o handshake de três vias) na conexão TCP. Claro, esse valor não deve ser maior que o valor / proc / sys / net / core / somaxconn definido pelo sistema Linux. O padrão é 511, enquanto a versão Linux O valor do parâmetro padrão é 128. Quando a simultaneidade do sistema é grande e a velocidade do cliente é lenta, você pode definir esses dois parâmetros juntos.
Exemplo: tcp-backlog 511
7.
Explicação Unixsocket : Especifique o caminho do soquete Unix.
Exemplo: unixsocket /tmp/redis.sock
8.
explicação unixsocketperm : Especifique as permissões do arquivo de socket unix.

Exemplo: unixsocketperm 755
9, tempo limite

Explicação: Quantos segundos depois que o cliente está inativo, a conexão é fechada.Se for definida como 0, a função é fechada.

Exemplo: timeout 30
10, tcp-keepalive
Explicação: A unidade é segundos, o que significa que SO_KEEPALIVE será usado periodicamente para verificar se o cliente ainda está em um estado íntegro para evitar que o servidor seja bloqueado. O valor oficial recomendado é 300S.
Exemplo: tcp-keepalive 300

11 、 daemonize

Explicação: Se deve iniciar no modo daemon, o padrão é não, quando configurado como sim, iniciar no modo daemon, então a instância do redis gravará o número do processo pid no arquivo padrão /var/run/redis.pid

Exemplo: daemonize sim

12.
Explicação supervisionada : O daemon Redis pode ser gerenciado por meio do upstart e do systemd.Este parâmetro está relacionado ao sistema operacional específico.

Exemplo: supervisionado não

13.
explicação do arquivo pid: configure o caminho do arquivo pid. Quando o redis é iniciado no modo daemon, se pidfile não estiver configurado, o valor padrão de pidfile é /var/run/redis.pid.
Exemplo: pidfile /var/run/redis_6379.pid

14 、 nível de log

Explicação: Nível de log. As opções são: depurar (registrar uma grande quantidade de informações de log, adequado para as fases de desenvolvimento e teste); detalhado (mais informações de log); aviso (informações de log apropriadas, usadas no ambiente de produção); aviso (apenas algumas informações importantes e importantes serão usadas) está gravado).

Exemplo: aviso de nível de log

15.
Explicação do arquivo de log: A localização do arquivo de log, quando especificado como uma string vazia, é a saída padrão.Se o redis estiver sendo executado no modo daemon, o log será enviado para / dev / null.

Exemplo: logfile ""

16 、 habilitado para syslog

Explicação: Se deve registrar o log no log do sistema. (Qual é o significado?)
Exemplo: syslog-enabled no
17, syslog-ident

Explicação: Defina a id do log do sistema

Exemplo: syslog-ident redis
18, syslog-facility
Explicação: Especifique o recurso syslog (recurso), que deve ser user ou local0 to local7.

Exemplo: syslog-facility local0

19 、 bancos de dados

Explicação: Defina o número de bancos de dados. O banco de dados padrão é DB 0. Você pode usar o comando select <dbid> para selecionar um banco de dados diferente em cada conexão. Dbid é um valor entre 0 e databases-1.
Exemplo: bancos de dados 16

 

20 、 salvar

Explicação: Salve os dados no disco. O formato é: salvar <segundos> <alterações>, o que significa que pelo menos as chaves de alterações serão salvas uma vez após segundos.

Exemplo:
salvar 900 1
salvar 300 10
salvar 60 10000

21 、 stop-write-on-bgsave-error

Explicação: Por padrão, se o último salvamento em segundo plano do redis falhar, ele deixará de aceitar operações de gravação. Isso permitirá que os usuários saibam de maneira difícil que os dados não podem ser persistidos no disco corretamente, caso contrário, ninguém notará o desastre ocorrer. Se o processo de salvamento em segundo plano for reiniciado, o redis também permitirá automaticamente as operações de gravação. No entanto, se você instalar um monitoramento confiável, pode não querer que o redis faça isso; então, você pode alterá-lo para não.
Exemplo: stop-write-on-bgsave-error no

22 、 rdbcompression

Explicação: Se a string deve ser compactada ao despejar o banco de dados .rdb, a configuração padrão é sim. Se você quiser salvar alguns recursos de cpu, pode definir como não, de modo que o conjunto de dados pode ser relativamente grande.

Exemplo: rdbcompression yes
23, rdbchecksum
Explicação: Se o CRC64 verificar o arquivo rdb, haverá uma certa perda de desempenho (cerca de 10%).

Exemplo: rdbchecksum yes

24 、 dbfilename

Explicação: O nome do arquivo rdb.

Exemplo: dbfilename dump.rdb
25, dir
Explicação: O diretório de armazenamento do banco de dados. Deve ser um diretório e o arquivo aof também será salvo neste diretório.

Exemplo: dir
./26, slaveof

Explicação: Defina esta máquina como serviço escravo. Formato: slaveof <masterip> <masterport>. Defina o endereço IP e a porta do serviço mestre. Quando o Redis for iniciado, ele sincronizará automaticamente os dados do mestre.

Exemplo: escravo de 192.168.0.1 6379

27.
Explicação do masterauth : Quando o serviço master é configurado para proteção por senha, o serviço slav se conecta à senha master.

示例 : masterauth 123456
28 、 slave-serve-stale-data

Explicação: Quando um escravo perde contato com o mestre, ou quando a replicação está em andamento, o comportamento do escravo em resposta à solicitação: 1) Se sim (o valor padrão), o escravo ainda responderá à solicitação do cliente, mas os dados retornados podem estar desatualizados. Ou os dados podem estar vazios durante a primeira sincronização; 2) Se não, o escravo retornará um erro "SYNC com mestre em andamento" quando você executar outros comandos, exceto info e salveof.
Exemplo: slave-serve-stale-data yes
29, slave-read-only

Explicação: Defina se o escravo é somente leitura. A partir da versão 2.6, o escravo é somente leitura por padrão.

Exemplo: escravo somente leitura sim

30.
Explicação Repl-diskless-sync : se a replicação de dados mestre-escravo usa a função de replicação sem disco.

Exemplo: repl-diskless-sync no

31 、 repl-ping-slave-period

Explicação: Especifique o período para o escravo executar ping no mestre regularmente; o padrão é 10 segundos.

Exemplo: repl-ping-slave-period 10

32 、 repl-timeout

Explicação: Defina o tempo de transmissão de dados em lote do banco de dados principal ou o intervalo de tempo de resposta de ping, o valor padrão é 60 segundos.
Exemplo: repl-timeout 60

33.
Explicação Repl-disable-tcp-nodelay : Especifique se deseja desabilitar a opção NO_DELAY do soquete ao sincronizar os dados com o escravo. Se configurado como "sim", NO_DELAY é desativado e a pilha do protocolo TCP mesclará pequenos pacotes e os enviará uniformemente. Isso pode reduzir o número de pacotes entre os nós mestre e escravo e economizar largura de banda, mas aumentará o tempo de sincronização de dados com o escravo. Se estiver configurado como "não", indica que NO_DELAY está habilitado e a pilha do protocolo TCP não atrasará o tempo de envio de pequenos pacotes, portanto, o atraso na sincronização de dados será reduzido, mas uma largura de banda maior será necessária. Normalmente, ele deve ser configurado como não para reduzir o atraso de sincronização, mas quando a carga de rede entre os nós mestre e escravo já estiver alta, ele pode ser configurado como sim.

示例 : repl-disable-tcp-nodelay não
34 、 repl-backlog-size

Explicação: Defina a capacidade do backlog de replicação mestre-escravo. Este backlog é um buffer usado para armazenar dados do escravo quando os escravos são desconectados, então quando um escravo deseja se reconectar, ele geralmente não deseja ressincronizar tudo, apenas a sincronização parcial é suficiente, basta passar o escravo quando desconectado Esta parte dos dados está faltando. Quanto maior o valor, mais tempo o Salve pode se desconectar.

Exemplo: repl-backlog-size 1mb

35.
Explicação Repl-backlog-ttl : Configure quantos segundos após o mestre e o escravo perderem o contato, limpe o backlog para liberar espaço. Quando configurado como 0, significa que nunca será apagado.

Exemplo: repl-backlog-ttl 3600

36.
Explicação da prioridade do escravo: Quando o mestre deixa de funcionar normalmente, o Redis Sentinel seleciona um novo mestre dos escravos. Quanto menor o valor, mais preferencial ele será selecionado, mas se for 0, significa que O escravo não pode ser selecionado. A prioridade padrão é 100.

Exemplo: escravo prioridade 100
37, exigência de passagem

Explicação: Defina a senha de conexão do redis.

Exemplo: requirepass foobared
38, rename-command
Explicação: Renomeie o comando. Por razões de segurança, alguns comandos importantes e perigosos podem ser renomeados. Ao renomear um comando para uma string vazia, você cancela o comando.

示例 : renomear comando CONFIG b840fc02d524045429941cc15f59e41cb7be6c52

renomear comando CONFIG “”
39 、 maxclients

Explicação: Defina o número máximo de conexões de cliente simultâneas. O padrão é ilimitado. O número de conexões de cliente que o Redis pode abrir ao mesmo tempo é o número máximo de descritores de arquivo que podem ser abertos pelo Redis process-32 (o próprio servidor redis usará alguns). Se você definir maxclients 0, Indica nenhuma restrição. Quando o número de conexões do cliente atingir o limite, o Redis fechará a nova conexão e retornará ao cliente o número máximo de clientes alcançados na mensagem de erro.

Exemplo: maxclients 10000
40, maxmemory
Explicação: Especifique o limite máximo de memória do Redis. O Redis carregará dados na memória quando for iniciado. Depois que a memória máxima for atingida, o Redis tentará primeiro limpar as chaves expiradas ou prestes a expirar. Quando este método Após o processamento, a configuração de memória máxima ainda é atingida e nenhuma outra operação de gravação pode ser realizada, mas as operações de leitura ainda podem ser realizadas. O novo mecanismo de vm do Redis armazenará a chave na memória e o valor na área de troca, formato: maxmemory <bytes>.

Exemplo: maxmemory 1024000

41. Explicação de maxmemory-policy
: Uma estratégia clara usada pelo redis quando o uso de memória atinge seu máximo. Existem várias opções (obviamente, existem seis, mas o arquivo de configuração oficial diz que existem cinco opções?):

1) Volatile-lru usa o algoritmo LRU para remover a chave com um tempo de expiração (LRU: Menos Usado Recentemente)
2) allkeys-lru usa o algoritmo LRU para remover qualquer chave

3) volatile-random remove chaves aleatórias com tempo de expiração definido

4) allkeys-random remove as chaves aleatórias
5) volatile-ttl remove as chaves que estão prestes a expirar (TTL menor)

6) noeviction noeviction não remove nenhuma chave, mas retorna um erro de gravação. Opção padrão
Exemplo: maxmemory-policy noeviction

42. Explicação de maxmemory-samples
: Nem LRU nem algoritmos TTL mínimos são algoritmos precisos, mas algoritmos relativamente precisos (a fim de economizar memória), você pode escolher o tamanho da amostra para detecção à vontade. O Redis seleciona 3 amostras para detecção por padrão, e você pode definir o número de amostras por meio de amostras de memória máxima.

Exemplos: maxmemory-samples 5
43, appendonly

Explicação: Se deve ativar a persistência AOF. Ou seja, se deve registrar após cada operação de atualização. A configuração padrão é não, ou seja, os dados são gravados no disco de forma assíncrona. Se não estiver ligado, alguns dados podem ser perdidos quando a energia é desligada.

Exemplo: appendonly no

44 、 appendfilename

Explicação: O nome do arquivo de log de atualização, o valor padrão é appendonly.aof.

示例 : appendfilename “appendonly.aof”
45 、 appendfsync

Explicação: A frequência de atualização do arquivo aof. Existem três tipos:

1) não confie no sistema operacional para atualizar, o redis não atualiza ativamente o AOF, que é o mais rápido, mas a segurança é fraca.
2) Sempre chame fsync para atualizar o arquivo AOF toda vez que um comando de modificação for enviado, o que é muito, muito lento, mas também muito seguro.
3) Everysec chama fsync a cada segundo para atualizar para o arquivo AOF, que é muito rápido, mas os dados podem ser perdidos em um segundo.
Exemplo: appendfsync everysec
46, no-appendfsync-on-rewrite
Explicação: Especifique se deseja chamar fsync durante a regravação do arquivo AOF em segundo plano, o padrão é não, o que significa que fsync deve ser chamado (independentemente de haver um processo filho na atualização em segundo plano). Durante o Redis gravando arquivos RDB ou reescrevendo arquivos AOF em segundo plano, haverá muito IO de disco. Neste momento, em alguns sistemas Linux, a chamada de fsync pode ser bloqueada.

示例 : no-appendfsync-on-rewrite não

47 、 porcentagem de reescrita automática

Explicação: Quando o arquivo AOF atinge um determinado tamanho, o Redis pode chamar BGREWRITEAOF para reescrever o arquivo de log. Quando a taxa de crescimento do tamanho do arquivo AOF é maior do que este item de configuração, a regravação é ativada automaticamente.

Exemplo: porcentagem de reescrita automática 100

48 、 auto-aof-rewrite-min-size

 

Explicação: Quando o arquivo AOF atinge um determinado tamanho, o Redis pode chamar BGREWRITEAOF para reescrever o arquivo de log. Quando o tamanho do arquivo AOF é maior do que este item de configuração, a regravação é ativada automaticamente.

Exemplo: auto-aof-rewrite-min-size 64 MB

49.
Explicação Aof-load-truncated : o Redis pode carregar o arquivo AOF truncado ao iniciar, sem a necessidade de executar a ferramenta redis-check-aof primeiro.

Exemplo: aof-load-truncated yes

50, levando o limite de tempo

Explicação: O tempo de execução mais longo de um script Lua, em milissegundos, se for 0 ou um número negativo significar tempo de execução ilimitado, o padrão é 5000.

Exemplo: lua-time-limit 5000

Replicação mestre / escravo Redis:

O método de replicação de dados mestre / escravo do Redis pode ser o modo um-mestre-um-escravo ou um-mestre-multi-escravo. O Redis
está no modo sem bloqueio do mestre, o que significa que quando o escravo realiza a sincronização de dados, o mestre pode aceitar
solicitações do cliente . Não afeta a consistência dos dados sincronizados. No entanto, o lado do escravo está em modo de bloqueio. Quando o escravo sincroniza os
dados do mestre , ele não pode responder à consulta do cliente
. No modo mestre / escravo do Redis, o mestre fornece serviços de leitura e gravação de dados, enquanto o escravo apenas Fornece serviços de leitura

O método de configuração mestre / escravo Redis é
adicionar o arquivo de configuração redis.conf no diretório Redis do host escravo :
slaveof master_ip master_port

Por exemplo:
configuramos nosso escravo como: redis-slave.conf
daemonize sim
pidfile redis-slave.pid
porta 6380
timeout 300
loglevel verbose
logfile
bancos de dados stdout 16
save 900 1
save 300 10
save 60 10000
rdbcompression sim
dbfilename dump-slave.rd

dir /home/falcon/redis-2.0.0/
slaveof 127.0.0.1 6379
appendonly no
appendfsync everysec
vm-enabled sem
vm-swap-file logs / redis-slave.swap
vm-max-memory 0
vm-page-size 32

páginas-m 134217728
vm-max-threads 4
glueoutputbuf sim
hash-max-zipmap-entradas 64
hash-max-zipmap-value 512
activerehashing sim

Acho que você gosta

Origin blog.csdn.net/kakaops_qing/article/details/109254187
Recomendado
Clasificación