天天看点

Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

Linux企业化运维

实验所用系统为Redhat-rhel7.6。

目录

  • Linux企业化运维
  • Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
    • 一、简介
      • 1、软件下载及安装
      • 2、redis支持的数据类型
      • 3、redis常用指令
    • 二、redis配置及主从复制
    • 三、redis常用指令使用指南
    • 四、redis主从自动切换(基于sentinel)
    • 五、集群
      • 1、集群构建
        • 1)手动构建
        • 2)脚本构建
      • 2、自动切换
      • 3、添加节点和分片
    • 六、redis+mysql 即 Redis作mysql的缓存服务器

Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

一、简介

Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。

Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端。

Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。

1、软件下载及安装

https://redis.io/download
tar zxf redis-5.0.8.tar.gz
make && make install
utils/install_server.sh
           

2、redis支持的数据类型

字符串(strings)

散列(hashes)

列表(lists)

集合(sets)

有序集合(sorted sets)

3、redis常用指令

config get *				##查看配置
select 1					##选择数据库
flushdb           	##清空当前数据库
flushall            	##清空所有数据库
move key 1        		##移动key
del key						##删除
rename oldkey newkey   	##改名
expire key 10       	##设置过期时间
persist key          	##设置持久化
keys user*          	##查询
exists key         	##判断是否存在
           

二、redis配置及主从复制

Redis 使用异步复制,因此无法确保 slave 是否实际接收到给定的写命令。

过程:

当主机连接新的从机时,从机会删除自己的所有数据flushall,发生此种情况还有可能是连接中从机超时,重新连接也会删除数据。然后从机开始从主机复制数据。如果主机持续写入,从机则按照主机的记录复制执行。

首先在

server1

主机,安装并编译redis。

###server1
cd
lftp 172.25.254.250
> cd pub/docs/redis
> get redis-6.2.4.tar.gz

tar  zxf redis-6.2.4.tar.gz
cd redis-6.2.4/
make
make install
           
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

运行自带的安装程序,安装失败,修改文件,重新安装。

cd utils/
ls
./install_server.sh			##运行自带的安装程序,失败
vim install_server.sh 		##将下文部分注释
///
#if [ "${_pid_1_exe##*/}" = systemd ]
#then
#       echo "This systems seems to use systemd."
#       echo "Please take a look at the provided example service unit files in this directory, and adapt and install them. Sorry!"
#       exit 1
#fi
///
./install_server.sh			##成功
           
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

此时切换到配置目录下,可以看到自动生成了配置文件,查看端口,端口开启。修改该配置文件,重启服务。

cd /etc/redis
ls							##6379.conf
netstat -antlp				##6379
vim 6379.conf
///
  94 protected-mode no		##设定关闭保护模式
  75 #bind 127.0.0.1 -::1	##链接redis 时只能通过本地localhost (127.0.0.1)来链接,而不能用网络ip(192.168..)链接,因为处于保护模式,只能本地链接,所以将该设定注释
///
/etc/init.d/redis_6379 stop
/etc/init.d/redis_6379 start
netstat -antlp | grep :6379
           
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

将此安装包复制给server2主机。

cd
scp redis-6.2.4.tar.gz server2:
           
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

server2

主机,使用另一种方式来配置

redis

首先,同样先解压,然后使用

systemd

支持进行构建,但此时缺少依赖

gcc

,安装依赖,重新

make

,仍然失败,提醒缺少依赖

jemalloc

。此时选择删除redis目录,即删除c环境下生成的缓存,重新解压,make,提醒缺少

systemd

,安装后继续make,成功,

make install

###server2
ls./install_server.sh
tar  zxf redis-6.2.4.tar.gz
cd redis-6.2.4/
make USE_SYSTEMD=yes			##使用systemd支持进行构建,失败,需要c编译器
yum install -y gcc
make USE_SYSTEMD=yes			##还是需要下载依赖jemalloc
cd
rm -rf redis-6.2.4				##删除c环境下生成的缓存
tar  zxf redis-6.2.4.tar.gz		##重新解压
cd redis-6.2.4/
make USE_SYSTEMD=yes			##重新make
yum install -y systemd-devel	##安装systemd
make USE_SYSTEMD=yes			##重新make
make install
           
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

此时,切换到

utils

目录下,运行自带的安装程序,将服务文件复制到目录自动存放启动文件的配置位置,重载配置文件,重启服务。

cd utils/
./install_server.sh
cp systemd-redis_server.service  /usr/lib/systemd/system/redis.service		##目录自动存放启动文件的配置位置
systemctl daemon-reload 	##重载配置文件
systemctl start redis.service 
           
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

