Implementación independiente de MysqL # Redis, sincronización maestro-esclavo

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

Uno, compile e instale redis independiente, agregue la administración redis systemctl

[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

Dos, prueba de inicio de sesión de redis y uso simple

登陆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和端口发给开发就可以了。

Tres, herramientas de gestión relacionadas con redis

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

En cuarto lugar, implemente tres máquinas de sincronización redis-maestro-esclavo

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, explicación detallada del archivo de configuración de redis

1 、 incluir

Explicación: introduzca otros archivos de configuración. Por ejemplo, cuando tiene varios servidores y algunos elementos de configuración son comunes a ellos, puede escribir estos elementos de configuración comunes en un archivo de configuración common.conf, y luego estos servidores incluyen este archivo de configuración y estos servidores mismos Los elementos de configuración están escritos en sus propios archivos de configuración.

Ejemplo: incluya /path/to/common.conf

2 、 módulo de carga

Explicación: este elemento de configuración aún no se comprende. La nota es la siguiente: cargue el módulo al inicio, si el servidor no puede cargar el módulo, esta configuración se ignorará. Puede utilizar varios módulos de carga.
Ejemplo: loadmodule /path/to/my_module.so

3 、 enlazar

Explicación: De forma predeterminada, redis escucha las conexiones de los clientes en todas las interfaces de red válidas del servidor. Si solo desea que escuche en una o más interfaces de red, entonces vincula una IP o varias IP. Se pueden separar varios espacios de IP.

Ejemplo: enlazar 192.168.1.100 10.0.0.1
enlazar 127.0.0.1 :: 1

4 、 modo protegido

Explicación: cuando está activado, el acceso a la red pública a redis está prohibido. Hay dos condiciones para que se habilite: la primera es que no se utiliza la vinculación y la segunda es que no se establece ninguna contraseña de acceso.

Ejemplo: modo protegido sí

5 、 puerto

Explicación: especifique el número de puerto que supervisa el servidor redis. El valor predeterminado es 6379, si se especifica 0, no escuchará.

Ejemplo: puerto 6379

6 、 tcp-backlog

Explicación: Este parámetro determina la longitud de la cola completa (después del protocolo de enlace de tres vías) en la conexión TCP. Por supuesto, este valor no debe ser mayor que el valor de / proc / sys / net / core / somaxconn definido por el sistema Linux. El valor predeterminado es 511, mientras que la versión Linux El valor del parámetro predeterminado es 128. Cuando la simultaneidad del sistema es grande y la velocidad del cliente es lenta, puede configurar estos dos parámetros juntos.
Ejemplo: tcp-backlog 511
7.
Explicación de Unixsocket : especifique la ruta del socket de Unix.
Ejemplo: unixsocket /tmp/redis.sock
8.
explicación de unixsocketperm : especifique los permisos del archivo de socket unix.

Ejemplo: unixsocketperm 755
9, tiempo de espera

Explicación: Cuántos segundos después de que el cliente está inactivo, la conexión se cierra. Si se establece en 0, la función se cierra.

Ejemplo: timeout 30
10, tcp-keepalive
Explicación: La unidad son segundos, lo que significa que SO_KEEPALIVE se utilizará periódicamente para comprobar si el cliente todavía está en buen estado, para evitar que el servidor se bloquee, el valor oficial recomendado es 300S
Ejemplo: tcp-keepalive 300

11 、 demonizar

Explicación: Si se debe iniciar en modo daemon, el valor predeterminado es no, cuando se configura como sí, se inicia en modo daemon, entonces la instancia de redis escribirá el número de proceso pid en el archivo predeterminado /var/run/redis.pid.

Ejemplo: demonizar sí

12.
Explicación supervisada : El demonio de Redis se puede administrar a través de upstart y systemd. Este parámetro está relacionado con el sistema operativo específico.

Ejemplo: supervisado no

13.
Explicación del archivo pid: configure la ruta del archivo pid. Cuando se inicia redis en modo daemon, si el archivo pid no está configurado, el valor predeterminado de pidfile es /var/run/redis.pid.
Ejemplo: pidfile /var/run/redis_6379.pid

14 、 nivel logarítmico

Explicación: Nivel de registro. Las opciones son: depurar (registrar una gran cantidad de información de registro, adecuada para las fases de desarrollo y prueba); detallado (más información de registro); aviso (información de registro adecuada, utilizada en el entorno de producción); advertencia (solo se utilizará información importante y clave) esta grabado).

Ejemplo: aviso de nivel de registro

15.
Explicación del archivo de registro: la ubicación del archivo de registro, cuando se especifica como una cadena vacía, es la salida estándar. Si redis se está ejecutando en modo demonio, el registro se enviará a / dev / null.

