redis和mysql数据同步

redis
redis mysql同步
redis持久化
RDB模式,较MBR省磁盘空间

部署lamp架构

server1: 开启redis服务

systemctl start redis
redis-cli
在这里插入图片描述

vim /etc/redis/redis.conf ##编辑配置文件,打开日志,每秒刷新

appendfsync everysec
appendonly yes

在这里插入图片描述
在这里插入图片描述

systemctl restart redis
在这里插入图片描述

cd /var/lib/redis

redis-cli
127.0.0.1:6379> INCR 1
(integer) 1
cat appendonly.aof   ##查看日志
*2
$6
SELECT

在这里插入图片描述

redis-cli
info
role:master
connected_slaves:0

在这里插入图片描述

server2: 部署nginx

server1:
cd /usr/local
rsync -a nginx server2:/usr/local/ ##复制nginx已不属好的nginx文件
在这里插入图片描述

server2:
lftp 172.25.0.250
cd pub/docs/redis
mirror rhel7/
在这里插入图片描述
在这里插入图片描述

yum install php-* libgearman-1.1.12-18.el7.x86_64.rpm libgearman-devel-1.1.12-18.el7.x86_64.rpm libevent-devel-2.0.21-4.el7.x86_64.rpm  
systemctl start php-fpm  ##开启php
ps ax
netstat -antlp  ##查看端口
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      3954/php-fpm: maste 

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

cd /usr/local
ls
cd nginx
cd sbin
pwd
/usr/local/nginx/sbin
vim .bash_profile   ##编辑环境变量
source .bash_profile 
/usr/local/nginx/sbin

在这里插入图片描述
在这里插入图片描述

cd /usr/local/nginx/  ##复制默认配置文件,保持初始状态
cd conf/
cp nginx.conf.default nginx.conf

在这里插入图片描述

vim nginx.conf ##开启php服务

  location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi.conf;
        }

在这里插入图片描述

nginx -t
nginx ##启动nginx

在这里插入图片描述

ps ax
在这里插入图片描述
在这里插入图片描述

cp test.php test.sql /usr/local/nginx/html
在这里插入图片描述

scp test.sql server4:在这里插入图片描述

vim test.php   ##发布文件,redis服务连接主机1,mysql服务连接主机4
 $redis->connect('172.25.9.1',6379
 $connect = mysql_connect('172.25.9.4'

在这里插入图片描述

server4: 安装mariadb

yum install -y mariadb-server
systemctl start mariadb
在这里插入图片描述
在这里插入图片描述

mysql
在这里插入图片描述

vim test.sql 
mysql  ##查看数据库,看test数据库是否存在
 show databases;
 mysql < test.sql

在这里插入图片描述
在这里插入图片描述

mysql
use test
show tables;
select * from test;
 grant all on test.* to redis@'%' identified by 'westos';  ##与数据库文件保持一直,允许redis用户远程登录,密码为westos

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

test:
firefox -> http://172.25.9.2/test.php
第一次数据来源 mysql
第二次数据来源 redis’
在这里插入图片描述

server4:
update test set name=‘westos’; ##更新数据
在这里插入图片描述
在这里插入图片描述

server1:

redis-cli
127.0.0.1:6379> get 1
"test1"
(问题:redis和mysql不同步)
del 1
(integer) 1 ##删除数据
firefox 再次刷新,数据来源,mysql,同步

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

redis mysql数据同步

server4:

lftp 172.25.0.250
yum install unzip -y
unzip lib_mysqludf_json-master.zip 
cd lib_mysqludf_json-master
yum install mariadb-devel.x86_64
yum install gcc -y
gcc $(mysql_config --cflags) -shared -fPIC -o lib_mysqludf_json.so lib_mysqludf_json.c

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

mysql
show global variables like 'plugin_dir';
+---------------+--------------------------+
| Variable_name | Value                    |
+---------------+--------------------------+
| plugin_dir    | /usr/lib64/mysql/plugin/ |
+---------------+--------------------------+

cp lib_mysqludf_json.so /usr/lib64/mysql/plugin/
在这里插入图片描述

 mysql
create function json_object returns string soname
    -> 'lib_mysqludf_json.so';

在这里插入图片描述

cd
lftp 172.25.0.250
 cd pub/docs/redis/
 get gearman-mysql-udf-0.6.tar.gz 
mget libgearman-*
get libevent-devel-2.0.21-4.el7.x86_64.rpm 

tar zxf gearman-mysql-udf-0.6.tar.gz 
yum install libgearman-* libevent-devel-2.0.21-4.el7.x86_64.rpm 

在这里插入图片描述
在这里插入图片描述

cd gearman-mysql-udf-0.6
./configure --libdir=/usr/lib64/mysql/plugin
make
make install

在这里插入图片描述
在这里插入图片描述

cd /usr/lib64/mysql/plugin
ls
在这里插入图片描述

mysql
create function gman_do_background returns string soname 'libgearman_mysql_udf.so';
create function gman_servers_set returns string soname 'libgearman_mysql_udf.so';
select * from mysql.func;
select gman_servers_set('172.25.9.2:4730');

在这里插入图片描述
在这里插入图片描述

vim test.sql

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 ;

mysql < test.sql
在这里插入图片描述

server2:

yum install gearmand-1.1.12-18.el7.x86_64.rpm 
systemctl start gearmand
netstat -antlp
tcp        0      0 0.0.0.0:4730            0.0.0.0:*               LISTEN      4102/gearmand  
vim worker.php 
redis->connect('172.25.9.1', 6379);

nohup php worker.php &

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

test:
server4:

mysql
use test;
 select * from test;
 update test set name='redhat';
select * from test;

在这里插入图片描述

server1:

redis-cli 
127.0.0.1:6379> get 1
"redhat"
127.0.0.1:6379> get 2
"redhat"

在这里插入图片描述

firefox -> http://172.25.9.2/test.php
直接由redis导入

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值