• [技术干货] Mysql 的binlog日志的原理
    MySQL的binlog(二进制日志)是一个记录数据库更改的日志文件,它主要用于复制和恢复操作。以下是binlog日志的工作原理的简要概述:事件写入:当MySQL服务器执行一个事务时,它会将该事务中所有对数据库的修改操作(如INSERT、UPDATE和DELETE等)记录为一个事件(event)。这些事件包含了修改操作的相关信息,如操作类型、涉及的表、修改的行等。日志缓存:当事务提交时,这些事件并不是直接写入到磁盘上的binlog文件中,而是首先被写入到一个称为binlog cache的内存缓冲区中。这样做是为了提高性能,减少频繁的磁盘I/O操作。日志刷新:MySQL服务器会定期或根据配置将binlog cache中的事件刷新(flush)到磁盘上的binlog文件中。这个刷新操作是原子性的,确保了在崩溃或故障发生时,binlog文件的完整性。日志索引:为了管理和追踪binlog文件,MySQL会维护一个binlog索引文件。这个索引文件记录了所有的binlog文件列表以及它们的位置信息,方便在需要时快速定位到特定的binlog文件。格式选择:binlog支持多种格式,包括STATEMENT、ROW和MIXED。每种格式都有其特点和适用场景。例如,STATEMENT格式记录的是SQL语句本身,而ROW格式记录的是行级别的修改信息。MySQL会根据配置和当前的操作类型选择最合适的格式来记录事件。主从复制中的应用:在MySQL的主从复制架构中,主服务器上的binlog日志扮演着至关重要的角色。主服务器将binlog中的事件发送给从服务器,从服务器再重放这些事件,从而实现数据的同步。这是通过专门的I/O线程和SQL线程来完成的。I/O线程负责从主服务器读取binlog事件并写入到从服务器的relay log中,而SQL线程则负责读取relay log中的事件并执行它们,从而更新从服务器的数据。总的来说,MySQL的binlog日志通过记录数据库更改事件、缓存、刷新和索引等机制,实现了对数据库更改的持久化保存和复制功能。这为用户提供了数据恢复、审计和主从复制等强大的功能。
  • [问题求助] prometheus中mysqld_exporter连接华为云RDS的MySQL提示 you need (at least one of) the SUPER, REPLICATION CLIENT privilege(s)
    新建的普通用户连接报错如下:level=error msg="Error scraping for collect.slave_status: Error 1227: Access denied; you need (at least one of) the SUPER, REPLICATION CLIENT privilege(s) for this operation" 华为云的rds对普通用户未开启SUPER权限用root用户连接提示(我用root可以在这个IP使用Navicat连接):level=error msg="Error pinging mysqld: Error 1045: Access denied for user 'root'@'172.30.3.102' (using password: YES)" source="exporter.go:146求解答
  • [问题求助] mysql数据库迁移,怎么迁移
    mysql数据迁移,需要注意哪些
  • [技术干货] 使用华为云GaussDB搭建智能门锁用户管理系统
    智能门锁技术在现代社会中得到了广泛的应用,而一个可靠的用户管理系统对于智能门锁的正常运行至关重要。本教程将介绍如何使用华为云的 GaussDB 构建一个强大的智能门锁用户管理系统。1.数据库设计首先,我们需要设计数据库结构,为此我们创建三个主要表:用户(User)、门锁(Lock)和授权(Authorization)。 2. 创建数据库和表在华为云 GaussDB 控制台中,先购买一个数据库资源: 打开一个新的数据库: 并按照上述ER图设计创建相应的表:-- 创建用户表 CREATE TABLE User ( UserID INT PRIMARY KEY, UserName VARCHAR(255), -- 其他用户信息字段... );-- 创建门锁表 CREATE TABLE Lock ( LockID INT PRIMARY KEY, LockName VARCHAR(255), -- 其他门锁信息字段... );-- 创建授权表 CREATE TABLE Authorization ( AuthorizationID INT PRIMARY KEY, UserID INT, LockID INT, FOREIGN KEY (UserID) REFERENCES User(UserID), FOREIGN KEY (LockID) REFERENCES Lock(LockID) );-- 创建用户门锁关系表 CREATE TABLE UserLock ( UserLockID INT PRIMARY KEY, UserID INT, LockID INT, FOREIGN KEY (UserID) REFERENCES User(UserID), FOREIGN KEY (LockID) REFERENCES Lock(LockID) );3. 插入示例数据插入一些示例数据,以便演示系统的基本功能。注意,实际中这些数据应该是由用户通过系统界面添加的。-- 插入用户数据 INSERT INTO User (UserID, UserName) VALUES (1, 'Alice'), (2, 'Bob'), (3, 'Charlie');-- 插入门锁数据 INSERT INTO Lock (LockID, LockName) VALUES (101, 'Front Door'), (102, 'Back Door');-- 插入授权数据 INSERT INTO Authorization (AuthorizationID, UserID, LockID) VALUES (1001, 1, 101), (1002, 2, 101), (1003, 3, 102);-- 插入用户门锁关系数据 INSERT INTO UserLock (UserLockID, UserID, LockID) VALUES (2001, 1, 101), (2002, 2, 101), (2003, 3, 102);4. 实现用户管理系统逻辑通过编程语言(如Java、Python等)或框架,实现用户管理系统的逻辑。这包括用户注册、授权管理等功能。在实际项目中,可能需要使用华为云的开发工具和 SDK 进行数据库连接和操作。5. 进行测试测试系统,确保用户可以成功注册,门锁可以正确地获取和验证用户的授权信息,以及用户门锁关系的管理。
  • [技术干货] 【分享】医疗场景下的数据库构建实践
    案例:医院人事系统每个科室有多名医生,每名医生只能在一个科室中工作。每名医生可以参加多个医药科研项目,每个医药科研项目可以由多名医生参加。每个医药科研项目由一名医生担任总负责人,一名医生可以负责多个医药科研项目。每名医生参加某医药科研项目,都有“项目职责”和“每年投入几个月”这两个信息。其他相关信息包括: 科室:科室编号、科室描述 医生:工号、姓名、性别、出生日期、进入医院工作日期、职称 医药科研项目:项目编号、项目名称、项目简述1. ER图绘制省略了部分属性,用下划线标注了主键。其中,由于将职责这一实体认定为弱实体,因此没有标注主键,但在具体实现时,会通过添加工号和项目编号这两个属性来将职责和医生和项目对应起来): 2. 将ER图转换为关系模式,注明关系的属性、主键和外键。Department(Dept dept_number, Dept dept_description, Dept doct_num) #科室编号,科室描述,医生数量 Doctor(Dct doct_id, Dct doct_name, Dept dept_number, Dct doct_gender, Dct doct_birthday, Dct doct_work_began_date, Dct doct_title) #医生编号,医生姓名,科室编号,性别,出生日期,进入医院工作日期、职称 Duty(Dct doct_id, Proj proj_id, Duty proj_duty, Duty worktime) #医生编号,项目编号,项目职责,每年投入几个月 Project(Proj proj_id, Proj proj_name, Proj proj_description, Proj proj_leader) #项目编号、项目名称、项目简述,负责人姓名3. 建立的数据库中定义成视图、存储过程、触发器或函数【1】视图功能描述:显示所有担任项目负责人的医生的姓名,工作年限,职称,所在科室SQL代码:CREATE view proj_leader as SELECT `user019db`.`project`.`proj_name` AS `proj_name`,`user019db`.`project`.`proj_leader` AS `项目领导人`,timestampdiff(YEAR,`user019db`.`doctor`.`doct_work_began_date`,now()) AS `工作年限`,`user019db`.`doctor`.`doct_title` AS `职称`,`user019db`.`doctor`.`dept_number` AS `科室编号` FROM (`user019db`.`project` join `user019db`.`doctor`) WHERE (`user019db`.`project`.`proj_leader` = `user019db`.`doctor`.`doct_name`)执行效果: 【2】存储过程功能描述:创建存储过程UpdateDoctorTitle,该存储过程更新doctor表中的职称(doct_title),根据医生的入职时间做不同的更新操作,使用游标:对入职时间在2010-01-01之前(含)的,如果之前的职称是副主任医师则设置医生的职称(doct_title)为主任医师;对入职时间在2018-01-01之前(含)的,如果之前的职称是实习医师则设置医生的职称(doct_title)为普通医生;SQL代码:CREATE PROCEDURE `UpdateDoctorTitle`() BEGIN DECLARE d_id INT; DECLARE work_date DATE; DECLARE title VARCHAR(255); DECLARE cur CURSOR FOR SELECT a.doct_work_began_date, a.doct_title, a.doct_id FROM doctor a; DECLARE exit HANDLER FOR NOT FOUND CLOSE cur; OPEN cur; REPEAT FETCH cur INTO work_date, title, d_id; IF(work_date<='2010-01-01' and title = '副主任医师') THEN SET title = '主任医师'; ELSEIF(work_date<='2018-01-01' and title = '实习医师') THEN SET title = '普通医生'; END IF; UPDATE doctor SET doct_title=title WHERE doct_id=d_id; UNTIL 0 END REPEAT; END执行效果: 【3】触发器功能描述:当有新增的医生后,科室内的医生数量对应更新SQL代码:DELIMITER $$ CREATE DEFINER=`DB_USER019`@`%` TRIGGER `UpdateDoctNum` AFTER INSERT ON `doctor` FOR EACH ROW begin UPDATE department SET doct_num=(SELECT count(*) FROM doctor WHERE new.dept_number=dept_number) WHERE dept_number=new.dept_number; end $$ DELIMITER ;执行效果:
  • [问题求助] 我的云服务器 和云数据库 MySQL 在不同地域下(如 C在广州,MySQL 在上海),可以直接内网访问吗?
    我的云服务器 和云数据库 MySQL 在不同地域下(如 C在广州,MySQL 在上海),可以直接内网访问吗?
  • [问题求助] 我的云服务器和云数据库 MySQL,能否直接使用内网连接?
    我的云服务器  和云数据库 MySQL,能否直接使用内网连接?
  • [问题求助] 云数据库 MySQL 回档过程中,如何实时查询回档进度和日志?
    云数据库 MySQL 回档过程中,如何实时查询回档进度和日志?
  • [问题求助] 如何用weautomate做一个爬取国家统计局数据的自动化机器人
    如何用weautomate做一个爬取国家统计局数据的自动化机器人
  • [低码] 低代码怎么连接本地数据库?
    低代码连接本地数据库好像是要用低代码的接口调用本地数据库,这个怎么调用啊?求具体的接口调用操作步骤
  • [问题求助] 手动部署22.200CMS失败
    【问题来源】交易集团【问题简要】独立部署22.200版本cms失败【问题类别】CMS【AICC解决方案版本】AICC22.200.0【期望解决时间】尽快【问题现象描述】客户测试环境,使用ideploy手动部署AICC22.200版本的CMS,到部署SUM部分检测失败,查看日志有两个报错:1、数据库和redis弱密码,可以数据库密码和redis密码都改为强密码了,如数据库密码使用过Szexgrp#_Huawei202307这种密码等,都还是报弱密码,虽然报弱密码,安装SIA确成功了,见截图一和图二。请问下ideploy部署对密码的要求有哪些。2、找不到keystorePass.txt文件,安装CMS上传了AICC整合、SIA安装包、SUM安装包和vminstallfiles.zip文件,是否缺少了其他文件,见截图三和截图四。【日志或错误截图】截图一截图二截图三截图四
  • [技术干货] 高可用只读,让RDS for MySQL更稳定
    业务应用对数据库的数据请求分写请求(增删改)和读请求(查)。当存在大量读请求时,为避免读请求阻塞写请求,数据库会提供只读实例方案。通过主实例+N只读实例的方式,实现读写分离,满足大量的数据库读取需求,增加应用的吞吐量。对于只读实例,如果采用单机无备节点作备份的方案,当实例出现故障或有重建需求的时候,会出现较长时间的不可用,通常需要客户做业务连接上的调整或是创建新只读实例等繁琐操作。单机只读架构如下所示,一旦单机只读发生故障,则业务中断,直至故障修复实例复位。RDS for MySQL只读节点稳定性解决方案为了保证业务的连续性及稳定性,RDS for MySQL在原来单机只读的基础上,推出了“高可用只读”。高可用只读在故障的容错能力、异常的应对能力方面具有比较大的优势。相比较单机只读动辄小时级的中断,高可用只读在故障倒换时,仅有秒级中断。高可用只读架构图如下,异常发生时(比如数据库异常,虚拟机异常等),HA组件可将主只读节点的VIP(虚拟IP)自动切换到备只读节点上,从而快速恢复业务。除高可用只读方案外,多只读实例Proxy轮询的方案也有相同效果。即购买多个只读实例,并开启数据库代理(proxy)的方案,在发生异常情况时,数据库代理自动把流量切换到其他正常只读实例,从而避免出现业务中断发生。Proxy方案架构图如下:单机只读、高可用只读、多只读+ proxy,在应用并发连接数、异常反应、成本方面的对比如下:方案名称单机只读高可用只读多只读+ proxy异常应对无HA自动倒换Proxy自动切换流量中断时长小时级秒级无感成本单机只读费用高可用只读费用(单机只读的1.7左右)X个单机只读费用+Y个proxy费用。注:相同只读节点数的情况下,高可用只读收费较Proxy方案低读连接地址数只读实例数只读实例数Proxy数以上的多方案给用户提供了灵活的可选择性,用户可以基于业务量、成本、业务运行效率等方面综合评估选择适合自己的方案。这篇文章中将重点介绍下高可用只读,未来我们还会基于proxy做一期介绍,敬请期待。高可用只读使用办法高可用只读在页面上的展示如图所示,replica-86e2为单机只读实例,replica-bb17及replica-b947为高可用只读实例。需要注意的是,高可用只读实例是一组(主、备)实例,其底层会自动实现故障机制响应。如何购买高可用只读直接购买高可用只读1.登录管理控制台。2. 单击管理控制台左上角的,选择区域和项目。3.单击页面左上角的,选择“数据库 > 云数据库 RDS”。4.在“实例管理”页面,选择指定的实例,单击操作列的“更多 > 创建只读”,进入“创建只读”页面。也可在实例的“基本信息”页面,单击实例拓扑图中,主实例下方的添加按钮,创建只读实例。5.在“创建只读”页面,只读模式选择“只读(高可用)”,填选实例相关信息后,单击“立即创建”。6.在“规格确认”页面,进行信息确认。如果需要重新选择,单击“上一步”,回到服务选型页面修改基本信息。对于按需计费的实例,信息确认无误后,单击“提交”,下发新增只读实例请求。对于包年/包月的实例,订单确认无误后,单击“去支付”,进入“付款”页面。7.高可用只读实例创建成功后,可以对其进行查看和管理。只读实例转换为高可用只读除了上述新建只读实例时选择高可用只读模式,RDS for MySQL也支持已有的单机只读升级为高可用只读,操作简单,无需进行老实例回收等操作。说明:非高可用只读可以转换为高可用只读实例,但高可用只读不允许转换为非高可用只读实例。登录管理控制台。单击控制台左上角的,选择区域和项目。单击页面左上角的,选择“数据库 > 云数据库 RDS”,进入RDS信息页面。在实例列表中,单击实例名称前的,单击非高可用只读实例的名称,进入实例的基本信息页面,即进入只读实例的管理页面。在转高可用页面,确认信息无误后,单击“立即申请”,即可将普通只读实例转换为高可用只读实例。高可用只读使用注意事项高可用只读支持的磁盘类型有:SSD云盘、本地盘以及极速型SSD;支持的规格类型有:通用型、独享型、鲲鹏通用增强型、x86通用型以及x86独享型。不建议修改高可用只读实例的参数,否则会影响高可用只读的可靠性。高可用只读不允许进行如下操作:修改端口、转换到非高可用只读实例。创建高可用只读或是变更到高可用只读时,需要保证实例所在子网的IP充足。
  • [数据库] 【第57课】RDS for MySQL停止和开启实例
    在仅使用数据库实例进行日常开发活动时,RDS for MySQL支持通过暂时停止按需实例以节省费用。实例停止后,支持手动重新开启实例。实例停止后还会收费吗?实例停止后,虚拟机(VM)停止收费,其余资源包括弹性公网IP(EIP)、存储资源、数据库代理(Proxy)、以及备份都正常计费。如何停止实例?1. 在“实例管理”页面,在主实例上,选择“更多 > 停止实例”。2. 在停止实例弹框,单击“是”,停止实例。3. 实例状态为“已停止”,说明实例停止成功。    实例停止后,自动备份任务也会停止。如何开启实例?1. 在“实例管理”页面,在主实例上,选择“更多 > 开启实例”。2. 在开启实例弹框,单击“是”,开启实例。3. 实例状态为“正常”,说明实例开启成功。    实例开启后,会自动触发一次全量备份。
  • [数据库] 【第56课】RDS for MySQL参数模板一键导入导出,参数配置轻松搞定
    云数据库RDS for MySQL支持参数模板的导入和导出功能。导入参数模板:导入后会生成一个新的参数模板,供您后期使用。导出参数模板:您可以将数据库实例参数列表,导出并生成一个新的参数模板,供您后期使用。或者将数据库实例参数列表(参数名称,值,描述)导出到CSV中,方便查看并分析。导入参数模板1. 登录管理控制台。2. 单击管理控制台左上角的图标,选择区域和项目。3. 单击页面左上角的图标,选择“数据库 > 云数据库 RDS”,进入RDS信息页面。4. 在“参数管理”页面,单击“导入参数模板”。5. 在弹出框中,选择本地设置好的参数列表(参数名称,值,描述),单击“确定”。文件只能单项导入,只支持csv格式,文件大小不能超过50K。导出实例的参数1. 登录管理控制台。2. 单击管理控制台左上角的图标,选择区域和项目。3. 单击页面左上角的图标,选择“数据库 > 云数据库 RDS”,进入RDS信息页面。4. 在“实例管理”页面,选择指定的实例,单击实例名称,进入实例的基本信息页面。5. 在左侧导航栏中选择“参数修改”,在“参数”页签单击“导出”。导出到参数模板。将该实例对应参数列表导出并生成一个参数模板,供您后期使用。在弹出框中,填写新参数模板名称和描述,单击“确定”。创建完成后,会生成一个新的参数模板,您可在“参数管理”页面的“自定义模板”页签对其进行管理。 ​参数模板名称长度在1~64个字符之间,区分大小写,可包含字母、数字、中划线、下划线或句点,不能包含其他特殊字符。参数模板的描述长度不能超过256个字符,且不能包含回车和>!<"&'=特殊字符。导出到文件。将该实例对应的参数模板信息(参数名称,值,描述)导出到CSV表中,方便用户查看并分析。在弹出框中,填写文件名称,单击“确定”。​文件名称长度在4~81个字符之间,必须以字母开头,可以包含字母、数字、中划线或下划线和中文,不能包含其他特殊字符。导出参数模板1. 登录管理控制台。2. 单击管理控制台左上角的图标,选择区域和项目。3. 单击页面左上角的图标,选择“数据库 > 云数据库 RDS”,进入RDS信息页面。4. 在“参数管理”页面,选择“系统模板”或“自定义模板”,选择“更多 > 导出”。5. 在弹出框中,设置文件名,单击“确定”。文件名长度4~81个字符。
  • [技术干货] 停机不收费!华为云RDS for MySQL降本有奇招
    云计算已经成为现代企业中最重要的组成部分之一。为了更好地实现数据管理,许多企业选择使用云上的数据库来存储和管理数据。在这种情况下,RDS (Relational Database Service) 凭借强大的性能和可靠性,广泛的场景适用性,及低成本等优势,成为企业上云的流行选择。当前,降本增效成为大多数企业的诉求,RDS推出的停机不收费特性,进一步降低了企业使用数据库的成本。想要深入了解RDS停机不收费,请不要错过本文。一、关于停机不收费随着业务规模和数据量的不断增长,大部分企业数据库服务器的运行成本会急剧上升,如何管控和降低成本成为企业管理者需要考虑的问题。因此,一旦不需要使用RDS,停止对它的使用便成为了一个重要的成本管理手段。RDS for MySQL近年来推出了“RDS停机不收费”策略,以帮助用户节省云上数据库的操作成本。实例停止后,虚拟机(VM)停止收费,降低费用成本。二、支持的规格/磁盘停机不收费目前支持的存储类型为SSD云盘、极速型SSD的按需实例,暂不支持DEC专属云。实例停机后,虚拟机资源停止收费,弹性公网IP(EIP)、存储资源、备份所占用的资源正常计费。华为云RDS团队将持续更新和完善该功能,为用户提供更加便利和优质的服务体验。三、RDS for MySQL停机不收费工作模式RDS for MySQL支持单机、主备及只读三种类型的实例,详细如下:实例类型简介单机实例采用单个数据库节点部署架构,与主流的主备实例相比,它只包含一个节点,但具有高性价比。主备实例采用一主一备的经典高可用架构,主备实例的每个节点规格保持一致。RDS支持跨AZ高可用,选择主可用区和备可用区不在同一个可用区(AZ)。只读实例采用单个物理节点架构或高可用架构。RDS for MySQL停机不收费,支持单机实例、主备实例和只读实例。其中,主备实例在关机时会校验主备的复制一致性,以确保数据的完整性。关闭实例的ECS后,ECS虚拟机停止计费,以减轻用户的财务压力。重新开机时,RDS for MySQL会优先启动实例ECS,并在恢复主节点与备节点以及主节点与只读节点间的复制关系之后,再通知开始计费ECS虚拟机。只读实例不支持单独关机,主实例关闭时,只读实例被同步关闭,以保持数据的一致性。在开机时,只读实例也会随主实例一起开启,并且只读实例的状态需要与主实例保持强一致。所以,RDS for MySQL可以满足用户在不同场景下的停机需求,为用户提供高效、便捷的服务体验。四、RDS for MySQL如何使用停机功能?使用 RDS 停机功能不仅方便,而且简单。以下是创建逻辑:1.登录管理控制台;2.单击管理控制台左上角标,选择区域和项目;3.选择“数据库 > 云数据库 RDS”,进入RDS信息页面;4.在“实例管理”页面,选择指定的主实例,单击“更多 > 停止实例”;5.在停止实例弹框,单击“是”,停止实例;6.若您已开启高危操作保护,在“身份验证”弹出框中单击“获取验证码”,正确输入验证码并单击“确定”,页面自动关闭;通过二次认证再次确认您的身份,进一步提高帐号安全性,有效保护您安全使用云产品。关于如何开启操作保护,具体请参考《统一身份认证服务用户指南》的内容。7.稍后刷新实例列表,查看停止结果。如果实例状态为“已停止”,说明实例停止成功。实例默认停止七天,如果七天后未手动开启实例,数据库实例将于七天后的下一个可维护时间段内自行启动。五、停机不收费后的相关事项关机后,用户将无法使用该实例,且在关机状态下,不允许进行任何操作,用户将无法通过数据库管理平台登录该实例,相应的按钮也将变为灰色。如果在当前话单周期内进行关机操作,系统将继续出话单,并根据插入的话单记录中的时间间隔自动计量停机时间。所以,用户需要谨慎操作,确保不会对业务造成影响。单次停机时间为7天,停机后,只能使用开机和删除功能。RDS 停机不收费实现的是暂时停止数据库实例的使用,而不是终止数据库实例。如果希望永久停用数据库,请使用删除实例功能。需要注意的是,对于已停止的实例,其被删除后不会进入回收站。综上所述,RDS for MySQL 支持停机不收费,用户可以根据自己的业务需求灵活地控制数据库实例的运行时间,避免不必要的资源浪费和费用支出。另外,停机不计费的功能也能使用户更加便捷地进行实例管理和维护,提高了用户的使用体验。
总条数:347 到第
上滑加载中