Ejemplo: archivo de registro ""

16 、 habilitado para syslog

Explicación: si se debe registrar el registro en el registro del sistema. (¿Cuál es el significado?)
Ejemplo: syslog habilitado no
17, syslog-ident

Explicación: establezca el ID del registro del sistema

Ejemplo: syslog-ident redis
18, syslog-Facility
Explicación: Especifique la facilidad syslog (facilidad), que debe ser usuario o local0 a local7.

Ejemplo: syslog-Facility local0

19 、 bases de datos

Explicación: establezca el número de bases de datos. La base de datos predeterminada es DB 0. Puede usar el comando select <dbid> para seleccionar una base de datos diferente en cada conexión. Dbid es un valor entre 0 y bases de datos-1.
Ejemplo: bases de datos 16

 

20 、 guardar

Explicación: guarde los datos en el disco. El formato es: save <seconds> <changes>, lo que significa que al menos las claves de cambios se guardarán una vez después de segundos.

Ejemplo:
guardar 900 1
guardar 300 10
guardar 60 10000

21 、 detener-escrituras-en-bgsave-error

Explicación: De forma predeterminada, si el último guardado en segundo plano de redis falla, redis dejará de aceptar operaciones de escritura. Esto permitirá a los usuarios saber de manera difícil que los datos no pueden conservarse en el disco correctamente, de lo contrario nadie notará el desastre. ocurrir. Si se reinicia el proceso de guardado en segundo plano, redis también permitirá automáticamente operaciones de escritura. Sin embargo, si instala un monitoreo confiable, es posible que no desee que redis haga esto, entonces puede cambiarlo a no.
Ejemplo: stop-writees-on-bgsave-error no

22 、 rdbcompresión

Explicación: Si se comprime la cadena al volcar la base de datos .rdb, el valor predeterminado es sí. Si desea guardar algunos recursos de la CPU, puede configurarlo en no, por lo que el conjunto de datos puede ser relativamente grande.

Ejemplo: rdbcompression yes
23, rdbchecksum
Explicación: Si CRC64 verifica el archivo rdb, habrá una cierta pérdida de rendimiento (aproximadamente un 10%).

Ejemplo: rdbchecksum yes

24 、 nombrearchivobd

Explicación: El nombre del archivo rdb.

Ejemplo: dbfilename dump.rdb
25, dir
Explicación: El directorio de almacenamiento de la base de datos. Debe ser un directorio y el archivo aof también se guardará en este directorio.

Ejemplo: dir
./26, esclavo de

Explicación: Configure esta máquina como servicio esclavo. Formato: esclavo de <masterip> <masterport>. Configure la dirección IP y el puerto del servicio maestro. Cuando se inicie Redis, sincronizará automáticamente los datos del maestro.

Ejemplo: esclavo de 192.168.0.1 6379

27.
Explicación de Masterauth : Cuando el servicio maestro está configurado para protección con contraseña, el servicio esclavo se conecta a la contraseña maestra.

示例 : masterauth 123456
28 、 esclavo-servir-datos-obsoletos

Explicación: Cuando un esclavo pierde contacto con el maestro, o cuando la replicación está en progreso, el comportamiento del esclavo en respuesta a la solicitud: 1) Si es así (el valor predeterminado), el esclavo seguirá respondiendo a la solicitud del cliente, pero los datos devueltos pueden estar desactualizados. O los datos pueden estar vacíos durante la primera sincronización; 2) Si es no, el esclavo devolverá un error "SYNC con maestro en progreso" cuando ejecute otros comandos excepto info y salveof.
Ejemplo: esclavo-servir-datos obsoletos sí
29, esclavo-solo lectura

Explicación: Establezca si el esclavo es de solo lectura. Desde la versión 2.6, el esclavo es de solo lectura por defecto.

Ejemplo: esclavo de solo lectura sí

30. Explicación de la sincronización sin disco de respuesta
: si la replicación de datos maestro-esclavo utiliza la función de replicación sin disco.

Ejemplo: repl-diskless-sync no

31 、 periodo de respuesta-ping-esclavo

Explicación: Especifique el período para que el esclavo haga ping al maestro con regularidad; el valor predeterminado es 10 segundos.

Ejemplo: repl-ping-slave-period 10

32 、 tiempo de espera de respuesta

Explicación: Establezca el tiempo de transmisión de datos por lotes de la base de datos principal o el intervalo de tiempo de respuesta de ping, el valor predeterminado es 60 segundos.
Ejemplo: repl-timeout 60