修改

redis.service

文件,建立配置文件和数据文件存放的目录,编辑配置文件,同是

设定server2主机为server1主机的slave端

,即

主从复制

设定,重载配置文件,重启服务。

cd /usr/lib/systemd/system/
vim redis.service 			##注意仔细修改该文件
///
[Unit]
Description=Redis data structure server
Documentation=https://redis.io/documentation
#Before=your_application.service another_example_application.service
#AssertPathExists=/var/lib/redis
Wants=network-online.target
After=network-online.target

[Service]
#ExecStart=/usr/local/bin/redis-server --supervised systemd --daemonize no
## Alternatively, have redis-server load a configuration file:
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
#LimitNOFILE=10032
#NoNewPrivileges=yes
#OOMScoreAdjust=-900
#PrivateTmp=yes
Type=forking
#TimeoutStartSec=infinity
#TimeoutStopSec=infinity
#UMask=0077
#User=redis
#Group=redis
#WorkingDirectory=/var/lib/redis
///
mkdir /etc/redis
mkdir /var/lib/redis
cd 
cd redis-6.2.4/
cp redis.conf /etc/redis/
vim /etc/redis/redis.conf 
///
 302 logfile "/var/log/redis.log"	##日志存放目录
  94 protected-mode no				##关闭保护模式
  75 #bind 127.0.0.1 -::1			##注释,允许网络ip链接redis
 454 dir /var/lib/redis				##数据文件放置的目录
 257 daemonize yes					##以守护进程的方式运行
2052 slaveof 172.25.24.1 6379		##主从复制
///
systemctl daemon-reload 
systemctl restart redis
           
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

此时在

server1

主机上插入数据,可以在

server2

主机上看到,即主从复制设定成功。

###server1
redis-cli
> set name westos
> get name

###server2
redis-cli
> get name
           
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

三、redis常用指令使用指南

redis常用指令:
config get *				//查看配置
select 1					//选择数据库
flushdb           	//清空当前数据库
flushall            	//清空所有数据库
move key 1        		//移动key
del key						//删除
rename oldkey newkey   	//改名
expire key 10       	//设置过期时间
persist key          	//设置持久化
keys user*          	//查询
exists key         	//判断是否存在
           

实验:

###server2
[[email protected] system]# redis-cli
127.0.0.1:6379> get name
"westos"
127.0.0.1:6379> select 1				##选择数据库
OK
127.0.0.1:6379[1]> get name
(nil)
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> get name
"westos"
127.0.0.1:6379> set user zxc
(error) READONLY You can't write against a read only replica.	##slave端只读
           
###server1
[[email protected] redis]# redis-cli
127.0.0.1:6379> select 1		##选择数据库
OK
127.0.0.1:6379[1]> set user zxc
OK
127.0.0.1:6379[1]> get user
"zxc"
127.0.0.1:6379[1]> FLUSHDB		##清空当前数据库
OK
127.0.0.1:6379[1]> get user		##为空
(nil)	
127.0.0.1:6379[1]> FLUSHALL		##清空所有数据库
OK
127.0.0.1:6379[1]> SELECT 0
OK
127.0.0.1:6379> get name		##为空
(nil)
127.0.0.1:6379> set name westos
OK
127.0.0.1:6379> EXPIRE name 5	##设置过期时间
(integer) 1
127.0.0.1:6379> get name
"westos"
...wait
127.0.0.1:6379> get name		##5s后过期
(nil)
127.0.0.1:6379> set user1 qwe
OK
127.0.0.1:6379> set user2 asd
OK
127.0.0.1:6379> set user3 zxc
OK
127.0.0.1:6379> keys user*		##查询
1) "user3"
2) "user2"
3) "user1"
127.0.0.1:6379> EXISTS user1	##判断是否存在
(integer) 1						##1为存在
127.0.0.1:6379> EXISTS user
(integer) 0						##0为不存在
           

四、redis主从自动切换(基于sentinel)

Sentinel(哨兵)是用于监控redis集群中Master状态的工具,是Redis 的高可用性解决方案,sentinel哨兵模式已经被集成在redis2.4之后的版本中。sentinel是redis高可用的解决方案,sentinel系统可以监视一个或者多个redis master服务,以及这些master服务的所有从服务;当某个master服务下线时,自动将该master下的某个从服务升级为master服务替代已下线的master服务继续处理请求。

sentinel可以让redis实现主从复制,当一个集群中的master失效之后,sentinel可以选举出一个新的master用于自动接替master的工作,集群中的其他redis服务器自动指向新的master同步数据。一般建议sentinel采取奇数台,防止某一台sentinel无法连接到master导致误切换。

