千家信息网

mysql数据库推送平台

发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,与其他CDN服务商相比,CDN的主要优势包括稳定快速、性价比高、简单易用、高效智能。比较多的用户会问到稳定快速这个优点,一般来说,的CDN特点是分担源站压力,避免网络拥塞,确保在不同区域、不同场景下加
千家信息网最后更新 2025年02月23日mysql数据库推送平台

与其他CDN服务商相比,CDN的主要优势包括稳定快速、性价比高、简单易用、高效智能。比较多的用户会问到稳定快速这个优点,一般来说,的CDN特点是分担源站压力,避免网络拥塞,确保在不同区域、不同场景下加速网站内容的分发,提高资源访问速度。以下给大家介绍下mysql数据库推送平台与CDN。

sendfile(数据直接从 kernal的buffer出去)适合小文件
Aio(nginx)全异步(与事件驱动io的区别是:数据会到达mem才会通知,其实也不需要通知 可以直接返回给客户端) 支持:mmap event drive(处理大文件)

上一回说到,在数据库修改后,redis里面的数据不能做到自动更新,必须手动删除更改过的数据 根据以上问题我们做出如下改进:
所以接下来就要通过 mysql 触发器将改变的数据同步到 redis 中
配置 gearman 实现数据同步
Gearman 是一个支持分布式的任务分发框架:
Gearman Job Server: Gearman 核心程序,需要编译安装并以守护进程形式运行在后台。
Gearman Client:可以理解为任务的请求者。
Gearman Worker:任务的真正执行者,一般需要自己编写具体逻辑并通过守护进程方式
运行,Gearman Worker 接收到 GearmanClient 传递的任务内容后,会按顺序处理。

大致流程:下面要编写的 mysql 触发器,就相当于 Gearman 的客户端。修改表,插入表就相当于直接
下发任务。然后通过 lib_mysqludf_json UDF 库函数将关系数据映射为 JSON 格式,然后
在通过 gearman-mysql-udf 插件将任务加入到Gearman 的任务队列中,最后通过
redis_worker.php,也就是 Gearman 的worker 端来完成 redis 数据库的更新。

dd1:
cd /root/redis
安装gearman软件包:
yum install gearmand-1.1.8-2.el6.x86_64.rpm libgearman-1.1.8-2.el6.x86_64.rpm
/etc/init.d/php-fpm start
netstat -antlpe

dd1:
安装php的gearman扩展
tar zxf gearman-1.1.2.tgz
cd gearman-1.1.2
phpize
rpm -ivh libgearman-devel-1.1.8-2.el6.x86_64.rpmlibevent-devel-1.4.13-4.el6.x86_64.rpm libevent-doc-1.4.13-4.el6.noarch.rpmlibevent-headers-1.4.13-4.el6.noarch.rpm
./configure
make && make install
cd /etc/php.d/
cp mysql.ini gearman.ini
vim gearman.ini


/etc/init.d/php-fpm restart

查看php已经安装过的扩展:
php -m | grep gearman
php -m | grep mysql
php -m | grep redis


cd redis/
scp gearman-mysql-udf-0.6.tar.gz 172.25.42.12
scp lib_mysqludf_json-master.zip 172.25.42.12:
scp libevent-* libgearman-* 172.25.42.12:


dd3:
/etc/init.d/mysqld start
tar zxf gearman-mysql-udf-0.6.tar.gz
yum install mysql-devel -y
rpm -ivh libgearman-devel-1.1.8-2.el6.x86_64.rpmlibevent-devel-1.4.13-4.el6.x86_64.rpm libevent-doc-1.4.13-4.el6.noarch.rpmlibevent-headers-1.4.13-4.el6.noarch.rpm
cd gearman-mysql-udf-0.6
./configure --libdir=/usr/lib64/mysql/plugin/
make && make install
cd /usr/lib64/mysql/plugin/

进入mysql环境:
注册 UDF 函数
mysql> CREATE FUNCTION gman_do_background RETURNS STRING SONAME
'libgearman_mysql_udf.so';
mysql> CREATE FUNCTION gman_servers_set RETURNS STRINGSONAME
'libgearman_mysql_udf.so';

查看函数
mysql> select * from mysql.func;

安装 lib_mysqludf_json
lib_mysqludf_jsonUDF 库函数将关系数据映射为 JSON 格式。通常,数据库中的数据映射为 JSON 格式,是通过程序来转换的
unzip lib_mysqludf_json-master.zip
cd lib_mysqludf_json-maste
gcc $(mysql_config --cflags) -shared -fPIC -olib_mysqludf_json.so
lib_mysqludf_json.c

查看 mysql 的模块目录:
mysql> show global variables like 'plugin_dir'
拷贝 lib_mysqludf_json.so 模块:
cp lib_mysqludf_json.so /usr/lib64/mysql/plugin/
注册 UDF 函数
mysql> CREATE FUNCTION json_object RETURNS STRING SONAME
'lib_mysqludf_json.so'