33. Explicación de Repl-disable-tcp-nodelay
: especifique si desea desactivar la opción NO_DELAY del socket al sincronizar datos con el esclavo. Si se configura como "sí", NO_DELAY está deshabilitado y la pila del protocolo TCP fusionará los paquetes pequeños y los enviará de manera uniforme. Esto puede reducir la cantidad de paquetes entre los nodos maestro y esclavo y ahorrar ancho de banda, pero aumentará el tiempo de sincronización de datos con el esclavo. Si está configurado como "no", indica que NO_DELAY está habilitado y la pila del protocolo TCP no retrasará el tiempo de envío de paquetes pequeños, por lo que se reducirá el retardo de sincronización de datos, pero se requiere un ancho de banda mayor. Normalmente, debe configurarse en no para reducir el retardo de sincronización, pero cuando la carga de red entre los nodos maestro y esclavo ya es alta, se puede configurar en sí.

示例 : repl-disable-tcp-nodelay no
34 、 repl-backlog-size

Explicación: establezca la capacidad del trabajo pendiente de replicación maestro-esclavo. Esta acumulación es un búfer que se usa para almacenar datos de esclavos cuando los esclavos están desconectados, por lo que cuando un esclavo quiere volver a conectarse, generalmente no quiere volver a sincronizar todo, solo la sincronización parcial es suficiente, simplemente pase el esclavo cuando esté desconectado Falta esta parte de los datos. Cuanto mayor sea el valor, más tiempo podrá desconectarse el Salve.

Ejemplo: repl-backlog-size 1mb

35. Explicación de Repl-backlog-ttl
: Configure cuántos segundos después de que el maestro y el esclavo pierden contacto, borre el backlog para liberar espacio. Cuando se configura como 0, significa que nunca se borrará.

Ejemplo: repl-backlog-ttl 3600

36.
Explicación de la prioridad de esclavo: cuando el maestro no funciona normalmente, Redis Sentinel seleccionará un nuevo maestro de los esclavos. Cuanto menor sea el valor, más preferido será seleccionado, pero si es 0, significa que No se puede seleccionar el esclavo. La prioridad predeterminada es 100.

Ejemplo: prioridad esclava 100
37, requirepass

Explicación: establezca la contraseña de conexión de redis.

Ejemplo: requirepass foobared
38, rename-command
Explicación: Cambie el nombre del comando. Por razones de seguridad, se puede cambiar el nombre de algunos comandos importantes y peligrosos. Cuando cambia el nombre de un comando a una cadena vacía, cancela el comando.

示例 : rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52

rename-command CONFIG “”
39 、 maxclients

Explicación: establezca el número máximo de conexiones de cliente simultáneas. El valor predeterminado es ilimitado. El número de conexiones de cliente que Redis puede abrir al mismo tiempo es el número máximo de descriptores de archivo que el proceso de Redis puede abrir: 32 (el servidor de Redis usará algunos). Si establece maxclients 0, Indica que no hay restricciones. Cuando el número de conexiones de clientes alcanza el límite, Redis cerrará la nueva conexión y devolverá un mensaje de error de número máximo de clientes alcanzados al cliente.

Ejemplo: maxclients 10000
40, maxmemory
Explicación: Especifique el límite máximo de memoria de Redis. Redis cargará datos en la memoria cuando se inicie. Después de alcanzar la memoria máxima, Redis primero intentará borrar las claves caducadas o a punto de caducar. Cuando este método Después del procesamiento, aún se alcanza la configuración de memoria máxima y no se pueden realizar más operaciones de escritura, pero aún se pueden realizar operaciones de lectura. El nuevo mecanismo vm de Redis almacenará la clave en la memoria y el valor en el área de intercambio, formato: maxmemory <bytes>.

Ejemplo: maxmemory 1024000

41. Explicación de maxmemory-policy
: Una estrategia clara utilizada por redis cuando el uso de memoria alcanza su máximo. Hay varias opciones (obviamente hay seis, pero el archivo de configuración oficial dice que hay cinco opciones):

1) Volatile-lru usa el algoritmo LRU para eliminar la clave con un tiempo de vencimiento (LRU: menos usado recientemente)
2) allkeys-lru usa el algoritmo LRU para eliminar cualquier clave

3) volatile-random elimina claves aleatorias con tiempo de vencimiento establecido

4) allkeys-random elimina las claves aleatorias
5) volatile-ttl elimina las claves que están a punto de caducar (TTL menor)

6) noeviction noeviction no elimina ninguna clave, pero devuelve un error de escritura. Opción predeterminada
Ejemplo: maxmemory-policy noeviction