原理:

一主两从的情况下,当master与两个slave或因网络关系断掉的情况下,客户端并不知道master失联,会持续写入数据,但此时slave端已经不能复制数据。

slave会选举一个变成新的master,形成新的主从关系。

如果此时master恢复,重新加入主从关系,会转为一个新的slave,但因为超时连接,会清除自己的所有数据,那么客户端写入的数据就会丢失。

如果需要解决此问题,则需要两个slave同时认定不能连接master,或者,超过设定时间不能连接,则此时master端会拒绝客户端继续写入,那么重新接入变成slave时就不会造成数据丢失。

Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

实验开始~

在server1主机将redis复制至server3。

scp redis-6.2.4.tar.gz server3:
           

在server3主机进行配置。解压,安装gcc,make,删除c环境下生成的缓存,重新解压,make install,修改安装文件,运行自带的安装程序。与前面基本一致,不赘述。

###server3
ls
tar  zxf redis-6.2.4.tar.gz
cd redis-6.2.4/
make
yum install -y gcc
make
cd
rm -rf redis-6.2.4				##删除c环境下生成的缓存
tar  zxf redis-6.2.4.tar.gz		##重新解压
cd redis-6.2.4/
make
make install
cd utils/
vim  install_server.sh 
///
#if [ "${_pid_1_exe##*/}" = systemd ]
#then
#       echo "This systems seems to use systemd."
#       echo "Please take a look at the provided example service unit files in this directory, and adapt and install them. Sorry!"
#       exit 1
#fi
///
./install_server.sh
           
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

修改配置文件,重启服务,进入

redis

info

可以看到

role:slave

master_host:172.25.24.1

,即,

当前主机server3为server1的从机

vim /etc/redis/6379.conf 
///
2052 slaveof 172.25.24.1 6379
  94 protected-mode no
  75 #bind 127.0.0.1 -::1
///
/etc/init.d/redis_6379 restart
redis-cli
> info			##role:slave  master_host:172.25.24.1
           
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

server1

主机中,配置

sentinel

,并复制到server2和server3中。

配置哨兵模式,即高可用
###server1		
cd redis-6.2.4/
cp sentinel.conf /etc/redis/
cd /etc/redis/
vim sentinel.conf 
///
sentinel monitor mymaster 172.25.24.1 6379 2	##master为server1,2表示需要两票通过,这台主机就被认定宕掉
sentinel down-after-milliseconds mymaster 10000	##连接超时为10s
///
scp sentinel.conf server2:/etc/redis/
scp sentinel.conf server3:/etc/redis/
redis-sentinel /etc/redis/sentinel.conf 		##可以看到两个slave端
           
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

此时在server2和server3,可以看到一个master和两个slave端,并且相互连接。

###server2 & server3
redis-sentinel /etc/redis/sentinel.conf	
           
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

重新连接一个server1,

info

查看当前为master,有两个slave端,然后关闭当前主机。

###server1(重新ssh一个)
redis-cli
> info		##role:master   connected_slaves:2
> shutdown
           
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

在原来的server1中,可以看到本机down,并且新的slave为1和3,即新的master为2,而且此时的slave1是挂掉的。

Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

在新的server1中,连接到server2,info查看到当前为master,有一个slave端,因为server1当前为挂掉状态。

###server1(新)
redis-cli -h 172.25.24.2	##连接到2
> info 						##可以看到role:master connected_slaves:1,一个slave端
           
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

重新开启server1,info查看,当前为slave状态,并且master端为server2主机。即就是,当master宕机时,sentinel自动切换master主机成功。

/etc/init.d/redis_6379 start
redis-cli
> info 		##role:slave   master_host:172.25.24.2,当前为slave,master为2
           
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

五、集群

1、集群构建

1)手动构建

在server1主机(master),重启redis,开启AOF模式,建立medis目录,并建立集群7001~7006目录,切入7001,修改配置文件,启动服务。将配置文件复制到其他几个实例目录中,根据情况做修改。

###server1(master)
/etc/init.d/redis_6379 restart
vim /etc/redis/6379.conf
///
appendonly yes						##开启AOF模式
///
cd /usr/local
mkdir redis
cd redis/
mkdir 700{1..6}
cd 7001
vim redis.conf
///
port 7001
cluster-enabled yes					##开启集群
cluster-config-file nodes.conf		##集群配置文件
cluster-node-timeout 5000			##节点超时
appendonly yes						##开启AOF模式
daemonize yes						##用守护线程的方式启动
///
redis-server redis.conf 			##启动服务
ps ax								##redis-server *:7001 [cluster]
cp redis.conf ../7002/				##复制配置文件到7002
cp redis.conf ../7003/
cp redis.conf ../7004/
cp redis.conf ../7005/
cp redis.conf ../7006/

