热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

LVS之DR模型搭建wordpress服务及会话持久与绑定

一、概要1、概述上一篇我们测试了基于LVSNAT模型搭建wordpress服务,以及简单说明了LVS-NAT,LVS-DR等模型的概念;由于LVS-NAT模型的负载有

一、概要

1、概述
上一篇我们测试了基于LVS NAT模型搭建wordpress服务,以及简单说明了LVS-NAT,LVS-DR等模型的概念;由于LVS-NAT模型的负载有一个缺陷,就是所有请求与响应都需要通过DR,所以在大并发下容易出现瓶颈,而LVS-DR模型就很好的解决了这个问题;

2、LVS-DR模型:
直接路由,通过为请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目标IP/PORT均保持不变;

3、LVS-DR模型特点:
Director和各RS都得配置使用VIP;
(1) 确保前端路由器将目标IP为VIP的请求报文发往Director:
在RS上修改内核参数以限制arp通告及应答级别即修改内核arp_announce,arp_ignore参数;
(2) RS的RIP可以使用私网地址,也可以是公网地址;RIP与DIP在同一IP网络;RIP的网关不能指向DIP,以确保响应报文不会经由Director;
(3) RS跟Director要在同一个物理网络;
(4) 请求报文要经由Director,但响应不能经由Director,而是由RS直接发往Client;
(5) 不支持端口映射;

4、本次测试拓扑结构
LVS之DR模型搭建wordpress服务及会话持久与绑定

以上涉及到的NFS共享存储&#xff0c;MySQL&#xff0c;nginx&#xff0c;php部署&#xff0c;本篇将不在详细给出部署步骤&#xff0c;可以参考上一篇<手把手基于LVS负载均衡搭建wordpress服务>请添加链接描述

二、LVS-DR模型配置

1、RS基础配置
a、挂载NFS
tail -n 5 /etc/rc.local

if ping -c 2 172.16.0.254
thenmount -t nfs 172.16.0.254:/data1/NFS2 /data1/web/WordPress
fi

b、PHP&#xff0c;nginx,mysql配置
具体配置参考之前教程

# php -v
PHP 5.4.16 (cli) (built: Nov 6 2016 00:29:02)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
#nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
#数据库授权访问&#xff1a;
> grant all privileges on *.* to root&#64;&#39;172.16.0.%&#39; identified by "redhat";
Query OK, 0 rows affected (0.00 sec)
#创建数据库wordpress_dr
> create database wordpress_dr charset&#61;utf8;
Query OK, 1 row affected (0.00 sec)

2、RS网络内核参数配置

修改内核参数通告与响应级别
作用描述:
由于用户请求报文首先到达director上VIP&#xff0c;DR调度到某一RS&#xff0c;RS再直接响应用户;所以DR 和RS都配置有VIP地址且在同一个网段&#xff0c;势必造成冲突&#xff0c;所以要把RS上arp广播通告给阻断,来确保用户请求来时&#xff0c;只有DR响应&#xff0c;而其他RS上的VIP不响应&#xff0c;等DR调度到给RS时再响应客户端用户&#xff08;使用自己的VIP和目标的CIP响应&#xff09;;

配置RS的lo接口VIP地址172.16.0.99

#ifconfig lo:0 172.16.0.99 netmask 255.255.255.255 broadcast 172.16.0.99 up
#ifconfig
lo:0: flags&#61;73 mtu 65536inet 172.16.0.99 netmask 255.255.255.255loop txqueuelen 1 (Local Loopback)

修改RS两个接口通告模式与响应级别&#xff1a;

#仅是把发往自己接口请求给予响应&#xff0c;默认是0表示不管来自那个接口&#xff0c;只要本地有这个ip都给予响应
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore #仅把自己接口向外通告&#xff0c;默认是0表示开机时把自己所有的ip向外通告
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

为了便于配置参数写成以下脚本
#cat setarp.sh

#!/bin/bash
case $1 in
start)echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignoreecho 1 > /proc/sys/net/ipv4/conf/lo/arp_ignoreecho 2 > /proc/sys/net/ipv4/conf/all/arp_announceecho 2 > /proc/sys/net/ipv4/conf/lo/arp_announce;;stop)echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignoreecho 0 > /proc/sys/net/ipv4/conf/lo/arp_ignoreecho 0 > /proc/sys/net/ipv4/conf/all/arp_announceecho 0 > /proc/sys/net/ipv4/conf/lo/arp_announce;;*)echo "USAGE: $(basename $0) start|stop";;
esac

分别在两台RS上运行脚本;

