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 #看该的名字是否同步