cd ..
cd 7002								##同样的配置
vim redis.conf 
///
port 7002
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes
///
redis-server redis.conf 

7003~7006相同
ps ax
           

重启

redis

Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

修改配置文件,设定开启

AOF

模式。

Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

建立集群目录,修改实例7001的配置文件。

Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

7001

配置文件内容。

Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

ps

查看是否设定成功。

Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

复制配置文件到其他实例。

Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

修改实例7002配置文件内容。

Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

7002

配置文件内容。

Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

7003~7006相同配置。

Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

ps

查看。

Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

使用

redis-cli

来进行集群的交互,使用客户端连接任意一个节点,使用

-c

表示以集群的方式登录,

-p

指定端口。info查看,当前为master,没有slave端。创建集群主从节点,

–cluster-replicas

参数为数字,

1

表示每个主节点需要1个从节点。然后检查集群,查看集群信息。

redis-cli -c -p 7001
> info
redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 --cluster-replicas 1
redis-cli --cluster check 127.0.0.1:7001	##检查集群
redis-cli --cluster info 127.0.0.1:7001		##集群信息查看
           
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

2)脚本构建

cd
cd redis-6.2.4/
cd utils/create-cluster/
./create-cluster start		##开启实例Starting 30001~30006
ps ax
./create-cluster stop		##停止所有实例,使用手动构建的集群来做接下来的实验
ps ax
           
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

2、自动切换

由上图可知,

7004为7002的slave

。当连接7002端口,并关掉当前节点,7004会自动切换为主节点,此时没有从节点。开启server2,此时为从节点,检查集群,可以看到7004有一个从节点。

redis-cli -c -p 7002	
> SHUTDOWN
ps ax										##7002消失
redis-cli --cluster check 127.0.0.1:7001	##7004 0 slaves
cd ..
cd 7002
redis-server redis.conf 
ps ax										##redis-server *:7002 [cluster]
redis-cli --cluster check 127.0.0.1:7001	##7004 1 slaves为7002
           
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

3、添加节点和分片

先和之前一样创建两个节点。

cd ..
mkdir 700{7,8}
cd 7007
cp ../7001/redis.conf .
vim redis.conf 
///
port 7007
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes
///
redis-server redis.conf 

7008相同
ps ax
           
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

7007

节点加入集群中,但是并没有分配slot,所以这个节点并没有真正的开始分担集群工作,所以要进行分片。重新分片基本上意味着将哈希槽从一组节点移动到另一组节点,并且像群集创建一样。

redis-cli --cluster add-node 127.0.0.1:7007 127.0.0.1:7001	
##将节点加入了集群中,但是并没有分配slot,所以这个节点并没有真正的开始分担集群工作
redis-cli --cluster check 127.0.0.1:7001	
##7007 0 slaves slots: (0 slots) master

redis-cli --cluster reshard 127.0.0.1:7001								##重新分片
^^^^^^^^^^^^^^^^^^^分片操作
How many slots do you want to move (from 1 to 16384)? 1000				##移动的插槽数量
What is the receiving node ID?41719c77f58af0a4bda6e5c13a48653fff8a80be	##接收节点的ID
Source node #1: all	
##从哪些节点获取这些密钥,键入all以从所有其他主节点获取一些哈希槽
Do you want to proceed with the proposed reshard plan (yes/no)? yes		##确定是否要继续重新分片,输入yes
^^^^^^^^^^^^^^^^^^^
           
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

检查集群,此时

7007

节点有1000哈希槽,没有从节点,于是把

7008

节点加入到

7001

节点的集群中,并且当做

node_id

为 41719c77f58af0a4bda6e5c13a48653fff8a80be的从节点。如果不指定

--cluster-master-id

会随机分配到任意一个主节点。检查集群,此时7007有一个从节点。

redis-cli --cluster check 127.0.0.1:7001	
##7007 1000 slots | 0 slaves
redis-cli --cluster add-node 127.0.0.1:7008 127.0.0.1:7001 --cluster-slave --cluster-master-id 41719c77f58af0a4bda6e5c13a48653fff8a80be	
##把7008 节点加入到7001 节点的集群中,并且当做node_id为 41719c77f58af0a4bda6e5c13a48653fff8a80be的从节点。
##如果不指定 --cluster-master-id 会随机分配到任意一个主节点。
redis-cli --cluster check 127.0.0.1:7001	
##7007  1 slaves
           
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

