• [技术干货] MySQL半同步复制演进
    1 介绍MySQL 提供了异步复制,主库并不关心备库是否收到日志,从而可能导致较多的数据丢失。从MySQL5.5开始引入了一种半同步复制功能,该功能可以确保主服务器和至少一台从服务器之间的数据一致性和冗余,从而可以减少数据的丢失。1.1 异步复制 master将binlog event发送给slave后,不去确认slave是否已经收到就返回成功给客户端。80301.2 半同步复制 master将binlog event发送给slave后,确认slave已经收到时才返回成功给客户端。 80312 半同步复制演进2.1 减少LOCK_log锁冲突在MySQL5.7.2版本中重构DUMP线程减小了LOCK_log锁冲突。 在之前版本中,写binlog的设计为先持有LOCK_log锁(锁住了整个binlog文件),写完后释放锁,再发送binlog更新信号。DUMP线程在读取binlog内容时,也要先获取到LOCK_log锁,然后读取binlog内容,然后释放锁。这样当写binlog的线程和DUMP线程在处理同一个binlog时,就会有较严重的冲突。 在MySQL5.7中调整了这块的设计。因为写binlog时是追加写入,DUMP线程只是读取,这样可以用一个变量(binlog_end)记录binlog文件末尾位置,每次追加写入后更新下这个变量就可以(用lock_binlog_end锁保护变量binlog_end),DUMP线程在读取时只要不超过标记的binlog末尾位置就可以。只需要在读取到末尾位置时,获取下lock_binlog_end锁,获取下最新的末尾位置。2.2 半同步复制等待点调整 在MySQL5.6版本中,master将每个事物写入binlog传递到slave刷新到磁盘(relay log),同时主库提交事务。master等待slave 反馈收到relay log,只有收到ACK后master才将commit OK结果反馈给客户端。 这样主库返回给客户端commit ok前,可能事物已经真正提交了,但是从库还没有收到日志。这时其他客户端已经可以看到了提交的事物,这时如果主库故障,主备切换后,其他客户端发现刚才提交的事物又消失了。 为了解决这个问题MySQL在5.7.2中有了一个解决方案” transaction loss-less”.具体逻辑为master将每个事务写入binlog , 传递到slave刷新到磁盘(relay log)。master等待slave反馈接收到relay log的ack之后,再提交事务并且返回commit OK结果给客户端。即使主库crash,所有在主库上已经提交的事务都能保证已经同步到slave的relay log中。同时引入了参数rpl_semi_sync_master_wait_point来控制使用的策略,默认值为AFTER_SYNC,即5.7的改进做法,还有一个可选值为AFTER_COMMIT,即5.6中的策略。MySQL5.6处理逻辑图:8032MySQL5.7.2处理逻辑图:80332.3 独立线程处理ACKMySQL5.6的semi sync 受限于dump thread,原因是dump thread 承担了两份不同且又十分频繁的任务:传送binlog给slave ,还需要等待slave反馈信息,而且这两个任务是串行的,dump thread 必须等待 slave 返回之后才会传送下一个 events 事务。dump thread 已然成为整个半同步提高性能的瓶颈。在高并发业务场景下,这样的机制会影响数据库整体的TPS 。8034为了解决上述问题,在5.7.4版本的semi sync框架中,独立出一个 ack collector thread ,专门用于接收slave的反馈信息。这样master 上有两个线程独立工作,可以同时发送binlog 到slave ,和接收slave的反馈。80352.4 master支持等待多个slave在MySQL5.6中当半同步开启时,master只是保证一个slave接收到日志,这样当在一主多从的场景下,master和接收到最新日志的slave都挂掉了,那就会丢失数据。这样增加多个备库也不会提高HA的可用性。在MySQL5.7.3中新增了参数rpl_semi_sync_master_wait_slave_count,可以用来控制master需要保证多少个slave接收到日志。
  • 2017年第二批教育部-华为产学合作协同育人项目立项结果公示
    2017年第二批教育部-华为产学合作协同育人项目立项结果公示 华为技术有限公司参加教育部高教司2017年第二批产学合作协同育人项目,共收到项目申请152项。公司组织有关专家按照公开、公平、公正的原则,对申报材料进行评审及答辩,遴选出81项予以立项。其中,“新工科建设项目”原计划资助20项,实际申报26项,经专家评审并与申报单位沟通后决定支持26项,其中为同一所大学申报的项目将共享支持资源;“创新创业联合基金项目”计划支持40项,经过专家组评审后决定对25项使用华为软硬件资源的项目予以资助。详细的立项名单如下: 序号公司名称项目类型项目名称承担学校负责人1华为技术有限公司新工科建设项目基于华为云平台的软件新工科建设北京大学吴中海2华为技术有限公司新工科建设项目基于软开云的新工科软件工程专业核心实践课程建设北京航空航天大学张莉、高小鹏3华为技术有限公司新工科建设项目基于华为DevCloud的企业级软件工程实习实训平台的建设北京交通大学魏小涛4华为技术有限公司新工科建设项目基于软件开发云的持续性复杂软件工程项目设计与实践北京理工大学计卫星5华为技术有限公司新工科建设项目面向新工科的软件工程本科OBE建设新模式北京理工大学薛静锋6华为技术有限公司新工科建设项目基于华为DevCloud的产学合作协同育人的改革与探索北京邮电大学张笑燕7华为技术有限公司新工科建设项目基于开发云的软件工程人才培养平台建设大连理工大学江贺8华为技术有限公司新工科建设项目基于产学深度合作的新型软件工程人才培养模式探索与实践电子科技大学周世杰9华为技术有限公司新工科建设项目基于华为软件开发云的软件工程专业协同育人模式探索与实践东北大学王兴伟10华为技术有限公司新工科建设项目新工科背景下软件工程专业人才培养体系研究与实践复旦大学赵一鸣11华为技术有限公司新工科建设项目基于软开云的新工科软件工程专业课程改革与优化华南理工大学黄敏12华为技术有限公司新工科建设项目以软开云为平台的软件创新型英才协同培养体系建设华中科技大学沈刚13华为技术有限公司新工科建设项目基于华为云的吉林大学软件学院新工科建设吉林大学郭东伟14华为技术有限公司新工科建设项目数据计算及应用专业建设吉林大学李辉来15华为技术有限公司新工科建设项目面向新工科建设和互联网+的软件工程专业教学改革研究厦门大学杨律青16华为技术有限公司新工科建设项目基于华为软件开发云的软件工程复合人才培养探索与实践四川大学洪玫17华为技术有限公司新工科建设项目基于华为云平台的数据科学相关课程体系建设天津大学魏建国18华为技术有限公司新工科建设项目高可靠安全保密云服务方向课程体系与平台建设同济大学江建慧19华为技术有限公司新工科建设项目面向新工科的软件工程专业课程体系研究武汉大学李兵20华为技术有限公司新工科建设项目基于云平台的软件工程专业新工科课程建设西安电子科技大学顾新21华为技术有限公司新工科建设项目基华为开发云的软件工程新工科建设西安交通大学金莉22华为技术有限公司新工科建设项目基于华为开发云的大数据系列实验课程改革西北工业大学郑江滨23华为技术有限公司新工科建设项目新工科下面向大数据、云开发的软件工程创新与发展新疆大学汪烈军24华为技术有限公司新工科建设项目面向软件卓越人才培养的协同育人模式改革与实践云南大学梁宇25华为技术有限公司新工科建设项目拓展合作内涵,共创紧密协同新模式中南大学胡志刚26华为技术有限公司新工科建设项目融合华为云平台构建“五个一”的“三创”软件工程人才能力素质提升体系重庆大学文俊浩27华为技术有限公司教学内容和课程体系改革项目云计算课程资源开发广东轻工职业技术学院辛继胜28华为技术有限公司教学内容和课程体系改革项目华为ICT学院HCNA-Security课程建设研究湖南汽车工程职业学院杨志茹29华为技术有限公司教学内容和课程体系改革项目应用型本科高校大数据技术课程的教学改革与实践集美大学诚毅学院孙海梦30华为技术有限公司教学内容和课程体系改革项目HCNA-Cloud课程建设柳州铁道职业技术学院伍玉秀31华为技术有限公司教学内容和课程体系改革项目新工科背景下云计算课程改革与教学创新新疆大学钱育蓉32华为技术有限公司教学内容和课程体系改革项目网络安全及实践课程建设云南大学李红灵33华为技术有限公司教学内容和课程体系改革项目《数据通信与计算机网络》教学内容和课程体系改革长沙学院张刚林34华为技术有限公司教学内容和课程体系改革项目《华为LiteOS嵌入式系统》课程建设研究浙江树人大学徐振宇35华为技术有限公司教学内容和课程体系改革项目HCNA—Cloud教学内容和课程体系改革重庆电子工程职业学院冯思泉36华为技术有限公司教学内容和课程体系改革项目《WLAN网络组建与优化》教材开发重庆电子工程职业学院蔺玉珂37华为技术有限公司创新创业教育改革项目云应用开发综合实践课程改革与建设北京大学张齐勋38华为技术有限公司创新创业教育改革项目基于云的软件能力培养体系与实践平台北京航空航天大学吴际39华为技术有限公司创新创业教育改革项目基于DevCloud的“Python Web开发程序设计实践”课程北京理工大学黄天羽40华为技术有限公司创新创业教育改革项目基于华为DevCloud的Web软件开发测试实践课程改革北京邮电大学韩万江41华为技术有限公司创新创业教育改革项目系统分析与设计大连理工大学徐博42华为技术有限公司创新创业教育改革项目基于华为DevCloud的Java Web程序设计实践课程建设东北大学张爽43华为技术有限公司创新创业教育改革项目路由与交换实训东北石油大学刘庆强44华为技术有限公司创新创业教育改革项目面向泛在计算的信息安全课程创新实践项目复旦大学李景涛45华为技术有限公司创新创业教育改革项目基于华为公有云环境下的云网络人才创新计划广州大学华软软件学院周化46华为技术有限公司创新创业教育改革项目网络工程组网的设计与实现实训课程湖南大学黄宇47华为技术有限公司创新创业教育改革项目基于CDIO的《路由交换技术》课程改革实践与研究湖南涉外经济学院彭浩48华为技术有限公司创新创业教育改革项目面向人工智能的双创教育改革与实践湖南师范大学张锦49华为技术有限公司创新创业教育改革项目昆明学院路由交换与信息安全创新创业教育改革项目昆明学院申时凯50华为技术有限公司创新创业教育改革项目DevOps实践课程建设南京大学荣国平51华为技术有限公司创新创业教育改革项目基于华为仿真平台eNSP的网络课程教学改革山东师范大学郭秉义52华为技术有限公司创新创业教育改革项目基于华为DevCloud的Java程序设计课程改革陕西交通职业技术学院梁娟53华为技术有限公司创新创业教育改革项目基于DevCloud的Java程序设计教学平台建设天津大学陈锦言54华为技术有限公司创新创业教育改革项目基于NB-IoT的NB开发板应用实践课程改革无锡职业技术学院高雅55华为技术有限公司创新创业教育改革项目基于软件开发云的《web应用与开发》创新课程建设武汉大学韩波56华为技术有限公司创新创业教育改革项目《传感网与物联网技术》课程体系建设与实践云南大学陈清毅57华为技术有限公司创新创业联合基金项目基于云平台的民族民间博物馆数字化展示平台北京邮电大学孙锐 指导教师:傅湘玲58华为技术有限公司创新创业联合基金项目听障人公共服务辅助平台的设计与实现大连理工大学刘琨 指导教师:孔维强59华为技术有限公司创新创业联合基金项目基于软件开发云的E中医平台设计与实现大连理工大学陈思汐、倪景悦、李世豪 指导教师:马瑞新60华为技术有限公司创新创业联合基金项目基于iBeacon 和人脸识别的智能家居门禁华北电力大学王强 指导教师:鲁斌61华为技术有限公司创新创业联合基金项目网络空间安全创新创业项目及竞赛实践华中科技大学易文通 指导教师:胡汉平62华为技术有限公司创新创业联合基金项目城市交通信号灯网远程控制系统吉林大学马彬 指导教师:张家晨、冯铁63华为技术有限公司创新创业联合基金项目基于体感音波疗法的三维感知音乐颈枕设计吉林大学火** 指导教师:唐志国64华为技术有限公司创新创业联合基金项目4G网络环境下车载数据采集和分析技术研究厦门理工学院杨晟 指导教师:谢勇65华为技术有限公司创新创业联合基金项目基于物联网Ocean Connect平台的智能安防系统山西农业大学张帅 指导教师:刘琪芳66华为技术有限公司创新创业联合基金项目基于OceanConnect平台的智能健身方环境改造方案上海交通大学王子灿 指导教师:楚朋志67华为技术有限公司创新创业联合基金项目智慧农业大棚解决方案上海交通大学朱贺轩 指导教师:宋立博68华为技术有限公司创新创业联合基金项目基于NB-IoT与OceanConnect的贵重物品监测方案上海交通大学苏文尧 指导教师:方向忠69华为技术有限公司创新创业联合基金项目基于OceanConnect平台的部分智能家居实现上海交通大学向文钊 指导教师:楚朋志70华为技术有限公司创新创业联合基金项目基于华为OceanConnect 平台的室内空气质量检测系统太原理工大学王艳花 指导教师:杨静71华为技术有限公司创新创业联合基金项目基于大数据的个性化智能学习平台泰山学院曹珂 指导教师:白学明72华为技术有限公司创新创业联合基金项目基于GPU 加速的污染物传播预测及在线预警系统研究天津大学蔡岳晋 指导教师:侯庆志73华为技术有限公司创新创业联合基金项目基于华为云计算架构的校园线上票务平台同济大学殷宇涵 指导教师:范鸿飞74华为技术有限公司创新创业联合基金项目涂书:可自定义图案的填色分享平台同济大学李舒琴 指导教师:范鸿飞75华为技术有限公司创新创业联合基金项目基于华为云计算架构的航旅信息智能推荐平台同济大学杨扬 指导教师:范鸿飞76华为技术有限公司创新创业联合基金项目基于智能锁的车位管理服务系统西安工业大学黄聪 指导教师:王沁77华为技术有限公司创新创业联合基金项目基于华为开发云的智能资源回收系统西安交通大学李晓萌 指导教师:杜小智78华为技术有限公司创新创业联合基金项目温室作物生长环境远程智能检测小车西北农林科技大学邵明肖 指导教师:吴婷婷79华为技术有限公司创新创业联合基金项目基于华为DevCloud的校园大数据学生行为分析新疆财经大学罗迟猛 指导教师:于凯80华为技术有限公司创新创业联合基金项目基于移动设备的多模态信息监测平台研发新疆财经大学于咏平 指导教师:于凯、王思秀81华为技术有限公司创新创业联合基金项目典型路况场景下车载语音云业务质量测试平台开发徐州工程学院姚宇青 指导教师:陈磊、张凯亮
  • [技术干货] 云数据库MySQL实践案例技术分析
    大家下午好,先做一个简单的调查,看看在座的各位有没有接触MySQL,有接触过的举一下手,看样子大部分都是接触过或者用过MySQL,也应了那句话MySQL是全球最流行的开元数据库所言非虚。刚才产品架构师讲的主要是华为云数据库的前沿技术,我作为产品经理主要是从客户的角度来分享一下客户的实践案例。华为云数据库的功能特别多,应用的场景也不少,不可能把所有的场景一一展示出来,这里拿出一个典刑的场景进行分享。上图是华为云数据库,通常称为RDS的简单示意图,比较直观、全面的展示了RDS主要的功能,可以看一下图的左边,包括了实例管理、实例访问、备份与恢复、实例监控、弹性伸缩、日志管理、参数配置等等功能。也就是说客户自己在线下搭建数据库遇到的一些问题,基本上RDS都帮用户服务化实现了。看一下右上角这块双机热备高可用,这是RDS主要的架构,和大多数云厂商一样,RDS也是采用这种双机热备高可用,当主实例发生故障时候,可以自动切换到备实例,备实例自动升主。如果应用程序流量很大,尤其是读流量很大的时候,可以创建只读实例,目前最高创建5个只读实例来承担读流量。刚才讲过主实例宕机以后会切换到备实例,那么这些只读实例怎么办?RDS会自动去维护主从复制关系,会把所有的只读实例全部挂到备实例(新主)上面去。在MySQL这个领域里面,主备实例之间和主实例与只读实例之间都是通过MySQL复制的技术来建立复制关系、数据同步的。但是现在RDS有一个不足的地方,主备实例对外呈现的是一个IP地址,每一个只读实例呈现出来的都是单独的IP地址,那么给客户应用带来一个负担,也就是需要应用程序去决定到底是读写主备库,还是去读只读实例。客户也会经常提到这样的问题,问RDS有没有读写分离的解决方案。如上图所示,有些客户不了解华为云有专门的读写分离解决方案,于是客户就使用HAproxy自己来搭建。都知道这个HAproxy主要的功能就是负载均衡的,虽然它没有读写分离的功能,那么就想出了左图这样的架构图来做,也就是说应用程序读写主库,然后HAproxy提供一个IP,专门去读只读实例集,由HAproxy做一个负载均衡。这在某种程度上解决了客户的问题。那么这样做有几个缺点,1、HAproxy需要维护高可用,它自己的单点的问题不好解决,整个的搭建其实也挺复杂,虽然HAproxy使用挺简单,但对客户来说安装、部署、运维还是挺复杂的,2、应用程序没有一个唯一的连接地址,它需要应用程序去识别是读写主备实例,还是去读只读实例,那来看看华为云的解决方案。如上图的右边所示,华为云有一个专门的组件或者服务,叫DDM(分布式数据库中间件),DDM的主要功能是用来做分库分表的,但也有一个附带的功能就是读写分离。引入了DDM以后,比较好的解决了刚才上述碰到的一些问题,DDM是由专门的团队去负责的,运维、部署、高可用不用客户去操心;第二个最大的优点应用程序再也不用应用去识别是读写主备实例,还是读写只读实例,也就是做到了真正的读写分离。对于该解决方案,有实际的案例,我们来看一下。这是一个客户案例,左边是架构图,红色框就是DDM和RDS。该业务特点就是互联网领域初创型公司遇到的最典型场景,读写比较高(8:2),单独的一个主库压力是比较大的,另外,IT运维比较弱,采用我们这个解决方案以后,不仅仅是使用了我们华为的RDS和DDM,实际上是使用了一整套的华为云服务,包括其他的服务也是有的。使用了该解决方案以后,系统稳定性大幅度提升,运维成本降低了70%,人工成本降低了50%。讲了这么多,这个东西会不会很复杂?因为云服务典型特点就是只要在console上点击几下鼠标,或者调用API就可以轻松部署,所以使用起来非常简单。部署这样的解决方案大体上是分为6个步骤,听起来很多,实际上是很简单的,1、购买RDS主备实例和只读实例;2、购买数据库中间件实例;3、导入实例;4、同步只读副本(可选),5、创建逻辑库。整个步骤都仅仅需要点击鼠标,或者调用OpenAPI来完成,完成以后就会提供唯一的读写分离访问地址。最后欢迎大家来体验RDS和DDM,谢谢大家。
  • [技术干货] 云数据库MySQL实战演练
    很多客户对于华为云数据库还不是太了解,或者在使用华为云数据库的时候存在一些疑虑。这里会针对几个重要的特性进行demo展示。一、创建跨AZ的主备实例进入console以后,点击“购买数据库实例”,如果想部署主备实例,需要打开“HA”选择,然后根据业务特点选择同步模型。如果选择的“主可用区”和“辅助可用区”不同的话,就可以实现跨AZ主备高可用了,如下图所示。二、VPC、公网访问RDS实例创建好了实例以后,可以通过两种方式访问RDS实例,一种是通过VPC内,这个一般使用VPC内的私有IP;另一种就是通过公网IP访问。VPC内连接实例:以SSL连接为例,请确认先申请了台带公网IP的ECS,然后安装了mysql客户端:1. 下载证书文件http://developer.huaweicloud.com/tools/rds.html并将证书文件” ca.pem”上传到ECS上2. 连接RDS实例3. 然后就可以进行一些数据库表的增删改查等操作。公网IP访问,使用常见的Navicate for mysql1. 打开Navicat for MySQL2. 新建连接3. 然后就可以操作数据库了很多客户提出一个疑问:华为云数据库中能否设置IP白名单。实际上华为云有VPC安全组的功能,比白名单更先进更好用。打开VPC的控制台,可以在安全组中设置各种访问规则,如下图所示。RDS可以设置自己的单独的安全组,以实现对各种IP、端口的限制访问。三、恢复到指定时间点在什么情况下用户会用到这个功能呢?最典型的场景是应用程序或者操作人员,无意中把某个表或者数据库删掉了,需要找回数据的时候,就需要用到PITR的功能。前提是要把备份打开,华为云数据库提供了两个恢复方式,一个是恢复到新实例,第二个会完全覆盖当前实例。如下图所示。四、实例配置变更(CPU/内存、磁盘、参数)接下来是大家最为关心的华为云数据库的弹性伸缩。当业务发展后,发现当前的实例配置已经无法满足要求时,或者存储容量要求变大后,都可以进行在线的配置变更。如下图所示。特别要提出的是,华为云数据库采用了参数组的概念,自带了多个以default开头的参数组,这些参数组只能查看参数,不能修改。如果需要修改某个参数值,需要先创建自己的参数组,然后修改参数值,再变更实例的参数组,如下图所示。五、创建只读副本可以通过创建只读副本(目前最多能创建5个只读副本)来扩展读流量。点击”RDS实例管理“ -> “更多” -> “创建只读副本” ,如下图所示。六、从零开始搭建Discuz网站接下来我们玩一个小游戏,从零开始,看看如何快速的使用华为云的相关服务来搭建一个网站。主要过程如下:a. 准备工作确保已经下载了Discuz_X3.2_SC_UTF8.zip文件b. 开始搭建c. 访问论坛网站a. 有关数据库的配置b. 发帖后查询数据库整个过程也就10多分钟就可以搭建一个论坛了,非常方便快捷。
  • [技术干货] 常见问题处理之ERROR 1227 数据导入报错
    使用mysqldump将本地数据导出,导入rds MySQL时。导入过程中可能会遇到以下错误:ERROR 1227 (42000) at line 18: Access denied; you need (at least one of) the SUPER privilege(s) for this operation1.问题原因:MySQL导入用户的权限问题。处于安全考虑,rds MySQL的最高权限用户root是没有super权限的,当前自建用户也不能有super权限。但是用户执行导入的sql中,包含需要super权限的语句,所以会报错。如果源库开启了GTID特性,使用mysqldump 导出数据时,没有添加选项--set-gtid-purged=OFF,导出的sql中就有存在以下需要super权限执行的语句:SET @@SESSION.SQL_LOG_BIN= 0;SET @@GLOBAL.GTID_PURGED=´18f9a804-343b-11e5-a21d-b083fed01601:1-2´;2.解决办法办法1:导出语句中添加选项--set-gtid-purged=OFF重新导出,再导入即可。mysqldump -uroot -p -h192.168.0.50 -P8635 --databases test --set-gtid-purged=OFF --master-data=2--single-transaction --order-by-primary -r dump.sql办法2:使用source方式导入,这种方式即使权限问题报错,剩余sql语句仍可继续执行,不影响最终数据。mysql>source /tmp/dump.sql 注意:sql文件的路径和权限
  • 对MySQL参数max_connect_errors的误解
    很多人认为这个参数是防止暴力破解mysql用户密码的,但是测试过程中发现为什么密码错误次数超过了该参数值,该用户仍然没有出现以下错误,继而被锁定。ERROR 1129(HY000): Host ´10.10.10.10 is blocked because of many connection errors; unblockwith ´mysqladmin flush-hosts´其实是对参数的理解出了偏差,以下为MySQL官网的解释:Ifmore than this many successive connection requests from a host are interruptedwithout a successful connection, the server blocks that host from furtherconnections.如果mysql服务器连续接收到了来自于同一个主机的请求,且这些连续的请求全部都未成功建立连接就被断开了,当这些连续的请求的累计值大于 max_connect_errors的设定值时,mysql服务器就会阻止这台主机后续的所有请求。这个参数指的是网络错误,密码错误并不算在内。 Youcan unblock blocked hosts by flushing the host cache. To do so, issue a FLUSHHOSTS statement or execute a mysqladmin flushhosts command. If a connection isestablished successfully within fewer than max_connect_errors attempts after aprevious connection was interrupted, the error count for the host is cleared tozero.However, once a host is blocked, flushing the host cache is the only wayto unblock it. The default is 100.当遇到主机被阻止的时候,可以清空host cache来解决,执行sql语句 flush hosts或者在mysql服务器的shell里执行 mysqladmin flush-hosts操作。如果该数据库参数host_cache_size为0或者skip-name-resolve为ON,错误ERROR 1129将不会发生。
  • [技术干货] ​MySQL中的大小写规则
    ​MySQL中大小写规则: 1、数据库名严格区分大小写的; 2、表名是严格区分大小写的; 3、表的别名是严格区分大小写的; 4、列名与列的别名在所有的情况下均是忽略大小写的; 5、变量名也是严格区分大小写的; 6、字段值默认是忽略大小写的; 可通过将参数lower_case_table_names设置为1,忽略数据库名和表名的大小写,即不区分大小写。 强烈建议在实例创建前确定该参数的值,该参数的推荐值为1,以避免迁移上云后的代码改造和逻辑错误。如果是HA实例+只读副本的数据库架构,只读副本该参数需要与主库保持一致,避免复制中断。 如果要忽略字段值的大小写,创建表时需要添加BINARY属性。
  • [技术干货] 影响mysql主从复制的几个重要参数
    1、lower_case_table_names控制数据库名和表名是否区分大小写,如果设置为0,是区分大小写的;设置为1,是不区分大小写的。Rds mysql主库和只读副本该参数需要一致,复制可能导致复制中断。该参数非动态参数,修改需要重启mysql进程。建议将该值设置为1。 2、sql_modeMysql对数据库操作的约束集合。主库和只读副本该参数值必须一致,否则会出现复制中断。例如:STRICT_TRANS_TABLES:在该模式下,如果一个值不能**到一个事务表中,则中断当前的操作,例如值超过字段长度、数据类型不一致等。如果没有设置该模式,上述场景就不会报错。我们建议您不要修改sql_mode参数的值。 3、relay_log_recoverSlave宕机重启后,对relay-log的处理方式。当slave宕机后,假如relay_log损坏,导致一部分中继日志没有处理,则自动放弃所有未执行的relay-log,并且重新从MASTER上索取日志,保证relay的完整性。默认情况下该功能是关闭的。建议在开启此功能。 4、relay_log_info_repository决定从库的重做信息以何种方式保存。FILE:relay-log.info,TABLE: mysql.slave_relay_log_info设置为file,sql线程先提交事务,再记录relay.info文件。假如在relay.info刷盘那一刻宕机,relay.info文件中没有记录,那么从库重启mysql进程后们就会执行两边同样的sql,导致同步复制报错。设置为table,sql线程执行完事务后,立即更新slave_relay_log_info表,如果在更新过程中宕机,则事务会回滚,slave_relay_log_info表并不会记录同步的点,下次重新同步时,从之前的pos点再次执行。我们建议你将该值设置为table.​ 5、binlog_formatMySQL记录binlog的内容格式。STATEMENT模式(SBR):Binlog记录的只是sql语句。ROW模式(RBR):Binlog记录完成的数据变更记录。MIXED模式(MBR):由mysql决定记录的格式,bug较多,常常造成主从数据不一致。https://dev.mysql.com/doc/refman/5.7/en/binary-log-mixed.html基于RBR的复制是最安全的复制,slave需要的行锁也更少。其他格式可能导致数据不一致。Mysql 5.7可以开启binlog_rows_query_log_events,让binlog记录events的同时,也记录原始SQL.。建议值ROW。 6、log_slave_updates对于MySQL5.6该参数不能设置为OFF,否则备机或只读副本将无法启动。
  • [技术干货] 常见问题处理之连接中断ERROR 2013
    在使用RDS MySQL的过程中,经常会遇见以下ERROR 2013错误。该如何处理呢? 问题原因:1、wait_timeout,interactive_timeout参数设置过小,连接超时后被mysql中止。2、mysql数据库频繁重启。解决措施:1、查询实例状态。确认数据库实例是否刚刚重启过:可以通过查看错误日志或status命令Uptime 代表实例的运行时间,数据库并没有频繁重启,客户端连接空闲一会就被断开,如果数据库频繁重启,请联系华为技服介入排查。2、查看参数设置参数设置过小,mysql会自动断开超时的空连接。3、修改参数组​将参数interactive_timeout的值设置为100即可。
  • [技术干货] 如何在控制台查看MySQL死锁信息呢?
    本帖最后由 小驴涛咪 于 2017-12-8 11:03 编辑死锁在MySQL数据库中是较为常见的现象,多数情况是业务逻辑导致的。 定位死锁原因当然可以访问数据库使用show engineinnodb status查看死锁信息。 也可以在console端的错误日志中查看,很简单,只需要需改一个参数。 将参数innodb_print_all_deadlocks的值修改为ON即可。
  • [技术干货] 常见问题处理之通过关键参数的修改解决mysql的主备延迟问题
    本帖最后由 小驴涛咪 于 2017-12-8 10:42 编辑HA实例+只读副本的数据库架构,只读副本可以承载只读业务,但是基于mysql复制的数据同步机制,主库频繁的更新操作,势必导致只读副本的同步延迟较高,如下所示。 mysql> show slave status \G; *************************** 1. row*************************** -----Slave_IO_Running: YesSlave_SQL_Running: Yes-------Seconds_Behind_Master: 9905这时修改参数innodb_flush_log_at_trx_commit的值为2,sync_binlog的值为0,使只读库加快同步进度,待主备数据同步后,再恢复原值。针对数据一致性要求不高的只读业务,可以不恢复原值。附:参数含义1、innodb_flush_log_at_trx_commit控制redolog何时落盘。innodb_flush_log_at_trx_commit=0:事务提交时,MySQL不会去刷新日志缓冲区的内容,有MASTER线程每隔1s将缓冲区中文件刷新到日志文件中。innodb_flush_log_at_trx_commit=1:事务提交时,会将日志缓冲区的日志写入到文件中,同时会刷新到磁盘中,保证数据库事务不丢数据。innodb_flush_log_at_trx_commit=2:事务提交时,会将日志缓冲区的日志写入到文件中(OS Cache)中,由文件系统负责刷新至磁盘文件中。innodb_flush_log_at_trx_commit数据库宕机OS宕机0丢失最多1s的数据丢失最多1s的数据1不丢数据不丢数据2不丢数据丢失最多1s的数据2、sync_binlog控制binlog何时落盘。sync_binlog=0:事务提交前时,MySQL将binlog信息写入binlog文件(OS Cache)中,但是MySQL不控制binlog的刷新操作,由文件系统控制其缓存的刷新。sync_binlog=1:每提交一个事务,MySQL都会把binlog刷新到磁盘中。这样数据库的安全性最高,性能损耗也是最大的。sync_binlog=N(N>0):表示每N次事务提交,MySQL调用文件系统的刷新操作将缓存刷新到磁盘中。 当然与主备复制效率相关的参数不止这两个,例如innodb_buffer_pool_size,innodb_log_file_size,innodb_flush_method,master_info_repository、relay_log_info_repository,slave_parallel_workers,slave-parallel-type(5.7),这些参数建议在数据库创建前做好优化。
  • 数据库服务三连 发 高调亮相华为云中国行,究竟说了什么?
    本帖最后由 华为云数据库 于 2017-11-30 22:51 编辑从10月26日到11月7日,华为云数据库服务接连在华为云中国行西安站、济南站、成都站高调亮相,现场与200 家以上企业客户交流数据库云上解决方案,探讨数据库使用过程中的热点、痛点问题。华为云数据库服务高级营销经理李天武、高级产品经理姜皓楠先后做了《华为云数据库服务让您更专注应用开发》的主题分享。华为云数据库服务高级营销经理李天武在分享华为云数据库服务高级产品经理姜皓楠在分享四大优势保驾护航从配置到使用只需短短的几分钟时间,真正做到即开即用。也可以按照业务需求,灵活关停服务,为您节省企业成本,做到用多少开多少。可以根据业务涨跌情况随时伸缩资源,避免错失发展机遇或浪费固定投入,让您更合理地配置资源。全系列数据库支持高可用架构,让您安心使用。数据库层多副本扩展,存储层采用分布式块存储的多副本冗余结构,保证数据可靠不丢失。提供多种监控视图及日志查询,让你随时了解数据库实例操作系统及数据库引擎的运行状况。两大自研优化数据库,彰显华为领先的研发实力华为自研兼容MySQL的分布式数据库 Taurus,采用“计算与存储分离架构”和首创的全局缓冲池(CBP)技术,性能指标全面领跑MySQL,同时对用户数据提供金融级的可靠保障,成本却是商用数据库的1/10,是任何可以使用关系型数据库的企业的绝佳选择。Taurus性能是标准MySQL的数倍,AZ内读0延迟,跨AZ数据秒级延迟,能轻松承载“礼包兑换”、“抢红包”、“视频直播”等业务系统访问压力,让您从容应对业务高峰期系统访问量、用户量、流量突发问题。Taurus可弹性扩容,按需升级,扩展节点可多达15个,可突破业务增长后的性能瓶颈,赋予您更高的生产力。华为基于MySQL内核源码优化的数据库 HWSQL, 在不改变硬件配置的前提下,相比原生MySQL 5.6,在性能方面大幅提升,包括:1. 高并发情况下,TPS 负载能力提升 10 倍以上。2. 正常并发情况下,QPS峰值提高 4 倍多。3. 极端负载情况下,主从复制延迟从原生 MySQL 5.6 的 1000 多秒降到1秒以内,极大地减少了数据丢失的可能性。配套其他产品,提供完整的云数据库解决方案华为云数据库服务目前支持六款业界流行的数据库引擎,可以应对不同场景下的多种业务需求。此外,华为云数据库服务还可以搭配其他云服务产品,提供完整的云数据库解决方案,包括:1. 搭配分布式数据库中间件DDM使用RDS,实现分库分表、对应用透明的自动读写分离和读负载均衡。2. 搭配数据库安全服务DBSS使用RDS,可以防止 SQL 注入攻击,防止敏感数据泄露,提供数据库级别的审计功能,以及遵从行业安全合规性,全程保障您的数据库安全。3. 搭配数据复制服务DRS,可以实现本地数据库在线迁移上云。 本次华为云中国行系列活动,华为云数据库服务团队跟很多企业进行了广泛而深入的交流,了解到不少客户对云数据库抱有浓厚的兴趣。未来,华为云数据库服务团队会持续在数据安全、数据库性能等方面持续优化,为您提供更好的数据库服务,让您真正专注于业务开发,免除数据库的烦恼。 注:预计2017年12月23日(周六),华为云数据库服务团队将在深圳举办线下技术沙龙活动,敬请您持续关注和莅临参与。 【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:huaweicloud.bbs@huawei.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • [技术干货] redis和mysql区别
    Mysql将数据存储在磁盘,为中小型的网络数据库,支持集群。Redis存储在内存,为支持网络、可基于内存亦可持久化的日志型、Key-Value数据库。redis既可以用来做持久存储,也可以做缓存,大多只用来做 数据读取缓存、队列、锁、等等的使用。目前大多数公司的存储都是mysql + redis,mysql作为主存储,redis作为辅助存储被用作缓存,加快访问读取的速度,提高性能。
  • [行业资讯] EulerOS源码编译安装mysql常见问题及解决方案
    EulerOS源码编译安装mysql常见问题及解决方案 1、MySQL问题解决:-bash:mysql:command not found 问题: [root@linux115 /]# mysql –u root -p -bash: mysql: command not found 因为mysql命令的路径在/usr/local/mysql/bin下面(与mysql安装路径有关,本例mysql安装路径为/usr/local/mysql),所以你直接使用mysql命令时,系统在/usr/bin下面查此命令,所以找不到了 解决办法是: ln -s/usr/local/mysql/bin/mysql /usr/bin 做个链接即可2、linux取消软连接Linux下取消软连接,做个案例来说明:1)先建立一个软连接[[email]root@rekfan.com[/email] test]# ls -il 总计 0 1491138 -rw-r–r– 1 root root 48 07-14 14:17 file1 1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2 1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand #建立file1和file1soft软连接 [[email]root@rekfan.com[/email] test]# ln -s file1 file1soft [[email]root@rekfan.com[/email] test]# ls -il 总计 0 1491138 -rw-r–r– 1 root root 48 07-14 14:17 file1 1491140 lrwxrwxrwx 1 root root 5 07-14 14:24 file1soft -> file1 1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2 1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand2)删除上面建立的软连接[[email]root@rekfan.com[/email] test]# ls -il 总计 0 1491138 -rw-r–r– 1 root root 0 07-14 14:17 file1 1491140 lrwxrwxrwx 1 root root 5 07-14 14:24 file1soft -> file1 1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2 1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand #删除软连接 [[email]root@rekfan.com[/email] test]# rm -rf file1soft [[email]root@rekfan.com[/email] test]# ls -il 总计 0 1491138 -rw-r–r– 1 root root 0 07-14 14:17 file1 1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2 1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand
  • [技术干货] MySQL5.6作为master,5.7作为slave复制
    在MySQL5.7下采用多源复制方式,从5.6复制数据过来,会有问题吗?1、问题描述有位朋友想尝鲜5.7的多源复制,于是用MySQL 5.7版本作为slave,把MySQL5.6作为master,想要将数据进行汇总,发现此路不通。他在my.cnf中设置了2个选项,开启并发复制:slave_parallel_type = LOGICAL_CLOCKslave_parallel_workers = 4启动复制线程后,结果在错误日志中不断有类似下面的信息:Transaction is tagged with inconsistent logicaltimestamps: sequence_number (823267087) = last_committed(1301275374434324336)执行SHOW SLAVE STATUS\G 查看状态:*************************** 1. row ***************************Slave_IO_State: Waiting for master to send event…Last_Errno: 1756Last_Error: … The slave coordinator and worker threads are stopped, possiblyleaving data in inconsistent state. A restart should restore consistency autestuseratically,although using non-transactional storage for data or info tables or DDL queriescould lead to problems. In such cases you have to examine your data (seedocumentation for details).…Last_SQL_Errno: 1756Last_SQL_Error: … The slave coordinator and worker threads are stopped, possiblyleaving data in inconsistent state. A restart should restore consistency autestuseratically,although using non-transactional storage for data or info tables or DDL queriescould lead to problems. In such cases you have to examine your data (seedocumentation for details).…Last_IO_Error_Timestamp:Last_SQL_Error_Timestamp: 160523 18:49:05…*************************** 2. row***************************Slave_IO_State: Waiting for master to send event…Last_Errno: 1756Last_Error: … The slave coordinator and worker threads are stopped, possiblyleaving data in inconsistent state. A restart should restore consistency autestuseratically,although using non-transactional storage for data or info tables or DDL queriescould lead to problems. In such cases you have to examine your data (seedocumentation for details).Skip_Counter: 0…Last_SQL_Errno: 1756Last_SQL_Error: … The slave coordinator and worker threads are stopped, possiblyleaving data in inconsistent state. A restart should restore consistency autestuseratically,although using non-transactional storage for data or info tables or DDL queriescould lead to problems. In such cases you have to examine your data (seedocumentation for details).…2、原因分析上面这些错误提示可以看到,主要原因是:slave端采用了基于 LOGICAL_CLOCK 类型的并行复制,但master端的binlog格式并不支持这种方式,所以slave端无法正确读取binlog并行apply。3、解决方案虽然仍旧可以采用MySQL5.7作为slave,但就无法开启基于LOGICAL_CLOCK 类型的并行复制了。需要改回传统模式就可以了:slave_parallel_type = DATABASE此外,在MySQL复制方案中,强烈建议不要让主从大版本不一样,很容易出现各种各样的问题。