3、修改RS路由
修改RS路由的目的就是但DR把用户请求的报文调度到某RS时&#xff0c;由于VIP是配置在RS的回环lo:0接口上&#xff0c;RS的直接通过 VIP地址响应给客户端用户&#xff0c;所以需要 经过lo:0网卡出去响应&#xff0c;所以需要添加路由

添加之前路由
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.16.0.1 0.0.0.0 UG 100 0 0 ens33
172.16.0.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33#添加主机路由
[root&#64;rs1 ~]# route add -host 172.16.0.99 dev lo:0#查看
[root&#64;rs1 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.16.0.1 0.0.0.0 UG 100 0 0 ens33
172.16.0.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
172.16.0.99 0.0.0.0 255.255.255.255 UH 0 0 0 lo

4、启动RS各服务 
RS01配置wordpress
#cat /etc/nginx/conf.d/wordpress.conf

server{
listen 80;
server_name 172.16.0.7;
root /data1/web/WordPress;
index index.html index.php;location ~ \.php$ {fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}
}

RS02配置wordpress
#cat /etc/nginx/conf.d/wordpress.conf

server{
listen 80;
server_name 172.16.0.8;
root /data1/web/WordPress;
index index.html index.php;location ~ \.php$ {fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}
}

#systemctl start nginx
#systemctl start php-fpm

到此两台RS配置wordpress完成~

5、安装配置wordpress
由于之前配置是基于nat 172.16.0.6的ip安装wordpress,所以本次需要 重新下载安装配置&#xff0c;以下在NFS服务器上操作

##下载
[root&#64;publicsrvs]# wget https://cn.wordpress.org/wordpress-4.9.1-zh_CN.tar.gz
#解压
[root&#64;publicsrvs]# tar xvf wordpress-4.9.1-zh_CN.tar.gz -C /data1/NFS2
[root&#64;publicsrvs]# cd /data1/NFS2/wordpress
[root&#64;publicsrvs]# mv * ../
##修改权限
[root&#64;publicsrvs]# chown nginx.nginx * -R
[root&#64;publicsrvs]# chmod 775 * -R
[root&#64;publicsrvs]#cp wp-config-sample.php wp-config.php
#配置数据连接信息
[root&#64;publicsrvs]# cat wp-config.php
/** WordPress数据库的名称 */
define(&#39;DB_NAME&#39;, &#39;wordpress_dr&#39;);/** MySQL数据库用户名 */
define(&#39;DB_USER&#39;, &#39;root&#39;);/** MySQL数据库密码 */
define(&#39;DB_PASSWORD&#39;, &#39;redhat&#39;);/** MySQL主机 */
define(&#39;DB_HOST&#39;, &#39;172.16.0.254&#39;);/** 创建数据表时默认的文字编码 */
define(&#39;DB_CHARSET&#39;, &#39;utf8&#39;);

5、DR配置
a、配置VIP在物理网卡上

[root&#64;dr ~]# ifconfig ens33:0 172.16.0.99 netmask 255.255.255.255 broadcast 172.16.0.99 up

b、安装配置ipvs

[root&#64;dr ~]# yum install ipvsadm -y

c、添加集群及节点

[root&#64;dr ~]# ipvsadm -A -t 172.16.0.99:80 -s sh #sh用于绑定会话
[root&#64;dr ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size&#61;4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.16.0.99:80 sh[root&#64;dr ~]# ipvsadm -a -t 172.16.0.99:80 -r 172.16.0.7 -g #-g为DR模型
[root&#64;dr ~]# ipvsadm -a -t 172.16.0.99:80 -r 172.16.0.8 -g
[root&#64;dr ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size&#61;4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.16.0.99:80 sh-> 172.16.0.7:80 Route 1 0 0 -> 172.16.0.8:80 Route 1 0 0

6、安装wordpress
http://172.16.0.99
如图&#xff1a;
LVS之DR模型搭建wordpress服务及会话持久与绑定
点安装wordpress
如图提示安装成功
LVS之DR模型搭建wordpress服务及会话持久与绑定

点登录如图&#xff1a;
LVS之DR模型搭建wordpress服务及会话持久与绑定
wordpress安装成功
至于写文章以及上传图片时注意的事项和之前 LVS-nat下部署一样;这里就不做演示&#xff01;
最终用admin写了一个测试文章插入图片,创建一个san用户进行登录访问效果如下&#xff1a;
LVS之DR模型搭建wordpress服务及会话持久与绑定

到这里通过 LVS-DR模型部署wordpress完成 &#xff01;
但这里有一些问题&#xff1a;
a、如果 一个RS宕机&#xff0c;按照上面的sh会话绑定&#xff0c;将出导致a用户访问时可能就会一直访问不了&#xff0c;需要在DR上去除这个RS节点&#xff01;
b、除了sh会话绑定还有没有别的方案&#xff1f;
c、当宕机的RS恢复时如果自动添加到可用的节点&#xff1f;
d、RS意外重启是否能自动 恢复&#xff1f;

三、优化LVS-DR模型方案

对于以上的问题我们通过以下一一解决
针对RS节点出现故障&#xff0c;DR上需要能自动检测到问题RS,并将其从集群中&#xff08;ipvs规则中&#xff09;去除&#xff0c;等恢复时再添加到集群;这里通过 ldirectord服务实现
1、安装ldriectord服务

#下载
[root&#64;dr ~]# wget https://rpmfind.net/linux/fedora/linux/releases/25/Everything/x86_64/os/Packages/l/ldirectord-3.9.7-4.fc24.x86_64.rpm#安装
[root&#64;dr ~]# yum install ./ldirectord-3.9.7-4.fc24.x86_64.rpm
[root&#64;dr ~]# cp /usr/share/doc/ldirectord/ldirectord.cf /etc/ha.d/ldirectord.cf


2、配置ldirectord

为了符合配置规范&#xff0c;当两台RS都不能访问时让DR做出提示
因此dr上安装 nginx显示 维护 页

[root&#64;dr ~]# yum install nginx -y
[root&#64;dr ~]#vim /etc/nginx.conf
修改42行为
root /data/nginx/html;[root&#64;dr ~]# mkdir -pv /data/nginx/html
[root&#64;dr ~]# echo "

Sorry,Maintanance Time~

" >/data/nginx/html/index.html
[root&#64;dr ~]# systemctl restart nginx#DR上测试
[root&#64;dr nginx]# curl http://localhost

Sorry,Maintanance Time~


在RS上(NFS下wordpress上创建一个check.html文件,用于ldirectord服务检测使用)

#cd /data1/web/WordPress
#cat check.html

check_ok

配置ldirectord
#cat /etc/ha.d/ldirectod.cf

# Global Directives
checktimeout&#61;3 #检测超时时间
checkinterval&#61;1 #检查时间间隔
#fallback&#61;127.0.0.1:80
#fallback6&#61;[::1]:80
autoreload&#61;yes #有变动 是否自动加载
logfile&#61;"/var/log/ldirectord.log" #记录日志 位置
quiescent&#61;no# Sample for an http virtual service
virtual&#61;172.16.0.99:80 #集群real&#61;172.16.0.7:80 gate #节点及模式 real&#61;172.16.0.8:80 gatefallback&#61;127.0.0.1:80 gate #本地响应节点service&#61;http #服务名scheduler&#61;sh #算法#persistent&#61;600#netmask&#61;255.255.255.255protocol&#61;tcp #协议checktype&#61;negotiate checkport&#61;80 #检测端口request&#61;"check.html" #检测文件夹receive&#61;"check_ok #检测内容

#清空ipvs规则并启动ldirectord服务

[root&#64;dr ha.d]# ipvsadm -C
[root&#64;dr ha.d]# systemctl start ldirectord
[root&#64;dr ha.d]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size&#61;4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.16.0.99:80 sh-> 172.16.0.7:80 Route 1 0 0 -> 172.16.0.8:80 Route 1 0 0

3、模拟RS岩机
#岩机前访问&#xff0c;可以看到访问由172.16.0.8提供~

[root&#64;dr ha.d]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size&#61;4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.16.0.99:80 sh
-> 172.16.0.7:80 Route 1 0 0
-> 172.16.0.8:80 Route 1 8 0

#把172.16.0.8 RS服务shutdown

[root&#64;rs2 conf.d]# systemctl stop nginx
[root&#64;rs2 conf.d]# systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy serverLoaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)Active: inactive (dead) since Sat 2018-01-06 18:32:52 CST; 9s ago

再访问http://172.16.0.99 以发现依然正常访问

LVS之DR模型搭建wordpress服务及会话持久与绑定
再看DR上ipvs规则

[root&#64;dr ha.d]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size&#61;4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.16.0.99:80 sh
-> 172.16.0.7:80 Route 1 2 0

可以看到 RS2 (172.16.0.8)已经被ldirectord删除,同时访问由172.16.0.7提供~

再把RS1&#xff08;172.16.0.7&#xff09;服务stop再查看 DR ipvs规则

[root&#64;dr ha.d]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size&#61;4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.16.0.99:80 sh
-> 127.0.0.1:80 Route 1 0 0

再次访问http://172.16.0.99 出现sorry页
LVS之DR模型搭建wordpress服务及会话持久与绑定

可以看到已经达到 预期效果~&#xff01;
再次启动两台RS nginx服务~
查看DR上的ipvs规则状态

[root&#64;dr ha.d]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size&#61;4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.16.0.99:80 sh
-> 172.16.0.7:80 Route 1 0 0
-> 172.16.0.8:80 Route 1 6 0

再次访问http://172.16.0.99
LVS之DR模型搭建wordpress服务及会话持久与绑定

至此基于ldirectord服务检查RS健康并自动管理节点上下线完成&#xff01;

4、优化DR及RS脚本
a、RS配置
为了达到 RS意外关机重启&#xff0c;让节点能自动 配置达到上线标准
配置网络参数和配置VIP脚本
#cat setarp.sh

#!/bin/bash
vip&#61;&#39;172.16.0.99&#39;
mask&#61;&#39;255.255.255.255&#39;
iface&#61;&#39;lo:0&#39;
case $1 in
start)echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignoreecho 1 > /proc/sys/net/ipv4/conf/lo/arp_ignoreecho 2 > /proc/sys/net/ipv4/conf/all/arp_announceecho 2 > /proc/sys/net/ipv4/conf/lo/arp_announceifconfig $iface $vip netmask $mask broadcast $vip uproute add -host $vip dev $iface;;stop)ifconfig $iface downecho 0 > /proc/sys/net/ipv4/conf/all/arp_ignoreecho 0 > /proc/sys/net/ipv4/conf/lo/arp_ignoreecho 0 > /proc/sys/net/ipv4/conf/all/arp_announceecho 0 > /proc/sys/net/ipv4/conf/lo/arp_announce;;*)echo "USAGE: $(basename $0) start|stop";;
esac

添加开机自动 运行
#chmod &#43;x /etc/rc.local
tail -f 10 /etc/rc.local

#自动挂载NFS
if ping -c 2 172.16.0.254
thenmount -t nfs 172.16.0.254:/data1/NFS2 /data1/web/WordPress
fi
#自动配置网络
/root/setarp.sh start

#systemctl enable nginx

b、DR配置脚本
[root&#64;dr ha.d]# systemctl enable ldirectord
#cat setDrVip.sh

[root&#64;dr ~]# cat setDrVip.sh
#!/bin/bash
#
vip&#61;&#39;172.16.0.99&#39;
iface&#61;&#39;ens33:0&#39;
mask&#61;&#39;255.255.255.255&#39;
port&#61;&#39;80&#39;
rs1&#61;&#39;172.16.0.7&#39;
rs2&#61;&#39;172.16.0.8&#39;
scheduler&#61;&#39;rr&#39;
type&#61;&#39;-g&#39;
case $1 in
start)
ifconfig $iface $vip netmask $mask broadcast $vip up
iptables -Fipvsadm -A -t ${vip}:${port} -s $scheduler
ipvsadm -a -t ${vip}:${port} -r ${rs1} $type -w 1
ipvsadm -a -t ${vip}:${port} -r ${rs2} $type -w 1;;
stop)
ipvsadm -C
ifconfig $iface down;;
*)
echo "Usage $(basename $0) start|stop"
exit 1;;
esac

到此一个基于LVS DR模型 和ldirectord服务的wordpress服务 完成 &#xff01;
另外本次测试过程繁多&#xff0c;不免有遗漏之处!欢迎交流指正~










本文转自 dyc2005 51CTO博客&#xff0c;原文链接&#xff1a;http://blog.51cto.com/dyc2005/2058177&#xff0c;如需转载请自行联系原作者



推荐阅读
  • 域名解析系统DNS
    文章目录前言一、域名系统概述二、因特网的域名结构三、域名服务器1.根域名服务器2.顶级域名服务器(TLD,top-leveldomain)3.权威(Authoritative)域名 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 如何使用PLEX播放组播、抓取信号源以及设置路由器
    本文介绍了如何使用PLEX播放组播、抓取信号源以及设置路由器。通过使用xTeve软件和M3U源,用户可以在PLEX上实现直播功能,并且可以自动匹配EPG信息和定时录制节目。同时,本文还提供了从华为itv盒子提取组播地址的方法以及如何在ASUS固件路由器上设置IPTV。在使用PLEX之前,建议先使用VLC测试是否可以正常播放UDPXY转发的iptv流。最后,本文还介绍了docker版xTeve的设置方法。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
author-avatar
仁寿戴氏
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有