六、redis+mysql 即 Redis作mysql的缓存服务器

server1

主机安装进程管理工具,便于使用

killall

命令,关掉

redis

所有进程。

yum install -y psmisc	##便于使用killall命令
killall redis-server
ps ax					##没有redis且nginx和php正常
           

补充:

Psmisc

的内容

安装的程序: fuser, killall, pstree, pstree.x11(pstree)

程序 用法
fuser 报告使用所给文件或文件系统的进程的进程ID(PID)。
killall 通过进程名来终止进程,它发送消息到所有正在运行任意所给指令的进程。
oldfuser 报告使用所给文件或文件系统的进程的进程ID(PID)。
pstree 以目录树的形式显示所有正在运行的进程
pstree.x11 同 pstree ,只是它在退出前要求确认

server3

主机,停掉

rdis

,并且取消开机自启。删除

redis

环境变量并且生效。

/etc/init.d/redis_6379 stop
chkconfig redis_6379 off		##取消开机自启
vim .bash_profile
///
PATH=$PATH:$HOME/bin
///
source .bash_profile 
           
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

安装

mariadb

。还原

mysql

的配置文件,删除mysql所有数据文件,开启

mariadb

yum install -y mariadb-server.x86_64 
vim /etc/my.cnf
///
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
[mysqld_safe]
log-error=/var/lib/mysql/mysqld.log
pid-file=/var/lib/mysql/mysqld.pid
///
cd /data/mysql/
rm -rf *
systemctl start mariadb
           
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

server2

主机开启

redis

info

查看信息,当前为

server1的从机

。修改配置文件,删除关于主从的设定,重启

redis

info

查看此时为

master

主机。

###server2
systemctl start redis
redis-cli
> info						##role:slave  master_host:172.25.24.1
vim /etc/redis/redis.conf 
///
replicaof 172.25.24.1 6379	##删除这一条
///
systemctl restart redis
redis-cli
> info						##role:master  connected_slaves:0
           
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

在server1主机,修改测试页内容,修改主从ip。

###server1
cd /usr/local/nginx/html/
> cd pub/docs/redis/
> get test.php
vim test.php
///
  3         $redis->connect('172.25.24.2',6379)
 10                         $connect = mysql_connect('172.25.24.3','redis','westos');
///
           
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

test.php

源码

<?php
        $redis = new Redis();
        $redis->connect('127.0.0.1',6379) or die ("could net connect redis server");
  #      $query = "select * from test limit 9";
        $query = "select * from test";
        for ($key = 1; $key < 10; $key++)
        {
                if (!$redis->get($key))
                {
                        $connect = mysql_connect('127.0.0.1','redis','westos');
                        mysql_select_db(test);
                        $result = mysql_query($query);
                        //如果没有找到$key,就将该查询sql的结果缓存到redis
                        while ($row = mysql_fetch_assoc($result))
                        {
                                $redis->set($row['id'],$row['name']);
                        }
                        $myserver = 'mysql';
                        break;
                }
                else
                {
                        $myserver = "redis";
                        $data[$key] = $redis->get($key);
                }
        } 
        echo $myserver;
        echo "<br>";
        for ($key = 1; $key < 10; $key++)
        {
                echo "number is <b><font color=#FF0000>$key</font></b>";
                echo "<br>";
                echo "name is <b><font color=#FF0000>$data[$key]</font></b>";
                echo "<br>";
        }
?>
           

server3

,进入数据库,可以看到

test

库,导入一个

sql

文件,是test库的内容。进入数据库,可以看到导入的数据,给授权。

###server3
cd
mysql
> show databases;			##test
lftp 172.25.254.250
> cd pub/docs/redis/
> get test.sql 
mysql < test.sql
mysql
> use test
> show tables;
> select * from test;		##test1~test9
> grant all on test.* to [email protected]'%' identified by 'westos';
           
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步Linux企业化运维Linux企业化运维–(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

test.sql

源码

use test;
CREATE TABLE `test` (`id` int(7) NOT NULL AUTO_INCREMENT, `name` char(8) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `test` VALUES (1,'test1'),(2,'test2'),(3,'test3'),(4,'test4'),(5,'test5'),(6,'test6'),(7,'test7'),(8,'test8'),(9,'test9');

#DELIMITER $$
#CREATE TRIGGER datatoredis AFTER UPDATE ON test FOR EACH ROW BEGIN
#    SET @RECV=gman_do_background('syncToRedis', json_object(NEW.id as `id`, NEW.name as `name`)); 
#  END$$
#DELIMITER ;