时间:2022-11-03 06:46:06 | 浏览:11375
很多人学习PHP编程的时候,都不知道如何去选择合适的PHP教程。六星教育最近新推出PHP大神进阶班,专门针对需要技术进阶的同学,假如你具备1.2年的工作项目经验,对升职加薪有急切渴望,不满足现有技术水平,都可以来六星教育了解看看。很多程序员在以往的课程中经过学习,大都取得了令自己满意的薪资水平,有一个3k—5k薪资的增长。
为什么六星教育IT教程这么令人满意,今天就让我来为大家分享一篇关于MySQL的技术文,让大家更能直观感受到六星教育PHP教程的魅力。
MySQL5.5之前的版本里面,MySQL的默认采用异步复制,虽然效率高,但主库和从库的数据不一致性的问题很大,例如:网络故障、停电等各种原因,这样非常容易存在:
当主库写入一个事务成功并提交后,但是由于从库网络延迟没有及时接受到主库传输的Binlog日志,恰巧主库突然宕机,那此时从库就可能损失掉这个事务,从而造成主从不一致的状况。
因此官方在MySQL5.5版本后引入了半同步复制的概念
半同步复制的原理:
采用半同步复制,是为了能保证主库上的每一个Binlog事务都被可靠的传输到从库上,主库在每次事务成功提交时,并不会及时反馈给客户端,而是等待其中的一个从库接收到Binlog事务并成功写入中继日志中,从库才会返回commit反馈成功给主库。主库最后做事务成功的提交。
半同步复制保证了binlog事务成功提交后,日志事务可保障写入到主库的binlog日志和从库的的中继日Relay log上,从而进一步保证了数据的一致性。
上图为半同步复制的步骤:
在半同步复制模式下:图1、2、3中任何一个步骤中主库宕机,则事务不会成功提交。从库也不会得到日志,这时的主从复制数据是一致的。
那半同步复制会不会变成异步复制呢?
如果第4步的时,如果网络延迟故障或从库宕机,那么主库的Binlog就无法及时传送事务给从库,这时主库上的事务会等待一段时间,时间长短由参数rpl_semi_master_timeout设置的毫秒数来决定,如果Binlog在这段时间内都无法成功推送到从库上,MySQL将自动把复制模式调整为异步模式,这时事务才能正常返回并提交结果给客户端。
半同步复制很大程度上取决于主从库之间的网络情况,往返时延RTT越小决定了从库的实时性越好。
实施方案:
为更好体现半同步的方案,本次采用一主两从的主从链搭建,而且进行此实验之前我们已经搭建好异步复制的环境了。搭建半同步复制不过是在异步的基础上添加一些插件而已。
172.33.22.30 master
172.33.26.150 slave
172.33.17.200 slave
1、检查一下当前版本数据库是否支持动态扩展,我们这里的版本都是一致的,因此在一台机器上检查即可。
mysql> select @@have_dynamic_loading;
+------------------------+
| @@have_dynamic_loading |
+------------------------+
| YES |
+------------------------+
1 row in set (0.00 sec)
2、确认支持动态添加插件后,再检查下MySQL的$MYSQL/lib/plugin目录下是否存在主库插件“semisync_master.so”和从库插件“semisync_slave.so”。
[root@:vg_adn_tidbCkhsTest /usr/local/mysql/lib/plugin]#ls #这里只列出了一部分而已
adt_null.so libtest_framework.so libtest_sql_lock.so mysqlx.so
authentication_ldap_sasl_client.so libtest_services.so libtest_sql_processlist.so rewrite_example.so
auth_socket.so libtest_services_threaded.so libtest_sql_replication.so rewriter.so
connection_control.so libtest_session_detach.so libtest_sql_shutdown.so semisync_master.so
debug libtest_session_info.so libtest_sql_sqlmode.so semisync_slave.so
group_replication.so libtest_session_in_thd.so libtest_sql_stored_procedures_functions.so test_security_context.so
接下来开始在主库上安装插件
mysql> install plugin rpl_semi_sync_master SONAME "semisync_master.so";
Query OK,0 rows affected (0.00 sec)
紧接着在两个从库上安装插件
MySQL [(none)]> install plugin rpl_semi_sync_slave SONAME "semisync_slave.so";
Query OK, 0 rows affected (0.01 sec)
完成安装后,可以使用语句来查看一下:
mysql> select * from mysql.plugin;
+----------------------+--------------------+
| name | dl |
+----------------------+--------------------+
| rpl_semi_sync_master | semisync_master.so |
+----------------------+--------------------+
1 row in set (0.00 sec)
如上就说明我们已经安装插件成功。并且系统重启的时候也会自动加载该插件,不需要担心。
3、现在需要分别在主库和从库上配置参数打开半同步semi-sync,默认情况下半同步设置不打开的,主库上配置全局参数。
mysql> set global rpl_semi_sync_master_enabled=1;
Query OK, 0 rows affected (0.00 sec)
mysql> set global rpl_semi_sync_master_timeout=10000;
#注意这是毫秒单位,因此这个数是10秒。
Query OK, 0 rows affected (0.00 sec)
两个从库上也需要配置:
MySQL [(none)]> set global rpl_semi_sync_slave_enabled=1;
Query OK, 0 rows affected (0.00 sec)
注意:由于之前已经配置过异步复制,因此在这里需要重启一下从库上的I/O线程。(如果是全新配置的半同步复制则不需要这一步骤。)
MySQL [(none)]> stop slave io_thread;
Query OK, 0 rows affected (0.00 sec)
MySQL [(none)]> start slave io_thread;
Query OK, 0 rows affected (0.00 sec)
如果有多台slave,每台都按照这样子来执行操作。到此,半同步复制就搭建成功了。
在主库上使用下面命令执行以下看看半同步复制的状态信息:
mysql> show status like "%semi_sync%";
+--------------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------------+-------+
| Rpl_semi_sync_master_clients | 2 |
| Rpl_semi_sync_master_net_avg_wait_time | 0 |
| Rpl_semi_sync_master_net_wait_time | 0 |
| Rpl_semi_sync_master_net_waits | 0 |
| Rpl_semi_sync_master_no_times | 0 |
| Rpl_semi_sync_master_no_tx | 0 |
| Rpl_semi_sync_master_status | ON |
| Rpl_semi_sync_master_timefunc_failures | 0 |
| Rpl_semi_sync_master_tx_avg_wait_time | 0 |
| Rpl_semi_sync_master_tx_wait_time | 0 |
| Rpl_semi_sync_master_tx_waits | 0 |
| Rpl_semi_sync_master_wait_pos_backtraverse | 0 |
| Rpl_semi_sync_master_wait_sessions | 0 |
| Rpl_semi_sync_master_yes_tx | 0 |
+--------------------------------------------+-------+
14 rows in set (0.00 sec)
重点关注这三个值:
1、Rpl_semi_sync_master_status:值为ON,表示半同步复制目前处于打开状态。
2、Rpl_semi_sync_master_no_tx:这个值表示当前主库有多少个事务不是半同步模式下从库及时响应的。
3、Rpl_semi_sync_master_yes_tx:这个值表示当前主库上有多少个事务是通过半同步复制到从库的。
日常维护中,可查看这三项值来判断半同步复制是否是正常的。
看完了,是否有触动呢?更多详情资讯可来六星教育了解哦!新班即将开启,心动不如行动,错过后悔一年。
Thinkphp:=> 简介:是由上海顶想公司开发的一款,PHP写成的,开源的MVC框架;官网:http://www.thinkphp.cn下载:https://github.com/top-think/framework 环境要求:
本文主要简析两个国产的PHP框架ThinkPHP与SpeedPHP。通过学习发现,它俩在很多方面有着相似但又不同的地方:1.单一入口,二者都是单一入口文件。每个app都需要一个入口文件,且只能有一个入口文件。ThinkPHP生而就有多app
PHP框架是什么?PHP框架提供了一个用以构建web应用的基本框架,从而简化了用PHP编写web应用程序的流程。这样不但节省开发时间,有助于建立更稳定的应用,而且减少了重复编码的开发。框架还可以帮助初学者建立更稳定的应用服务,这可以让你花更
截至目前(2014.2), PHP 的最新稳定版本是 PHP5.5, 但有差不多一半的用户仍在使用已经不在维护的 PHP5.2, 其余的一半用户在使用 PHP5.3。因为 PHP 那“集百家之长”的蛋疼语法,加上社区氛围不好,很多人对新版本
PHP凭借其易学、快捷、高效等特性,至少在WEB应用开发领域里一直都是热门技术,以至于现在市面上各种IT培训机构里都不乏PHP的身影。接下来,我们来聊一聊如何正确的学习PHP?1.确立目标我们都知道做事情要定个目标,看似简单,但实际大部分人
PHP语言也曾有过辉煌的时刻,但如今很少听到有人参加学PHP了,这门编程语言真的没落了吗?PHP培训后好找工作吗?接下来六星教育和大家—起来看看这个问题。PHP主要用来做网站开发,许多小型网站都用PHP开发,PHP是开源的,这是使得PHP经
在中国互联网行业膨胀的12-16年,PHP语言凭借自身易上手,开发周期短的优势,深受各中小企业的喜爱。小编也很荣幸在2009年底进入这一行业,为自己谋生分得一杯羹。但是PHP又先天有它的局限性,导致客户很多需求无法得到满足。大家都知道,P
ZWebPHP 框架设计目的:标准化、体验统一、简单可靠、易于扩展后端PHP框架基于PHP、smarty 构建。基于composer自动加载。完全基于API接口设计,API文档自动生成。权限包含菜单访问权限和API接口访问权限。工具类、数据
这也许,不,就是PHP世界中最好的日志组件—— Monolog所有的 PHPer,请站在巨人的肩膀上。随着 Composer 的普及,PHP 组件化开发思想越来越深入人心,我们没有必要重新自己打造轮子,只要确定需求和目标,设计好软件的架构,
PHP的功能越来越强大,里面有着非常丰富的内置函数。资深的PHP程序员对它们可能都很熟悉,但很多的PHP学习者,仍然对一些非常有用的函数不太熟悉。这篇文章里,我们就列举10个你或许不了解但实用的PHP函数,供大家参考和学习。1. php_c
Workerman是一款纯PHP开发的开源高性能的PHP socket 服务器框架。被广泛的用于手机app、移动通讯,微信小程序,手游服务端、网络游戏、PHP聊天室、硬件通讯、智能家居、车联网、物联网等领域的开发。 支持TCP长连接,支持W
框架是帮助初学者创建稳定的程序。使得你可以花更多的时间去创造真正的Web程序,而不是编写重复性的代码。框架第一阶段什么是框架?一直以来php框架被广泛利用,多半都是基本mvc架构模式的,国内外框架有HDPHP框架、ThinkPHP、CI框架
怎样搭建自己一个PHP框架?PHP写了5年,不想用其他框架,想自己搭建一套mvc oop的框架 可以用别人一些类库,但核心orm 之类希望自己写。这是最近遇到了别人的一个问题,5年时间的PHP资深程序是可以独立开发出自己框架。小编今天带来H
PHP的框架很多,有phalcon,kohana ,laravel,Yii,thinkPHP,ROR,HD,,CI,和ROR等,我觉得PHP框架其实本身就是一个工具而已,没有好与不好,只有合不合适。任何东西都没有最好,只是不同的取舍。有人说
ThinkPHP框架人们习惯性又叫它TP框架,是一个轻量级的国产PHP开发框架,快速、兼容而且简单, ThinkPHP可以支持windows/Unix/Linux等服务器环境,正式版需要PHP5.0以上版本支持,支持MySql、PgSQL、