42. Explicación de maxmemory-samples
: Ni LRU ni los algoritmos TTL mínimos son algoritmos precisos, sino algoritmos relativamente precisos (para ahorrar memoria), puede elegir el tamaño de muestra para la detección a voluntad. Redis selecciona 3 muestras para la detección de forma predeterminada y puede establecer el número de muestras mediante maxmemory-samples.

Ejemplos: maxmemory-samples 5
43, appendonly

Explicación: si habilitar la persistencia AOF. Es decir, si se registra después de cada operación de actualización. La configuración predeterminada es no, es decir, los datos se escriben en el disco de manera asincrónica. Si no está encendido, algunos datos se pueden perder cuando la energía está apagada.

Ejemplo: appendonly no

44 、 añadir nombre de archivo

Explicación: El nombre del archivo de registro de actualización, el valor predeterminado es appendonly.aof.

示例 : appendfilename "appendonly.aof"
45 、 appendfsync

Explicación: La frecuencia de actualización del archivo aof. Hay tres tipos:

1) no Confíe en el sistema operativo para actualizar, redis no actualiza activamente AOF, que es el más rápido, pero la seguridad es deficiente.
2) Llame siempre a fsync para actualizar el archivo AOF cada vez que se envíe un comando de modificación, lo cual es muy, muy lento, pero también muy seguro.
3) Everysec llama a fsync cada segundo para actualizar el archivo AOF, que es muy rápido, pero es posible que se pierdan datos en un segundo.
Ejemplo: appendfsync everysec
46, no-appendfsync-on-rewrite
Explicación: especifique si se debe llamar a fsync durante la reescritura del archivo AOF en segundo plano, el valor predeterminado es no, lo que significa que se debe llamar a fsync (independientemente de si hay un proceso secundario en la actualización en segundo plano). Habrá una gran cantidad de E / S de disco durante la escritura de archivos RDB de Redis o la reescritura de archivos AOF en segundo plano. En este momento, en algunos sistemas Linux, la llamada a fsync puede estar bloqueada.

示例 : no-appendfsync-on-rewrite no

47 、 porcentaje-automático-de-reescritura

Explicación: Cuando el archivo AOF crece hasta cierto tamaño, Redis puede llamar a BGREWRITEAOF para reescribir el archivo de registro. Cuando la tasa de crecimiento del tamaño del archivo AOF es mayor que este elemento de configuración, la reescritura se activa automáticamente.

Ejemplo: auto-aof-rewrite-percent 100

48 、 auto-aof-rewrite-min-size

 

Explicación: Cuando el archivo AOF crece a un tamaño determinado, Redis puede llamar a BGREWRITEAOF para reescribir el archivo de registro. Cuando el tamaño del archivo AOF es mayor que este elemento de configuración, la reescritura se activa automáticamente.

Ejemplo: auto-aof-rewrite-min-size 64mb

49. Explicación de Aof-load-truncated
: Redis puede cargar el archivo AOF truncado cuando se inicia, sin la necesidad de ejecutar primero la herramienta redis-check-aof.

Ejemplo: aof-load-truncated yes

50, tomando tiempo límite

Explicación: El tiempo de ejecución más largo de un script Lua, en milisegundos, si es 0 o un número negativo significa tiempo de ejecución ilimitado, el valor predeterminado es 5000.

Ejemplo: lua-time-limit 5000

Replicación maestro / esclavo de Redis:

El método de replicación de datos maestro / esclavo de Redis puede ser el modo un maestro-uno-esclavo o un maestro-multi-esclavo. Redis
está en el modo sin bloqueo del maestro, lo que significa que cuando el esclavo realiza la sincronización de datos, el maestro puede aceptar las
solicitudes del cliente . No afecta la consistencia de los datos sincronizados. Sin embargo, el lado esclavo está en modo de bloqueo. Cuando el esclavo sincroniza los
datos maestros , no puede responder a la consulta del cliente
. En el modo maestro / esclavo de Redis, el maestro proporciona servicios de lectura y escritura de datos, mientras que el esclavo solo Proporcionar servicios de lectura

El método de configuración maestro / esclavo de Redis es
agregar el archivo de configuración redis.conf en el directorio Redis del host esclavo :
esclavo de master_ip master_port

Por ejemplo:
configuramos nuestro esclavo como: redis-slave.conf
daemonize yes
pidfile redis-slave.pid
port 6380
timeout 300
loglevel verbose
logfile stdout
bases de datos 16
save 900 1
save 300 10
save 60 10000
rdbcompression yes
dbfilename dump-slave.rd

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

m-pages 134217728
vm-max-threads 4
glueoutputbuf sí
hash-max-zipmap-entries 64
hash-max-zipmap-value 512
activerehashing sí

Supongo que te gusta

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