查看函数
mysql> select * from mysql.func;

指定 gearman 的服务信息
mysql>SELECT gman_servers_set('172.25.42.10:4730');
编写 mysql 触发器 test.sql


mysql < test.sql
查看触发器
mysql> SHOW TRIGGERS FROM test


dd1:
编写 gearman 的 worker 端
nohup php worker.php &>/dev/null & (后台运行)

测试:
更新 mysql 中的数据


mysql> update test set name='test1' where id=1

mysql> update test set name='dangdang' where id=1


Varnish:高速http缓存:
dd1:
varnish-3.0.5-1.el6.x86_64.rpm varnish-libs-3.0.5-1.el6.x86_64.rpm
rpm -ivh


vim /etc/sysconfig/varnish


cd /etc/varnish/
vim default.vcl


/etc/init.d/varnish start

dd3:/etc/init.d/httpd start

### 通过 varnishadm 手动清除缓存
# varnishadm ban.url .*$
#清除所有
# varnishadm ban.url /index.html
#清除 index.html 页面缓存
# varnishadm ban.url /admin/$
#清除 admin 目录缓存


vim default.vcl
###
查看缓存命中情况
sub vcl_deliver {
if (obj.hits > 0) {
set resp.http.X-Cache = "HIT from westos cache";
}
else {
set resp.http.X-Cache = "MISS from westos cache";
}
return (deliver);
}

测试缓存命中:


定义多个不同域名站点的后端服务器:
backend default {
.host = "172.25.42.12";
.port = "80";
}

backend web {
.host = "172.25.42.11";
.port = "80";
}

sub vcl_recv {
if (req.http.host ~ "^(www.)?dd.org") {
set req.http.host = "www.dd.org";
set req.backend = default;
} elsif (req.http.host ~ "^bbs.dd.org") {
set req.backend = web;
} else {error 404 "westos cache";
}
测试:www.dd.org 和 dd.org 是同一个缓存

而bbs.dd.org是一个缓存


#
当访问 www.dd.org 域名时从 default 上取数据,访问 bbs.dd.org 域名时到web 取数据,访问其他页面报错 //注意:测试主机加解析

负载均衡:(域名负载均衡)
访问www.dd.org 时 两台主机响应它
避免再开一台虚拟机 给dd2 做虚拟主机(一个ip 多个域名)

dd1:

vim default.vcl
director lb round-robin {
{.backend = default;}
{.backend = web;}
}

sub vcl_recv {
if (req.http.host ~ "^(www.)?dd.org") {
set req.http.host = "www.dd.org";
set req.backend = lb;
return (pass); (
测试用)
} elsif (req.http.host ~ "^bbs.dd.org") {
set req.backend = web;
} else {error 404 "westos cache";
}
}


varnish cdn 推送平台 (清空缓存)
#需要安装 php 支持
# unzip bansys.zip -d /var/www/html
# vi /var/www/html/bansys/config.php
#只保留如下设置,其余注释掉
$var_group1 = array(
'host' => array('172.25.42.10'),
'port' => '80',
);
//varnish 群组定义
//对主机列表进行绑定
$VAR_CLUSTER = array(
'www.dd.org' => $var_group1,
);

vim /etc/varnish/default.vcl
/etc/init.d/varnish reload

测试:

如果大家还有什么地方需要了解的可以在官网找我们的CDN技术工程师的,CDN技术工程师在行业内拥有十几年的经验了,所以会比小编回答的更加详细专业。官网链接www.yisu.com

数据 缓存 任务 函数 测试 域名 数据库 主机 触发器 不同 格式 支持 更新 服务 运行 平台 推送 均衡 内容 后台 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 徐州淘金网络技术有限公司 软件开发怎么提高性能 网络安全感悟主题 静安区网络技术咨询服务平均价格 路由器无法解析服务器域名 软件开发可研报告 秋孟网络技术是什么 软件开发能入库存吗 暗黑2各个服务器能互相交易 黄冈市网络安全宣告片 湖南衡阳网络安全 惠州物联网软件开发价格 萧县软件开发技术项目实训中心 丽水协同软件开发 华为服务器有几个共享口和专用口 不存在虚拟机管理服务器 我的世界服务器死亡 构建互联网科技 tcp文件服务器 数据库的等待时间是什么 怎么把云服务器作为手动代理 广东话输入法软件开发 蚂蚁金服软件开发工作怎么样 宝山区良好软件开发服务保障 怎么在电脑做软件开发 浙江北斗卫星授时服务器云主机 软件开发类项目招标 南大通用数据库it技术支持 实施网络安全等级保护具体方案 怎么删除正在使用的数据库
0