redis和mysql的异步更新

redis和mysql如何同步:

一定要确定好master 

--------  (上次实验server3是master)

从真机中把lib_mysqludf_json-master.zip传给server4
scp /home/westos/lib_mysqludf_json-master.zip server4: 

在server2中开启nginx和php-fpm服务
server2:

nginx  #开启nginx
systemctl start  php-fpm.service   #开启php-fpm服务

 server4:【lib_mysqludf_json】

systemctl start mariadb      #开启mariadb服务
ps ax  #查看mariadb服务是否开启
mysql  
--> use test
--> select * from test;   #查看test表

yum list mariadb-devel   #列出mariadb-devel
yum install -y unzip    #下载unzip解压工具
unzip lib_mysqludf_json-master.zip  #解压
cd lib_mysqludf_json-master/
ls
ll
yum install -y gcc   #下载依赖环境
ls
gcc $(mysql_config --cflags) -shared -fPIC -o lib_mysqludf_json.so lib_mysqludf_json.c
ls
ll
cd /usr/lib64/mysql/
ls
ll
cd plugin/
ls
pwd
mysql
> show global variables like 'plugin_dir';

cd
cd lib_mysqludf_json-master/
ls
cp lib_mysqludf_json.so /usr/lib64/mysql/plugin/
cd /usr/lib64/mysql/plugin/
mysql
> CREATE FUNCTION json_object RETURNS STRING SONAME 'lib_mysqludf_json.so';
> select * from mysql.func;    #查看函数


安装 gearman-mysql-udf

从真机中把实验需要的包传给server4:
scp libgearman-* libevent-devel-2.0.21-4.el7.x86_64.rpm server4:
scp gearman-mysql-udf-0.6.tar.gz server4:

 server4:  

 安装 gearman-mysql-udf【这个插件是用来管理调用 Gearman 的分布式的队列】

cd
yum install -y libgearman-* libevent-devel-2.0.21-4.el7.x86_64.rpm  
tar zxf gearman-mysql-udf-0.6.tar.gz
cd gearman-mysql-udf-0.6/
./configure --libdir=/usr/lib64/mysql/plugin/ --with-mysql
make && make install
cd /usr/lib64/mysql/plugin/
ls
cd
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;    #查看函数

 从真机中把实验需要的包传给server2:
scp gearmand-1.1.12-18.el7.x86_64.rpm server2:
scp libgearman-1.1.12-18.el7.x86_64.rpm server2:

server2中:【slave端】 

yum install gearmand-1.1.12-18.el7.x86_64.rpm libgearman-1.1.12-18.el7.x86_64.rpm 
systemctl start gearmand.service   #开启gearmand服务
netstat -anplt    #查看4730端口是否开启

 server4:

mysql
--> SELECT gman_servers_set('172.25.70.2:4730');

#指定 gearman 的服务信息到server2上的4730端口


实现异步更新

 

server4:

vim test.sql  #编写 mysql 触发器
  注释掉2、3行,取消注释5到9行
mysql < test.sql
mysql
--> SHOW TRIGGERS FROM test;     #查看触发器


真机中把需要的文件和包传给server2

 server2:

vim worker.php    #编写 gearman 的 worker 端
   第7行改为:$redis->connect('172.25.70.3', 6379);  #指向ip是master
php -m | grep redis
php -m | grep gearman
yum install -y php-pecl-gearman-1.1.2-1.el7.x86_64.rpm 
php -m | grep gearman
systemctl reload php-fpm   #平滑更新
mv worker.php /usr/local/
which php
php /usr/local/worker.php   #先不要打入后台【ctrl+z打入后台】
ps ax #查看进程  #确保worker.php在后台运行,只有一个进程开启


 

 server4:
mysql
> update test set name='hello' where id=1;   #更新 mysql 中的数据

server3: #一定要在master主机上查看
redis-cli
> get 1 #看该的名字是否同步

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值