• [技术干货] MySQL和SQLServer数据类型对比
    由于MySQL与Server在数据类型上有部分差异,比如数值类型表示的数值的范围和精度,日期类型的格式和精度等,在我们转换数据库或是在迁移数据库时,会遇上一定的麻烦,下面介绍了一些MySQL与SQLServer数据库数据类型的对应关系。以下所涉及的所有字段类型,在华为云数据管理服务(DAS)均已支持,DAS旨在为用户提供便捷、高效的数据库管理操作入口,欢迎体验使用DAS服务~MySQLSQL Server说明类型存储空间(字节)类型存储空间(字节)位值类型BIT    (1~64)(M+7)/8    M为指定的长度BIT可被压缩MySQL的BIT可以指定长度(1到64),一般使用b'101010'类似的二进制序列为其赋值;      SQLServer的BIT不可指定长度,可以取值为1、0或NULL,且如果表中的BIT列为8列或更少,则这些列作为1个字节存储。如果BIT列为9到16列,则这些列作为2个字节存储,以此类推,SQLServer的BIT对应于MySQL的TINYINT(1)。整数类型TINYINT[-128~127]1TINYINT[0-255]1注意:MySQL和SQLServer的TINYINT表示的范围并不相同;      MySQL和SQLServer的数值类型(包括下方的浮点数类型)都可以在声明时指定显示的长度,如INT(10),当实际存储的数值为7时,则会显示为0000000007。SMALLINT[-2^15~2^15-1]2SMALLINT[-2^15~2^15-1]2MEDIUMINT    [-2^23~2^23-1]3不支持INT[-2^31~ 2^31-1]4INT[-2^31~ 2^31-1]4BIGINT[-2^63~2^63-1]8BIGINT[-2^63~2^63-1]8INTEGER4不支持相当于INTSERIAL8不支持相当于BIGINT   UNSIGNED NOT NULL AUTO_INCREMENT UNIQUEBOOL1不支持相当于TINYINT(1)BOOLEAN1不支持货币值数据类型不支持SMALLMONEY4SQLServer的货币值数据类型,精度为所代表的货币单位的万分之一,在MySQL中SMALLMONEY可以用decimal(10,4)替代,MONEY可以用默认转换为decimal(19,4)替代。不支持MONEY8浮点数类型FLOAT4或8FLOAT4或8MySQL和SQLServer的浮点数存储的都是近似值,高精度的计算可能会有误差。如果需要较高的精度,推荐使用DECIMAL类型。      MySQL的FLOAT(M,D)和FLOAT(p)是不同的,前者表示一个单精度浮点数,精度为7位小数,M和D都是显示的位数,M是总位数,D是小数点后面的位数;      后者与SQLServer的FLOAT相同,都可指定尾数的位数p,如果0<=p<=24则为4个字节,如果25<=p<=53则为8个字节REAL8REAL4MySQL:DOUBLE的同义词,如果sql_mode启动了REAL_AS_FLOAT模式,则是FLOAT的同义词而不是   DOUBLE。    SQLServer:相当于FLOAT(24)DOUBLE8不支持MySQL:双精度浮点数,精确到15位小数。DOUBLE PRECISION8DOUBLE PRECISIONMySQL:相当于DOUBLE;    SQLServer:相当于FLOAT(53)。定点数类型DECIMAL(1~65[,1~30])可变DECIMAL(1~38[,1~38])可变固定精度和小数位数的数值数据类型。    对于精度比较高的东西,比如货币数字,可以采用DECIMAL类型,FLOAT和BOUBLE容易产生误差。存储所需要的空间都与采用的精度有关系。NUMERIC可变NUMERIC可变等同于DECIMALDEC可变DEC可变FIXED可变不支持日期类型DATE[1000-01-01~9999-12-31]3DATE[0001-01-01~9999-12-31]3显示的格式都为YYYY-MM-DDDATETIME[1000-01-01 00:00:00.000000~9999-12-31 23:59:59.999999]5+小数秒存储DATETIME[1753-01-01 00:00:00.000~9999-12-31 23:59:59.997]8显示的格式都为YYYY-MM-DD   hh:mm:ss[.fraction]    MySQL的精度为0.000001,SQLServer的精度会舍入到 .000、.003 或 .007 秒三个增量。TIMESTAMP[1970-01-01 00:00:01.000000~2038-01-19 03:14:07.999999]4+小数秒存储TIMESTAMP8MySQL和SQLServer的TIMESTAMP如果未明确赋值,则会自动设置为最近修改的日期和时间。TIME[-838:59:59.000000 ~838:59:59.000000]3+小数秒存储TIME[00:00:00.0000000~23:59:59.9999999]5显示的格式hh:mm:ss[.fraction]    注意:MySQL和SQLServer的精确度不同,MySQL是6位,SQLServer是7位。YEAR    [1901~2155]和00001不支持MySQL:显示的格式YYYY不支持SMALLDATETIME    [1900-01-01 00:00:00~2079-06-06 23:59:59]4SQLServer:显示格式YYYY-MM-DD   hh:mm:ss,精确度为1分钟不支持DATETIME2    [0001-01-01 00:00:00.0000000~9999.12.31 23:59:59.9999999]可变SQLServer:显示的格式YYYY-MM-DD   hh:mm:ss[.fraction]    精度为7位数,精度小于3时为6个字节;精度为3和4时为7个字节。所有其他精度则需要8个字节。不支持DATETIMEOFFSET    [0001-01-01 00:00:00.0000000~9999.12.31 23:59:59.9999999]10SQLServer:带有时区偏移量的时间格式,显示的格式为YYYY-MM-DD   hh:mm:ss[.nnnnnnn] [{+|-}hh:mm]    时区偏移量-14:00到+14:00字符串类型CHAR(1~255)可变CHAR(1~8000)或MAXn   (n为定义的字符串长度,以字节为单位)注意:MySQL和SQLServer所采用的单位是不同的,MySQL是以字符为单位,所需要的存储空间为M*w个字节,w为字符集中最大长度的字符所需的字节数。      SQLServer是以字节为单位的,对于单字节编码字符集(如拉丁文),存储大小为n个字节,并且可存储的字符数也为n,对于多字节编码字符集,存储大小仍为n个字节,但可存储的字符数可能小于n。VARCHAR(1~65535)L+1    (L表示给定字符串值的实际长度)VARCHAR(1~8000)或MAXn+2可变长度的字符串数据TINYTEXT    (1~255)L+1不支持MySQL的TEXT类似于SQLServerVARCHAR类型,在声明时指定的是存储用的字节数,实际存储的字符数和字符集有关。    SQLServer将在未来版本中删除TEXT数据类型,不建议使用。TEXT(1~65535)L+2TEXTMEDIUMTEXT    (1~2^24-1)L+3不支持LONGTEXT    (1~2^32-1)L+4不支持不支持NVARCHAR    (1~4000)或MAX存储的是Unicode数据类型的字符,所有的字符都用两个字节表示。不支持NCHAR    (1~4000)不支持NTEXTSQLServer将在未来版本中删除NTEXT数据类型,不建议使用。字节串类型BINARY(1~255)M    (M为指定的字节长度)BINARY(1~8000)n类似于VARCHAR,但是保存的是二进制数据而非字符。VARBINARY(1~65535)L+1VARBINARY(1~8000)或MAXn+2TINYBLOBL+1不支持类似于VARBINARY,但是保存的是二进制数据而非字符。BLOBL+2不支持MEDIUMBLOBL+3不支持LONGBLOBL+4不支持不支持IMAGESQLServer将在未来版本中删除IMAGE数据类型,不建议使用。ENUM类型ENUM可变不支持单选字符串类型,适合存储表单界面中的单选值,格式为:enum('选项1','选项2','选项3',...),enum的enum的选项都会对应一个数字,依次是1,2,3,4,5...,最多有65535个选项,使用的时候可以使用选项的字符串格式,也可以使用对应的数字。SET类型SET可变不支持多选字符串类型,适合存储表单界面的多选值。以上为MySQL和SQLServer的常用数据类型的使用方法对比。DAS服务提供友好的UI操作界面,可以让您方便、高效的管理数据库,敬请期待~ 
  • [技术干货] 在MySQL中如何使用explain查询SQL的执行计划
                      1、什么是MySQL执行计划要对执行计划有个比较好的理解,需要先对MySQL的基础结构及查询基本原理有简单的了解。MySQL本身的功能架构分为三个部分,分别是 应用层、逻辑层、物理层,不只是MySQL ,其他大多数数据库产品都是按这种架构来进行划分的。·         应用层,主要负责与客户端进行交互,建立链接,记住链接状态,返回数据,响应请求,这一层是和客户端打交道的。·         逻辑层,主要负责查询处理、事务管理等其他数据库功能处理,以查询为例。        首先接收到查询SQL之后,数据库会立即分配一个线程对其进行处理,第一步查询处理器会对SQL查询进行优化,优化后会生成执行计划,然后交由计划执行器来执行。计划执行器需要访问更底层的事务管理器,存储管理器来操作数据,他们各自的分工各有不同,最终通过调用物理层的文件获取到查询结构信息,将最终结果响应给应用层。·         物理层,实际物理磁盘上存储的文件,主要有分文数据文件,日志文件。   通过上面的描述,生成执行计划是执行一条SQL必不可少的步骤,一条SQL性能的好坏,可以通过查看执行计划很直观的看出来,执行计划提供了各种查询类型与级别,方面我们进行查看以及为作为性能分析的依据。2、如何分析执行计划MySQL为我们提供了 explain 关键字来直观的查看一条SQL的执行计划。explain显示了MySQL如何使用索引来处理select语句以及连接表,可以帮助选择更好的索引和写出更优化的查询语句。下面我们使用 explain 做一个查询,如下:1.    mysql> explain select * from payment;  2.    +----+-------------+---------+------------+------+---------------+------+---------+------+-------+----------+-------+  3.    | id | select_type | table   | partitions | type | possible_keys | key  | key_len | ref  | rows  | filtered | Extra |  4.    +----+-------------+---------+------------+------+---------------+------+---------+------+-------+----------+-------+  5.    |  1 | SIMPLE      | payment | NULL       | ALL  | NULL          | NULL | NULL    | NULL | 16086 |   100.00 | NULL  |  6.    +----+-------------+---------+------------+------+---------------+------+---------+------+-------+----------+-------+  7.    1 row in set, 1 warning (0.01 sec) 查询结构中有12列,理解每一列的含义,对理解执行计划至关重要,下面用一个表格的形式进行说明。列名说明idSELECT识别符,这是SELECT的查询序列号。select_typeSELECT类型,可以为以下任何一种:·               SIMPLE:简单SELECT(不使用UNION或子查询)·               PRIMARY:最外面的SELECT·               UNION:UNION中的第二个或后面的SELECT语句·               DEPENDENT UNION:UNION中的第二个或后面的SELECT语句,取决于外面的查询·               UNION RESULT:UNION 的结果·               SUBQUERY:子查询中的第一个SELECT·               DEPENDENT SUBQUERY:子查询中的第一个SELECT,取决于外面的查询·               DERIVED:导出表的SELECT(FROM子句的子查询)table输出的行所引用的表partitions如果查询是基于分区表的话,显示查询将访问的分区。type联接类型。下面给出各种联接类型,按照从最佳类型到最坏类型进行排序:·               system:表仅有一行(=系统表)。这是const联接类型的一个特例。·               const:表最多有一个匹配行,它将在查询开始时被读取。因为仅有一行,在这行的列值可被优化器剩余部分认为是常数。const表很快,因为它们只读取一次!·               eq_ref:对于每个来自于前面的表的行组合,从该表中读取一行。这可能是最好的联接类型,除了const类型。·               ref:对于每个来自于前面的表的行组合,所有有匹配索引值的行将从这张表中读取。·               ref_or_null:该联接类型如同ref,但是添加了MySQL可以专门搜索包含NULL值的行。·               index_merge:该联接类型表示使用了索引合并优化方法。·               unique_subquery:该类型替换了下面形式的IN子查询的ref:      value IN (SELECT primary_key FROM single_table WHERE some_expr)      unique_subquery是一个索引查找函数,可以完全替换子查询,效率更高。·               index_subquery:该联接类型类似于unique_subquery。可以替换IN子查询,但只适合下列形式的子查询中的非唯一索引:       value IN (SELECT key_column FROM single_table WHERE some_expr)·               range:只检索给定范围的行,使用一个索引来选择行。·               index:该联接类型与ALL相同,除了只有索引树被扫描。这通常比ALL快,因为索引文件通常比数据文件小。·               ALL:对于每个来自于先前的表的行组合,进行完整的表扫描,说明查询就需要优化了。一般来说,得保证查询至少达到range级别,最好能达到ref。possible_keys指出MySQL能使用哪个索引在该表中找到行key显示MySQL实际决定使用的键(索引)。如果没有选择索引,键是NULL。key_len显示MySQL决定使用的键长度。如果键是NULL,则长度为NULL。在不损失精确性的情况下,长度越短越好ref显示使用哪个列或常数与key一起从表中选择行。rows显示MySQL认为它执行查询时必须检查的行数。多行之间的数据相乘可以估算要处理的行数。filtered显示了通过条件过滤出的行数的百分比估计值。Extra该列包含MySQL解决查询的详细信息·               Distinct:MySQL发现第1个匹配行后,停止为当前的行组合搜索更多的行。·               Select tables optimized away MySQL根本没有遍历表或索引就返回数据了,表示已经优化到不能再优化了·               Not exists:MySQL能够对查询进行LEFT JOIN优化,发现1个匹配LEFT      JOIN标准的行后,不再为前面的的行组合在该表内检查更多的行。·               range checked for each record (index map: #):MySQL没有发现好的可以使用的索引,但发现如果来自前面的表的列值已知,可能部分索引可以使用。·               Using filesort:MySQL需要额外的一次传递,以找出如何按排序顺序检索行,说明查询就需要优化了。·               Using index:从只使用索引树中的信息而不需要进一步搜索读取实际的行来检索表中的列信息。·               Using temporary:为了解决查询,MySQL需要创建一个临时表来容纳结果,说明查询就需要优化了。·               Using where:WHERE 子句用于限制哪一个行匹配下一个表或发送到客户。·               Using sort_union(...), Using union(...), Using intersect(...):这些函数说明如何为index_merge联接类型合并索引扫描。·               Using index for group-by:类似于访问表的Using      index方式,Using index for group-by表示MySQL发现了一个索引,可以用来查 询GROUP BY或DISTINCT查询的所有列,而不要额外搜索硬盘访问实际的表。根据上述表格,可以在执行计划分析上提供很好的帮助。 【此文为转载文章】
  • [技术干货] MySQL 数据库开发的33 条军规
    MySQL 数据库开发的33 条军规 写在前面的话:总是在灾难发生后,才想起容灾的重要性总是在吃过亏后,才记得曾经有人提醒过 (一)核心军规(1)不在数据库做运算:cpu计算务必移至业务层(2)控制单表数据量:单表记录控制在1000w(3)控制列数量:字段数控制在20以内(4)平衡范式与冗余:为提高效率牺牲范式设计,冗余数据(5)拒绝3B:拒绝大sql,大事物,大批量(二)字段类军规(6)用好数值类型tinyint(1Byte)smallint(2Byte)mediumint(3Byte)int(4Byte)bigint(8Byte)bad case:int(1)/int(11)(7)字符转化为数字用int而不是char(15)存储ip(8)优先使用enum或set例如:** enum (‘F’, ‘M’)(9)避免使用NULL字段NULL字段很难查询优化NULL字段的索引需要额外空间NULL字段的复合索引无效bad case:name char(32) default nullage int not nullgood case:age int not null default 0(10)少用text/blobvarchar的性能会比text高很多实在避免不了blob,请拆表(11)不在数据库里存图片:是否需要解释?(三)索引类军规(12)谨慎合理使用索引改善查询、减慢更新索引一定不是越多越好(能不加就不加,要加的一定得加)覆盖记录条数过多不适合建索引,例如“性别”(13)字符字段必须建前缀索引(14)不在索引做列运算bad case:select id where age +1 = 10;(15)innodb主键推荐使用自增列(SK:博主不认可)主键建立聚簇索引主键不应该被修改字符串不应该做主键如果不指定主键,innodb会使用唯一且非空值索引代替(16)不用外键请由程序保证约束(四)sql类军规(17)sql语句尽可能简单一条sql只能在一个cpu运算大语句拆小语句,减少锁时间一条大sql可以堵死整个库(18)简单的事务事务时间尽可能短bad case:上传图片事务(19)避免使用trig/func触发器、函数不用客户端程序取而代之(20)不用select *消耗cpu,io,内存,带宽这种程序不具有扩展性(21)OR改写为IN()or的效率是n级别in的消息时log(n)级别in的个数建议控制在200以内select id from t where phone=’159′ or phone=’136′;=>select id from t where phone in (’159′, ’136′);(22)OR改写为UNIONmysql的索引合并很弱智select id from t where phone = ’159′ or name = ‘john’;=>select id from t where phone=’159′unionselect id from t where name=’jonh’(23)避免负向%(24)慎用count(*)(25)同上(26)limit高效分页limit越大,效率越低select id from t limit 10000, 10;=>select id from t where id > 10000 limit 10;(27)使用union all替代unionunion有去重开销(28)少用连接join(29)使用group by分组自动排序(30)请使用同类型比较(31)使用load data导数据load data比insert快约20倍;(32)打散批量更新(33)新能分析工具show profile;mysqlsla;mysqldumpslow;explain;show slow log;show processlist;show query_response_time(percona)
  • [技术干货] 一次MySQL5.7线上故障分析
    MySQL 5.7 GA(wwwqsfanlicom)已经有很长一段时间了,经过测试评估,在5.7.16版本release之后,我们开始在生产线上规模部署,一个多月相安无事,心中窃喜,在部署了大约200+实例之后,天有不测风云,故障开始接二连三。某日,一个从库报OOM。该实例的innodb_buffer_pool_size = 40G,而系统内存是64G,怎么就能OOM了呢,先下线该实例,再看情况:1、机器内存: 基本快要跪了   total    used    free    shared    buffers    cached Mem:    65808000    65492564    315436    0    1648    247284 -/+ buffers/cache: 65243632    564368 Swap:    2088952    2087852    11002、看谁是元凶:确认是mysqldPID    USER    PR    NI    VIRT    RES    SHR S %CPU %MEM    TIME+  COMMAND     28086 mysql    20    0 87.3g    61g 5192 S 21.2 97.7  28226:23 mysqld3、看MySQL监控:com_delete/innodb_rows_deleted : 29/9340 com_update/innodb_rows_updated : 155/9740 com_select/innodb_rows_selected : 299/39400该业务正常情况下是不可能出现这么大的innodb_rows值的,先stop slave,com_delete/com_update/com_select的值变0,但是innodb_rows值并没有降低,什么!!!现在已经没有任何写入了,怎么可能,诡异了。4、再看看LSN: 还在涨?5、再看看是否有事务在回滚(wwwqsfanlicom):确实有线程在rollback,但是该实例也没有什么大事务,stop slave都已经好久了,为什么还在回滚呢?6、pstack $mysqldpid看看线程都在干什么:从下图能看出都是在compress_gtid_table()里,难道和gtid compress有关系?**一段关于gtid compress的介绍: MySQL 5.7中新增了一个mysql.gtid_executed表,用于记录当前执行过的gtid,在binlog开启的情况下,当binlog retation的时候会唤醒一个内部线程对这个表的数据进行压缩合并。7、看下mysql.gtid_executed表的情况:果然是没有压缩,看来是在压缩这个表数据的时候出错了,然后产生了回滚操作。8、经过对比,最后确认是这个参数引起的:我们为了防止有DBA不小心在从库上执行SQL,给gtid_mode=on的复制模式留下隐患,将super_read_only设置成了on,为此,还特意修改了MHA的源码,以便检测和支持这个设置,结果人算不如天算,踩上了这个坑。将super_read_only 设置成0,当binlog retation后可以看到mysql.gtid_executed的compress恢复正常了,innodb_rows也正常了:
  • [技术干货] 【DBA系列】003 MySQL 执行语句总报错,导致应用故障怎么办?
           想了解更多信息,请扫码关注华为云数据库公众号
  • [技术干货] MySQL复制
    帖子已转到 https://bbs.huaweicloud.com/forum/thread-49360-1-1.html 谢谢!
  • [技术干货] 如何在Ubuntu /Centos 上快速部署MySQL关系型数据库
    1、下载软件wget -q http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz2、解压移动tar xf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz  mkdir -p /application mv mysql-5.6.35-linux-glibc2.5-x86_64 /software/mysql-5.6.35 useradd -s /sbin/nologin -M mysql chown -R mysql.mysql /software/mysql-5.6.35/ cd /software/mysql-5.6.35/3、初始化数据库cp support-files/my-default.cnf /etc/my.cnf ./scripts/mysql_install_db --basedir=/software/mysql-5.6.35/ --datadir=/software/mysql-5.6.35/data/ --user=mysql sed -i 's#/usr/local/mysql#/software/mysql-5.6.35#g' /software/mysql-5.6.35//bin/mysqld_safe4、启动登录/software/mysql-5.6.35/bin/mysqld_safe &lsof -i :3306PATH="/software/mysql-5.6.35/bin/:$PATH"5、登录测试/software/mysql-5.6.35//bin/mysqld_safe & lsof -i :3306PATH="/software/mysql-5.6.35/bin/:$PATH" [root@tanggongcheng mysql-5.6.35]# mysql Welcome to the MySQL monitor.  Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.6.35 MySQL Community Server (GPL) Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> select version(); +-----------+| version() | +-----------+| 5.6.35    | +-----------+1 row in set (0.00 sec) mysql> create database tanggongcheng; Query OK, 1 row affected (0.00 sec) mysql> create database yanxiaolei; Query OK, 1 row affected (0.00 sec)mysql> show databases like 'old%'; +-----------------+| Database (old%) | +-----------------+| tanggongcheng          || yanxailei         | +-----------------+2 rows in set (0.00 sec)
  • [技术干货] 高配版 MySQL 如何升级?这里有份最新技术解析
    11月10日,由中国 MySQL 用户组主办的 ACMUG & CRUG 2018 技术沙龙,全国巡演武汉站拉开序幕。华为云数据库也随之亮相,带来《MySQL数据库在云端 - 华为云数据库MySQL实战》主题演讲,将华为云对 MySQL内核做的大量优化为大家一一揭示。武汉作为全国经济中心、高水平科技创新中心、商贸物流中心和国际交往中心四大功能为支撑的国家中心城市,许多高新技术企业的逐渐落户,给这座具有历史厚重的城市带来科技气息。华为云数据库的到来,为 ACMUG & CRUG、为武汉的科技色彩都添上了绚烂的一笔。 由于开源数据库已经在云上蓬勃发展,但云数据库并不是简单 VM+DBS 的堆叠, 而是需要结合软硬件做深度改造,因此,相关技术人员们正面临不同程度的挑战。本次活动主要面向 DBA(数据库管理员)、运维、开发、MySQL用户、Redis 用户等人群,而华为云数据库技术专家带来的分享,也正是围绕他们的需求展开。 云数据库 VS 云端自建数据库 关于云数据库和云端自建数据库的差异,前者使用便捷、成本更低等,已经是老生常谈的话题。而具体到技术人员的使用过程中,云端自建数据库还会存在更多挑战,下面列举几个关键点。云端自建数据库的挑战: 没有 super 权限由于没有super 权限,管理人员往往不能执行 reset master 等管理命令、不能通过 set 命令修改参数;此外导入数据、创建触发器等可能报错;而且不能自行删除日志,可能导致磁盘空间满,无法对数据库进行写入操作。 不能登录操作系统这导致的问题主要有两个:不能接触物理文件,不能从服务器端 load 数据,对管理人员来说,相当不方便。 不能自由选择存储引擎由于云端自建数据库不能自由支持第三方存储引擎,导致管理人员选择受限。 不能安装插件由于不能自行安装插件,导致使用过程中某些功能或需求难以实现。那么,云数据库又是如何解决这些问题呢? 云数据库的对应措施主备高可用、实例重启等由云服务商自动完成,通过 console 来修改参数,通过规避方法可以避免使用 super 权限。通过 console 服务化方式提供,比如慢日志、错误日志等,客户从客户端执行 load data local infile 导入数据,权限默认放开。目前支持 MEMORY、CSV、MyISAM、InnoDB、ARCHIVE、MGR_MYISAM 等主要存储引擎,满足绝大多数场景。将一些常用插件事先安装。 事实上,云数据库与云端自建数据库的最大区别,正是在于对数据库系统的关注程度。 云端自建数据库相较传统自建数据库而言,虽然免去了机房、机架、网络、服务器、操作系统等基础设施的投入和维护,但仍然需要技术人员对数据库系统自行搭建和运维,从安装到运维,升级、补丁、备份与恢复、高可用、弹性伸缩等工作,一步都不能少。 云数据库最大的优势,则在于解决数据库的软硬问题,提供数据库从搭建到运维的一站式服务,将技术人员从繁复的日常运维中解放出来,投入到架构升级、应用优化等更重要的工作中去。 华为云数据库 MySQL 增强版 在与客户和用户的大量接触中,华为云数据库从大家亟待解决的问题入手,基于业务可靠性和可用性进行优化,提升 RDS 服务体验,解决痛点问题。 一方面,华为云 MySQL 积极拥抱社区借鉴优秀方案,回合部分代码、fix 其中的 bug,达到快速上线的要求。一方面,华为云 MySQL主动拥抱公有云架构,面向最终的服务体系,端到端进行优化调整,根据客户可维护性诉求提升服务质量。 华为云 MySQL 从功能到架构上的优化主要有以下几个方面: GTID 约束放开社区版对于打开 GTID 有几种约束限制,会导致一些用户迁移上云需要应用改造。华为云 MySQL 搭载 HWSQL 内核,首家全面支持 GTID,无需改造应用即可迁移上云,领先市场。 引入线程池传统 MySQL 采用的单线程模式,高并发场景下性能会降低。华为云引入企业版中线程池的功能,大并发下支持更多连接,性能稳定卓越。当前,华为云 MySQL 5.6 和 5.7 都引入了事务级的多线程复制,有效降低复制延迟。 支持存储引擎自动转换华为云 MySQL能自动将存储引擎 MyISAM 转换为 InnoDB,完全支持事务,同时避免表级锁,提高并发性,且兼容 MyISAM 语法,对用户完全透明,解决 MyISAM 不支持事务的问题。 支持 RDS 权限控制防止用户误删除系统库或者执行一些破坏实例正常运行的命令,能保证实例的更稳定运行。 引入备份锁,彻底解决备份事务阻塞问题社区版 MySQL 使用传统备份工具进行物理备份时,需执行 flush table with read lock;命令获取全局读锁;如果此前存在长事务运行未结束,读锁命令将持续处于等待状态,导致后续读写语句阻塞。华为云 MySQL 引入 backup lock,彻底解决备份事务阻塞问题,提高备份效率。 支持 root 账号 kill 掉其他 user 线程,线上线**验一致Root 能 kill 其他线程,查看每个线程的内存、CPU 使用情况,符合线下使用习惯,方便运维。 当前,华为云 MySQL 搭载 HWSQL 内核,增强连接池特性,并发 5000 ,性能稳定,QPS 超过 17万+,高并发性能提升50%以上。值得一提的是,华为云近期推出了基于 Paxos 协议的一主两备三节点架构的 MySQL 金融版,解决网络孤岛、脑裂等分布式系统问题,确保数据最终一致性。保证数据库高可用和高可靠,满足金融场景下的数据库高要求。 了解华为云 MySQL 更多内容: https://www.huaweicloud.com/product/mysql.html?utm_source=wechat&utm_medium=officialaccount&utm_content=sjk_wh_1108 免费试用华为云 MySQL:https://activity.huaweicloud.com/free_test/index.html?utm_source=wechat&utm_medium=officialaccount&utm_content=sjk_wh_1108
  • [分享交流] Mysql数据库无法远程连接的解决方法
    #bind-address = 127.0.0.1CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';   GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' WITH GRANT OPTION;   CREATE USER 'username'@'%' IDENTIFIED BY 'password';   GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;来源: Mysql数据库无法远程连接的解决方法
  • [技术干货] Mysql数据库无法远程连接的解决方法
    在远程主机上,我开启了mysql 服务,用 phpmyadmin 可以打开,比如说用户名为 root,密码为 123456。不过用 Mysql 客户端远程连接时却报了错误,比如 Mysql-Front 报了如下错误。Access denied for user ‘root’@’121.42.8.33′(using password:YES)比较奇怪,phpmyadmin 可以正常访问,而 Mysql-Front 为什么无法连接呢?可能的原因,应该就是 IP 限制了,phpmyadmin在连接时使用的是localhost,而我们访问页面才使用的远程主机的 IP,而 Mysql-Front 连接的是远程主机。解决方法如下,首先修改mysql的配置文件,my.cnf,将#bind-address = 127.0.0.1这一行注释掉,要不然它永远限制了只能本机连接然后我们需要新建一个用户,然后授予所有 IP 可以访问的权限就好啦。在下面的 sql 语句中,username 即为用户名,password 为你要设置的密码。CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';   GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' WITH GRANT OPTION;   CREATE USER 'username'@'%' IDENTIFIED BY 'password';   GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;通过执行以上语句,便创建了一个用户名为 username,密码为 password 的新账户,再用新账号登录,就可以连接成功啦。
  • Ubuntu Linux配置Nginx+MySQL+PHP+phpMyAdmin详细步骤
    sudo apt-get updatesudo apt-get install nginxsudo killall apache2usrshare/nginx/html,我们将其修改为/var/www,当然可以根据个人习惯灵活更改。etcnginx/sites-available/default文件root /usr/share/nginx/html;root /var/wwwindex index.html index.htm;index index.html index.php index.htm;sudo service nginx restartvarwww目录下新建index.html文件,写入一些测试文字。sudo apt-get install php5 php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-pspell php5-recode php5-snmp php5-tidy php5-xmlrpc php5-sqlite php5-xslsudo apt-get install mysql-server mysql-clientsudo apt-get install phpmyadminsudo ln -s /usr/share/phpmyadmin/ /var/www/phpmyadminvarwww,链接名为phpmyadmin的文件,指向/usr/share/phpmyadminsudo apt-get install spawn-fcgietcnginx/fastcgi_params文件,增加下面一行fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;etcphp5/cgi/php.ini文件,将下面一行取消注释cgi.fix_pathinfo=1;etcnginx/sites-available/default文件,我们之前修改的目录地址是/var/www,将1234567891011        #location ~ \\.php$ {    #    fastcgi_split_path_info ^(.+\\.php)(/.+)$;     #    # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini     #     #    # With php5-cgi alone:     #    fastcgi_pass 127.0.0.1:9000;     #    # With php5-fpm:     #    fastcgi_pass unix:/var/run/php5-fpm.sock;     #    fastcgi_index index.php;     #    include fastcgi_params;    #}    location ~ \\.php$ {     #    fastcgi_split_path_info ^(.+\\.php)(/.+)$;     #    # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini     #     #    # With php5-cgi alone:         fastcgi_pass 127.0.0.1:9000;     #    # With php5-fpm:     #    fastcgi_pass unix:/var/run/php5-fpm.sock;         fastcgi_index index.php;         fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;         include fastcgi_params;     }sudo /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 5 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pidspawn-fcgi: child spawned successfully: PID: 11775etcrc.local文件,添加下面一行/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 5 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pidsudo service nginx restartvarwww目录下新建index.php文件测试运行,发现已经可以运行PHP文件了。phpmyadmin便可以轻松加愉快地访问了。来源: Ubuntu Linux配置Nginx+MySQL+PHP+phpMyAdmin详细步骤
  • [技术干货] 华为云数据库 MySQL 金融版盛大公测,打造满足金融场景数据安全性的高端产品
    日前,华为云数据库推出MySQL 金融版,基于Paxos协议,采用一主两备三节点架构,解决了数据库分布式环境下一致性的问题,实现了自动脑裂保护机制,保证数据库高可用和高可靠,满足金融场景下的数据库高要求。 近年来,金融科技大力发展,金融系统更是亟需技术架构的革新、以满足行业日益增长的业务需求。数据库承载着金融企业的核心数据,出现数据丢失,业务连续性中断,对企业而言不但造成经济损失,而且还会进一步影响到商誉及信誉。因此,金融级数据库,即是现代金融系统转型与革新的基础,也是企业竞争立足的重要一环。 提到金融级数据库,人们首先想到的是 DB2、ORACLE 这样的老牌商业数据库,究其原因,正是因为他们解决了金融行业两个最为关注的问题:数据库的高可靠和高可用。但近年来,随着开源数据库的不断发展和有效解决方案的提出,MySQL逐步在各个金融场景下占据重要地位。 尤其是MySQL在5.5、5.6版本引入半同步复制和 GTID 等机制,并经过5.5,5.6,5.7等几个版本的演进之后, MySQL在性能、数据强一致性方面有了质的提升。 华为云数据库 MySQL 金融版在完全兼容社区版的基础上,基于Paxos协议,采用一主两备三节点架构,弥补了社区版传统主备架构下异步、半同步复制可能导致数据丢失的缺陷,确保数据最终一致性,并解决了网络孤岛、脑裂等分布式系统问题。 一主两备的三节点架构,是华为云 MySQL 金融版的一大亮点。在该方案中,用户提交事务时,需要等待至少一个备库收到日志副本,才返回给用户事务成功结束的信号,且确认事务会自动持久化到多数派主机中,确保数据库的可靠性。 此外,在该架构下,无论任意一台服务器挂掉,也不影响业务可用性,因为已提交的数据至少有 2 份副本,挂掉一台,还有至少1台是包含了已提交事务的持久化内容。Paxos 协议的引入和三节点架构的设计,确保了在整个故障切换过程中主备数据的强一致性,真正实现数据零丢失!毫无疑问,这对于金融场景(包含银行、保险等行业)而言,确实是量身打造;而对于数据可靠性同样具备高要求的场景而言,也非常合适。 目前,华为云 MySQL金融版已上线公测,试用及了解详情,请移步官网:https://www.huaweicloud.com/product/mysql.html 华为云创校园计划火热进行中:全系列数据库引擎 9 元起购,超多套餐、超低价格、超高规格,助力大学生创新创业!活动详情请点击:https://developer.huaweicloud.com/campusPaxos 协议的引入和三节点架构的设计,确保了在整个故障切换过程中主备数据的强一致性,真正实现数据零丢失!毫无疑问,这对于金融场景(包含银行、保险等行业)而言,确实是量身打造;而对于数据可靠性同样具备高要求的场景而言,也非常合适。 目前,华为云 MySQL金融版已上线公测,试用及了解详情,请移步官网:https://www.huaweicloud.com/product/mysql.html 华为云创校园计划火热进行中:全系列数据库引擎 9 元起购,超多套餐、超低价格、超高规格,助力大学生创新创业!活动详情请点击:https://developer.huaweicloud.com/campus
  • [热门活动] 华为云数据库 MySQL 内核新特性上线
    摘要:首家彻底解决用户上云需修改应用的问题。 受社区版 MySQL 的 GTID 约束限制,无法执行create table …select、显式事务中 create temporary table 命令;数据库迁移上云后需修改应用程序怎么办? 传统备份工具进行物理备份时,需执行 flush table with read lock;命令获取全局读锁,容易造成备份事务阻塞怎么办? 这都不是事,华为云数据库 MySQL 内核新特性上线了!一起来看看,怎么解决 MySQL的那些恼人问题吧。 华为云数据库 MySQL 免费试用,请移步官网:https://www.huaweicloud.com/product/drs.html
  • [热门活动] 华为云数据库 MySQL 内核新特性上线,首家彻底解决用户上云需改造应用的问题
    数据库迁移上云总要改程序,备份还容易造成事务阻塞,怎么办?不用怕,华为云数据库 MySQL 内核新特性上线,首家彻底解决用户上云要修改应用的问题,便捷上云,高效备份!免费体验传送门 》》》》  主要新特性便捷上云:无需应用改造 去除社区版 MySQL 的 GTID 约束限制,首家彻底解决用户迁移上云要修改应用程序的问题。高效备份:不要事务阻塞引入 Backup Locks,解决社区版备份事务阻塞问题,提高备份效率。超长事务:避开异常影响可以配置长时间超时事务,避免业务处理异常、造成超长事务带来的系统影响。动态开关:无需重启支持动态开关线程池,针对高并发、小并发不同场景选择不同状态,无需重启数据库。极致体验:线上=线下root 账号 kill 其他用户线程的权限,线上线下保持一致体验。 对能影响实例稳定运行的命令进行权限控制,保障实例稳定可靠。 PS:还有其他好用的小特性,满足您的日常运维需求哦:查看每个线程的内存使用情况增加相关统计信息,包括 CPU、回滚段、表和索引 华为云 MySQL 数据库,高性能用户的理想选择!了解更多产品信息,移步官网请点击
  • [热门活动] 华为云数据库 MySQL 内核新特性上线,首家彻底解决用户上云需改造应用的问题
    最新消息,搭载 HWSQL 内核的华为云数据库 MySQL,近期上线了几大关键特性。其中通过深入改造、去除社区版 GTID 约束限制的特性,更是首家彻底解决了用户上云需要对应用进行改造的问题。 GTID,即全局事务标示符,是社区版 MySQL 5.6新增的特性,用以作为数据库实例事务的唯一标识,确保一个事务在每个实例上只执行一次。GTID 的存在,使得数据复制更安全、故障切换更简单。 但是,当社区版 MySQL 打开 GTID 时,数据库会受该特性固有的约束限制,无法执行部分命令,导致用户数据库迁移上云后需修改应用程序。华为云 MySQL 通过内核改造,去除 GTID 约束限制,首家彻底解决这一问题,让客户无需修改任何应用,便捷上云。 本次上线的关键特性,还包括引入备份锁、解决备份事务阻塞;配置超时事务,避开异常影响;支持动态开关线程池,以及支持 root 账号 kill 掉其他 user 线程等。 社区版 MySQL 使用传统备份工具进行物理备份时,需执行指定命令获取全局读锁;如果此前存在长事务运行未结束,读锁命令将持续处于等待状态,导致后续读写语句阻塞。华为云 MySQL 引入 backup lock,彻底解决备份事务阻塞问题,提高备份效率。 此前由于 RDS 没有授予 root 账号 super 权限,导致用户不能 kill 掉其他 user 的线程,这加大了线下用户数据库上云后的使用学习成本。华为云 MySQL 通过修改内核,允许 root 用户 kill 其他线程,做到线上线下完全一致,大幅提升用户体验。 此外,华为云 MySQL 支持配置长时间超时事务,可避免业务处理异常造成超长事务带来的系统影响。动态开关线程池,则是针对高并发、小并发不同场景下的不同状态选择,用户无需重启数据库即可切换。 早些时候华为云数据库 MySQL 已经上线了一系列优化特性。包括:引入了线程池功能,支持更多连接,对于大并发性能提升明显。对 MySQL 5.6 引入真正的多线程复制,大大降低复制延迟。支持存储引擎 MyISAM 自动转换为 InnoDB,完全支持事务,同时避免表级锁,提高并发性,且兼容 MyISAM 语法,对用户完全透明。支持 RDS权限控制,对能影响实例稳定运行的命令进行权限控制,保障实例稳定可靠。 此外,华为云数据库 MySQL 还推出了一些好用的小特性,例如查看每个线程的内存使用情况,增加 CPU、回滚段、表和索引等相关信息的统计等,满足用户日常运维需求。 值得一提的是,华为云数据库 MySQL 一系列特性的推出和优化,均围绕性能和安全展开,尤其是高并发场景下的性能提升。其搭载的 HWSQL 内核,大幅增强连接池特性,并发数达 5000 时性能稳定,QPS 超过 17万+,高并发性能较社区版提升 50% 以上。 华为云 MySQL高并发下的性能表现华为云数据库 MySQL 免费试用,请点击官网:https://www.huaweicloud.com/product/drs.html HUAWEI CONNECT 2018作为华为自办的面向ICT产业的全球性年度旗舰大会,将于2018年10月10日-12日在上海隆重举行。本届大会以“+智能,见未来”为主题,旨在搭建一个开放、合作、共享的平台,与客户伙伴一起共同探讨如何把握新机遇创造智能未来。欲了解更多详情,请点击:https://www.huawei.com/cn/press-events/events/huaweiconnect2018
总条数:1406 到第 页
上滑加载中