javaee企业级分布式高级架构师-开课吧17mysql_第1页
javaee企业级分布式高级架构师-开课吧17mysql_第2页
javaee企业级分布式高级架构师-开课吧17mysql_第3页
javaee企业级分布式高级架构师-开课吧17mysql_第4页
javaee企业级分布式高级架构师-开课吧17mysql_第5页
免费预览已结束,剩余93页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MySQLMySQLMySQL是最流行的关系型数据库管理系统,在WEB应用方 MySQL是最好RDBMS(RelationalDatabaseManagementSystem:关系数据库管理系统)应用软件可以通过SQL对数据库中的数据进行增加,修改,删除及查询操作。数据库中的记录是有行有列的数据库NoSQLSystemDBMSMYSQL:开源免费OracleMySQL5.5都是由Oracle发布的版本。 Oracle :IBM公司的数据库产品,的。常应用在银行系统中.的互联网公司,要求去IOE(IBM小型机、Oracle数据库、EMC设备) 公司的中型的数据库。C#、.net等语言常使用SyBasePowerDesigner:嵌入式的小型数据库,应用在端。MySQLMySQL1979MontyWideniusTcX上运行。当时,这只是一个很底层的且仅面向报表的引擎,名叫Unireg。1990年,TcX公司的客户中开始有人要求为他的API提供SQL支持。Monty直接借助于mSQL的代码,将它集成到自己的引擎中。令人失望的是,效果并不太令人满意,决心自己重写一个SQL支持。1996MySQL1.0199610MySQL3.11.1(MySQL2.xSolaris1999~2000MySQLAB公司在瑞典成立。MontySleepycatBerkeleyDB,由于BDBMySQL开始支持事务处理2000,MySQL不仅公布自己的源代码,并采用GPL(GNUGeneralPublicLicense)协议,正式进入开源世界。同年4月,MySQL对旧的引擎ISAM进行了整理,将其命名为MyISAM。2001年,集成HeikkiTuuri的引擎InnoDB,这个引擎不仅能持事务处理,并且支持行级锁。后来该引擎被证明是最为成功的MySQL事务引擎。MySQL与InnoDB的正式结合版本是4.02003年12月,MySQL5.0版本发布,提供了视图、过程等功能SunSunBug的NDB集群系统,同时修复了大量的Bug。2009年4月,Oracle公司以74亿收购Sun公司,自此MySQL数据库进入时代,而其第的引擎InnoDB早在2005年就被Oracle公司收购擎。MySQL5.5MySQL业级的特性。Oracle公司同时也承诺MySQL5.5和未来版本仍是采用GPL的开源产MySQLMySQLMysQL启动和关闭(cmd1:cmd>mysqlu用户名–p例如:mysql-uroot–proot2:cmd>mysql--user=用户名--host=ip地址--SQLyog安装与使用输入用户名、,点击连接按钮,进行MySQL数据库进行操QuerySQLSQLF8SQLSQLStructuredQueryLanguageSQLmysqlSQL92SQL99SQL扩展了自己的一些SQL语句,比如MySQL中的limit关键字SQL数据定义语言:简称DDL(DataDefinitionLanguage),用来定义数据库对象:数据库,表,列等。关键字:create,alter,drop等DML(DataManipulationLanguage),用来对数据库中表的记录进行更新。关键字:insert,delete,update等数据控制语言:简称DCL(DataControlLanguage),用来定义数据库的权限和安全级别,及创建用户;关键字:grantselect,from,where等SQL数据库操作createdatabase数据库名;createdatabase数据库名characterset字符集;查看数据库服务器中的所有的数据库:show查看数据库服务器中的所有的数据库:show查看某个数据库的定义的信息:showcreatedatabase数据库名;dropdropdatabase数据库名称;切换数据库:use切换数据库:use数据库名;查看正在使用的数据库:selectcreatedatabaseday06;use表操作浮点型boolean类型:不支持压缩严格的定点 开发时 -YYYY-MM-DD1000-01-01~9999-12-YYYY-MM-DDHH:MM:SS1000-01-019999-12-31YYYY-MM-DD 1970~01~01UTC~2038-01-19M0~255M0~655350~2550~65535允许长度 字允许长度 字0~2550~65535允许长度 字允许长度 字0~M0~Mcreatecreatetable表名(字段名类型(长度)约束,字段名类型(长度)约束*主键约束:primary唯一约束唯一约束非空约束:notCREATETABLEsortsidINTPRIMARYKEY,#分类snameVARCHAR(100)查看数据库中的所有表:show查看数据库中的所有表:show查看表结构:desc表名;dropdroptable表名;alteraltertable表名add列名类型(长度)约束 --修改表添加列altertable表名modify列名类型(长度)约束; altertable表名change旧列名新列名类型(长度)约束; altertable表名drop列名; renametable表名to新表名; altertable表名characterset字符集; 插入记录insertinsertinto表(列名123..values(值123..)insertinto表values123..);insertinto表(列名123..valuesselect123from表insertinto表valuesselect*from表values插入值得时候过最大长度(一般是单引号INSERTINSERTINTOsort(sid,snameVALUES('s001'INSERTINTOsort(sid,snameVALUES('s002'INSERTINTOsortVALUES('s003','化妆品');更新记录updateupdate表名setupdate表名set字段名=值,字段名=值where条件;修改值得时候过最大长度删除记录deletedeletefrom表名[where条件];deletefrom表名;还是用truncatetable表名;删除方式:delete一条一条删除,不清空auto_increment记录数。truncate直接将表删除,重新建表,auto_incrementCMDmy.inimysqlSQLintvarchardatedatetimeCREATETABLEproductspidINTPRIMARYKEYAUTO_INCREMENT,#自增加priceDOUBLE,#商品价格pdateDATE,#日期sidVARCHAR(20)INSERTINTOproductsVALUES(NULL,' 大榴莲',98,NULL,'s001');INSERTINTOproductsVALUES(NULL,' 大枣',38,NULL,'s002');INSERTINTOproductsVALUES(NULL,' 切糕',68,NULL,'s001');INSERTINTOproductsVALUES(NULL,'十三香',10,NULL,'s002');INSERTINTOproductsVALUES(NULL,'老干妈',20,NULL,'s002');SELECTSELECT[DISTINCT]*[FROM表[WHERESQLselect*from查询商品名和商品价格.selectpname,pricefrom别名查询,使用的as,asselect*fromproductas列别名:selectpnameaspnfrom去掉重复值.selectdistinctpricefromselectselectpname,price+10fromSQLselect*fromproductwherepname查询商品价格>60select*fromproductwhereprice>where>like使用占位符_和 _代表一个字符%代表任意个字符select*fromproductwherepnamelikeinselect*fromproductwherepidin =inLIKE模糊查询,Like符,_代表一个字符,例first_namelike‘IS不成立,例:whereSQLORDERASC(升序)DESC(降序select*fromproductorderbyselect*fromproductwherepnamelikeorderbyprice聚合函数(组函数获得所有商品的价格的总和:select获得所有商品的价格的总和:selectsum(price)from获得所有商品的平均价格:selectavg(price)from获得所有商品的个数:selectcount(*)fromSQLGROUP根根 o字段分组,分组后统计商品的个数selectcid,count(*)fromproductgroupby根 o分组,分组统计每组商品的平均价格,并且平均价格>selectcid,avg(price)fromproductgroupbycidhavingselect(非聚合函数列groupbygroupbyselectselecthavingwhereunion集合的并集(不包含重复记录unionall(包含重复记录SQL(重要MySQLLEFTGROUPORDER示例SQL:SELECT*FROMuserLEFTJOINorderONuser.id=order.uidWHEREorder.price>GROUPBYHAVINGcount(1)>5ORDERBYLIMITFROM(将最近的两张表,进行积)---ON(VT1)---LEFTJOIN(保留左表的记录)---WHERE(VT3)--GROUPBY(VT4)---对SELECT(VT6)--ORDERBY(VT7)WHERE(影响性能MYSQL:WHEREOracleWHEREWHEREcreatetablecidvarchar(32)primarycnamecreatetablepidvarchar(32)primarypnamepricecreatetableoidvarchar(32)primarytotalpricecreatetableoidoidvarchar(50),pidvarchar(50)多对多关系(需要中间表实现如何表示表与表之间的关系呢?就是使用外键来约束要想理解外键,我们先去理解表的角色:主表和从表(需要建立关系才有了主从表的角分目前从表的上来说,没有关系,但是我们有个需求商品应该有所属的分类altertable表名add[constraint][约束名称]foreignkey(主表外键字段)references从altertable表名dropforeignkey外键约束名保证数据完整性(数据保存在多张表中的时候在互联网项目中,一般情况下,不建议建立外键关系一对一关系(了解idINTPRIMARYKEY,wnameVARCHAR(20),sexCHAR(1)idINTPRIMARYKEY,hnameVARCHAR(20),sexCHAR(1)1外键唯一添加外键列wid,指定该列的约束为唯一(不加唯一约束就是一对多关系)ALTERTABLEhusbandADDwidINT altertablehusbandaddforeignkey(wid)references2主键做外键(课后作业总结:有外键的就是多的一方cid本章节向大家介绍如何使用MySQL的JOIN在两个或多个表中查询数据你可以在SELECTUPDATE和DELETE语句中使用MySQL的JOIN来联合多表查询。JOIN按照功能CROSSJOIN(交叉连接INNERJOIN(内连接或等值连接OUTERJOIN(外连接insertinsertintocategoryame)valuesc001insertintocategoryame)valuesc002insertintocategoryame)valuesc003insertintoproduct(pid,pname,price,cid)values('p001','联想insertintoproduct(pid,pname,price,cidvalues('p002','海尔',3000,'c001');insertintoproduct(pid,pname,price,cid)values('p003','雷神insertintoproduct(pid,pname,price,cid)values('p004','阿迪insertintoproduct(pid,pname,price,cid)values('p005','耐克',1200,'c002');insertintoproduct(pid,pname,price,cid)values('p006','NB',800,'c002');insertintoproduct(pid,pname,price,cid)values('p007','彪马',600,'c002');insertintoproduct(pid,pname,price,cid)values('p008','雪花秀insertinsertintoproduct(pid,pname,price,cid)values('p009','悦诗风吟交叉连接的关键字:CROSS交叉连接也叫积连product第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员。交叉连接的表现:行数相乘、列数相 A, 案例:查询商品表和分类表的积内连接的关键字:INNER内连接也叫等值连接 A.id= INNER BONA.id=外联接可以是左向外联接、右向外联接或完整外部联接。也就是说外连接又分为:连接、全外连接外连接需要有主表或者保留表在FROM左外连接:LEFTJOIN或者LEFTOUTER BONA.id=右外连接::RIGHTJOIN或者RIGHTOUTER BONA.id=全外连接(MySQL不支持:FULL JOIN或FULLOUTER FULL BONA.id=外连接总结LEFTJOINRIGHTJOINMySQLLIMIT关键字不是SQL92标准关键字,它是MySQL独有的语法LimitMySQLLIMITSELECTSELECT*FROMtableLIMIT[offset,]1.分页查询商品表,每页3子查询,又叫内部查询,相对于内部查询,包含内部查询的就称为外部查询select:distinct、groupby、orderby、limit、join和union等;select中、from后、wheregroupby和orderby中无实用意义。1.WHERE(这个中间表对用户是不可见的然后根据SELECT的选择列选择相应的列进行返回最终结果。然后根据WHERE条件过滤中间表的记录,并根据SELECT指定的列返回查询结果。条件过滤中间表的记录,并根据SELECT指定的列返回查询结果。SQLSQLMySQLSQLManagementServeices&ConnectionPool:连接池***负责对接上MySQLServer的客户端请求都会被分配(或创建*而连接线程的主要工作就是负责MySQLServerServercache等。SQLInterfaceSQLSQLselectfromSQLParser:解析器SQLSQL验证和解析SQL然后做出针对性的转发到后续步骤,以后SQL语句的传递和处理就是基于这个结构的。sqlOptimizer:查询优化器SQLSQL使用查询优化器对查询进行优化用一个例子就可以理解:selectuid,namefromuserwheregenderselect查询先根据whereselectuidname滤CacheBuffer:查询缓存他的主要功能是将客户端提交给MySQL的select请求的返回结果集cachequery的一个hash值做一个对应。该Query所取数据的基表发生任何数据的变化之后,MySQL会自动使该query的Cache失效。在读写比例非常高的应用系统中,QueryCache对系列小缓存组成的。比如表缓存,记录缓存,key缓存,权限缓存等引擎接口模块可以说是MySQL引擎接口模块可以说是MySQL只有MySQL可以实现其底层数据正是因为它成功地将各种数据处理高度抽象化,才成就了今天MySQL可插拔从图还可以看出,MySQL区别于其他数据库的最重要的特点就是从图还可以看出,MySQL区别于其他数据库的最重要的特点就是引擎MySQL插件式的* 引* 引擎是mysql有别于其他数据库的一大特性**MySQL5.5MyISAMInnoDB*查看引擎:show.frm表定义文件.ibd数据文件.frm表定义文件 .myi索引文件锁专门的地B+B+MySQLMySQL是通过文件系统对数据进行和管理的MySQLMySQL错误日志、二进制日志、查询日志、慢查询日志和InnoDB引擎Redo日志、中继日志等。错误日志(errlog:5.5.7记录了运行过程中遇到的所有严重的错误信息,以及MySQL每次启动和关闭的详细信息log-errorlog-warningslog-err二进制日志(binlog:**log-bin=mysql-binmysql-binbinlogbasename,binlog:mysql-bin-*binlogddldmlselectbinlog**如果是DDL语句,则直接记录到binlog日志,而DML*binlogmysql。通用查询日志(generalquerylog:慢查询日志(slowquerylog:默认是关闭的。默认是关闭的。需要通过设置:slow_query_log=ONlong_query_timeSQL事务日志(InnoDB事务日志(InnoDB)redoib_logfile1。*undo日志,默认**是在主从*SQLMySQLSHOWVARIABLESLIKE.frm主要存放与表相关的数据信息,主要包括.ibd和.ibdata文件:用 引擎的表数据和索引信.myd文件:主要用 使用 引擎的表数据信息.myi文件:主要用 使用 引擎的表数据文件中任何索引的数据树MySQL,能快数据库的查询速度 MyISAM和引擎:只支持BTREE,也就是说默认使用BTREE,够更 HASHBTREE*普通索引:ALTERALTERTABLEtable_nameADDINDEXindex_nameONCREATEUNIQUEINDEXindex_nameONCREATEFULLTEXTINDEXindex_nameONCREATEINDEXindex_nameONALTERTABLEarticleADDINDEXindex_titme_timeDROPDROPINDEXindex_nameON索引的结2-4IO BTreeB+Tree数据的问题。BTreeB+Tree非索**叶子节点只会*索引**主键索引 索引)的叶子节点 数据行,也就是说数据和索引是在一起,这就 *辅助索引只会*创创 索引使用索引的注意事MySQLMySQL提供了一个EXPLAIN命令,它可以对SELECT语句进行分析,并输出SELECT执行的详细信息,以供开发人员针对性优化.使用explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过explain命令来查看。可以通过explain命令深入了解MySQL的基于开销的优化器,还可以获得很多可能被优化器考虑到的策略的细节,以及当运行SQL语句时哪种策略预计会被优化器采用。EXPLAIN命令用法十分简单,在SELECT语句前加上explain就可以了,例如:idSELECT查询的标识符.每个SELECTselect_typeSELECT查询的类型.table:查询的是哪个表partitions:匹配的分区typejoin类型possible_keyskeyref:哪个字段或常数与key一起被使用rowsfiltered:extra:额外的信息select_typeSIMPLE,表示此查询不包含UNION查询或子查询PRIMARYUNION,表示此查询是UNION的第二或随后的查询DEPENDENTUNIONUNIONUNIONRESULTUNION的结果SUBQUERY,子查询中的第一个DEPENDENTSUBQUERY:子查询中的第一个SELECT,取决于外面的查询.即子查type通常来说,不同的type类型的性能关系如下:ALL<index<range~index_merge<ref<eq_ref<const<每次与之前的表合并行都只在该表一行,这是除了system,const之joinref这个比较复杂,目前的理解是合并单表的范围索引扫描(rangeinvaluein(select...)把形如“selectunique_key_coluPS:in同上,但把形如”selectnon_unique_key_column当查询是索引覆盖的,即所有数据均可从索引树获取的时候(ExtraUsing以索引顺序从索引中查找数据行的全表扫描(无UsingExtraUsingIndexUsingWhere参考 MySQLSQL得先找到需要优化的SQL。bugMySQL数据库有一个“慢查询日志”功能,用来记录查询时间bugMySQL默认是关闭的,需要手动开启参数说** :是否开启慢查询日志,ON为开启,OFF*log-slow- :旧版(5.6)MySQLhost_name-*slow-query-log-file:新版(5.6)MySQLhost_name-*long_query_time在在MySQL执行SQL语句设置,但是如果重启MySQL的话将失效setglobalslow_query_log=ON;setgloballong_query_time=1;f配置文件,重启MySQL,这种永久生效.slow_query_log=slow_query_log_file=/var/log/mysql/slow.loglong_query_time=1第一行,SQL第一行,SQLSQLQuery_timeSQL,在第五行及后面所有行(Time:之前)sqlsqlMySQL[root@localhost[root@localhostmysql]#mysqldumpslow/var/lib/mysql/localhost-常用参数说明-s:-ttopn-g:10mysqldumpslow-st-t10-g“leftjoin”mysqlsla不过此工具已停止,项目介绍页面推荐使用percona-toolkit,下面有介绍mysqlslamysqlsla-lt tartar-xfpercona-toolkit-perlmakeCan'tCan'tlocateExtUtils/MakeMaker.pmin@INC*yuminstall-yperl-ExtUtils-CBuilderperl-ExtUtils-Can'tlocateTime/HiRes.pmin**yuminstall-yperl-Time-使用MySQL性能分析语句showQueryProfilerMYSQLquerySQLexplainslowquerylogQueryProfiler耗费的时间等。不过该工具只有在MYSQL5.0.37以及以上版本中才有实现。showprofile和showprofilessession,profiling为0)中执行语句的资源使用情况.showprofiles:以列表形式显示最近发送到服务器上执行的语句的资源使用情况.显示的记录数由变量:profiling_history_size控制,默认15条showprofile:展示最近一条语句执行的详细资源占用信息,默认显示Status和showprofile还可根据showprofiles列表中的Query_ID,选择显示某条记录的性能分ProfileProfile功能由MySQL会话变量:profilingOFFProfileselectselectshowvariableslikeprofile**setprofiling=1;--10selectselect打开profiling功能setsetsql执行showprofiles查看分析列表showshowprofileforqueryshowshowprofilecpu,swapsforqueryMySQL在MySQL中只有使用了Innodb数据库引擎的数据库或表才支持事务事务处理可以用来数据库的完整性,保证成批的SQL语句要么全部执行,要么全部不执DDL、DML、DCL操作,比如insert,update,delete语句4(ACIDIsolation(性ACID原子性::性::MySQL在MySQL命令行的默认设置下,事务都是自动提交的,即执行SQL语句后就会马上执行COMMIT操作。因此要显式地开启一个事务务须使用命令BEGIN或START或者执行命令 使用当前会话的自动提交在事务的并发操作脏读:一个事务到另一个事务未提交的数据不可重复读:一个事务因到另一个事务已提交的数据。导致对同一条记录两次以上的结果不一致。updae幻读:一个事务因到另一个事务已提交的数据。导致对同一张表两次以上的结果不致。inert、delete事务级四种级别现在来看看MySQL数据库为我们提供的四种级别(由低到高① mitted②Readcommitted③Repeatableread④Serializable默认级大多数数据库的默认级别是Readcommitted,比如Oracle、DB2等MySQL数据库的默认级别是Repeatableread如何查看和设置级别在MySQL数据库中查看当前事务的级别selectselect在MySQL数据库中设置事务的级别 [glogal| transactionisolationsetMySQL***数据库MySQL *总的来说,MySQL和行级锁定相反,表级别的锁定是MySQL各引擎中最大颗粒度的锁定机制。该锁定机制最大MySQL总的来说,MySQL3***LockMySQL实现的表级锁定的争用状态变量:showstatuslike**table_locks_immediatelocktable表名称read(write),2read(write)showopenunlockCREATECREATETABLE`mylock``id`int(11)NOTNULL`NAME`varchar(20)DEFAULTNULL,PRIMARYKEY(`id`));INSERTINSERTINTOmylock(id,NAME)VALUES(1,INSERTINTOmylock(id,NAME)VALUES(2,'b');INSERTINTOmylock(id,NAME)VALUES(3,'c');INSERTINTOmylock(id,NAME)VALUES(4,共享锁(S):允许一个事务去读一行,其他事务获得相同数据集的排他锁ISIXSELECT,InnoDB共享锁(S):SELECT*FROMtable_nameWHERELOCKINSHAREMODE排他锁(X):SELECT*FROMtable_nameWHEREFORUPDATEInnoDB的行级锁定同样分为两种类型,共享锁和排他锁InnoDB的行级锁定同样分为两种类型,共享锁和排他锁享锁和意向排他锁InnodbKEYlocking(因为Innodbshowstatuslike5mysql>mysql>createtabletest_innodb_lock(aint(11),bvarchar(16))engine=innodb;QueryOK,0rowsaffected(0.02sec)mysql>createindextest_innodb_a_idxontest_innodb_lock(a);QueryOK,0rowsaffected(0.05sec)Records:0Duplicates:0Warnings:mysql>createindextest_innodb_lock_b_idxontest_innodb_lock(b);QueryOK,11rowsaffected(0.01sec)Records:11Duplicates:0Warnings:SessionSession1mysql> QueryOK,0rowsaffected(0.00mysql> QueryOK,0rowsaffected(0.00mysql>updatetest_innodb_locksetb='b1'wherea=1;QueryOK,1rowaffected(0.00Rowsmatched:1Changed:1Warnings:2mysql>updatetest_innodb_locksetb='b1'where=3mysql>commitQueryOK,0rowsaffected(0.05sec)提交4mysql>updatetest_innodb_locksetb='b1'where=QueryOK,0rowsaffected(36.14sec)Rowsmatched:1Changed:0Warnings05mysql>updatetest_innodb_locksetb='2'whereb=2000;QueryOK,1rowaffected(0.02Rowsmatched:1Changed:1Warnings:mysql>updatetest_innodb_locksetb='3'where=67mysql>commit;QueryOK,0rowsaffected(0.10sec)8mysql>updatetest_innodb_locksetb='3'where=QueryOK,1rowaffected(1min3.41Rowsmatched:1Changed:1Warnings:9mysql>select*from|a|b|1|b2|3|3|4|4000|5|5000|6|6000|7|7000|8|8000|9|9000|1|b19rowsinset(0.00mysql>updatetest_innodb_locksetb=a*100wherea<4anda>1;QueryOK,1rowaffected(0.02Rowsmatched:1Changed:1Warnings:mysql>insertintotest_innodb_lockmysql>QueryOK,0rowsaffected(0.02mysql>insertintotest_innodb_lockvalues(2,'200');QueryOK,1rowaffected(38.68sec)mysql>updatetest_innodb_locksetb='bbbbb'wherea=1andb='b2';QueryOK,1rowaffected(0.00Rowsmatched:1Changed:1Warnings:mysql>updatetest_innodb_locksetb'bbbbb'wherea=1andb='b1';被阻塞mysql>QueryOK,0rowsaffected(0.02mysql>updatetest_innodb_locksetb='bbbbb'wherea=1andb='b1';QueryOK,1rowaffected(42.89sec)Rowsmatched:1Changed:1Warnings0session提交事务,阻塞去除,更新完成mysql>updatet1setid=110whereid=11;QueryOK,0rowsaffected(0.00sec)Rowsmatched:0Changed:0Warnings:mysql>updatet2setid=210whereid=21;QueryOK,1rowaffected(0.00sec)Rowsmatched:1Changed:1Warnings:mysql>updatet2setid=2100where等待sessionbmysql>updatet1setid=1100whereid=11;QueryOK,0rowsaffected(0.39sec)Rowsmatched:0Changed:0等待sessiona两个session主从原binlogrelay查看binlog日 mysqlbinlog文件名主从实在[mysqld]IDIPmysqlserviceservicemysqld第三步:建立帐户并mysql>GRANTmysql>GRANTFILEON*.*TO'backup'@'%'IDENTIFIEDBYmysql>GRANTREPLICATIONSLAVE,REPLICATIONCLIENTON*.*toidentifiedidentifiedby“%”代替,如mysql>mysql>FLUSHmysqlmysql>selectmysql>selectuser,hostfrommastermysql>mysql>showmaster | |Position|Binlog_Do_DB|Binlog_Ignore_DB|Executed_Gtid_Set |mysql-bin.000001 120| | 1rowinUUIDffFatalerror:TheslaveI/OthreadstopsbecausemasterandslavehaveequalMySQLserverUUIDs;theseUUIDsmustbedifferentforreplicationtowork.mysqlmysqluuid注意语句中间不要断开,master_portmysql(无引号),master_user120”120showmasterstatus中看到的position值,这里的mysql-bin.000001就是file对应的值)。第四步:启动从服务器功mysql>start第五步:检查从服务器功能状态mysql>showslave Slave_IO_Running:Yes//此状态必须YESSlave_SQL_Running:YesYES 注:Slave_IO及Slave_SQL进程必须正常运行,即YESNOProxy创 f文修改rw-splitting.luamysql-mysql- f注意事项:如果没有配置profile文件的环境变量,则需要去拥有mysql-proxy通MyCat: 支持事务、ACID、可以替代Mysql的加强版数据库一个可以视为“MysqlOracle一个融合内存缓存技术、Nosql技术、HDFS大数据的新型SQLServer支持SQL92MysqlProxy支持JDBC连接ORACLE、DB2、SQLServer,将其模拟为 Server使galeraformysqlpercona-clustermariadbcluster,提供高可用性数据分片集支持读写分离,支持Mysql双主多从,以及一主多从的模式E-R关系的分片策略,实现了高效的表关联查询MySQLinstanceMySQLMySQLinstanceMySQLinstanceMySQLinstance(MySQLMySQLSocketProtocolSQLSQLSQLHeartBeat(数据库、Table(数据表、User(用户)的逻辑模型,并将这套逻辑模型映射到后端的节点DataNode(MySQLInstance)Mysql编程语言都能将MyCAT当成是MysqlServer来使用,不必开发新的客户端协议。MycatE-RMycat垂直分片:一个数据库中多个表格A,B,C,A到节点1上,B到节点2上,C到节点3上。1、SchemaMySQLDatabase(数据库)对应,一个逻辑库中定义了所包括的储的逻辑数据节点DataNode。在此可以指定表的分片规则。DataSource4、DataSource:定义某个物理库的地址,用于到DatanodeMycat的及安mycat地址MycatMyCatlinux第二步:解压缩,得到mycatmycat/bin,启动命令:./mycatstart停止命令:./mycatstop重启命令:./mycatrestartmysqlmycatMycat把商品表分片到三个数据节点上mysql1操作系统版本:centos6.5数据库版本:mysql-5.6mycat版本:1.4release数据库名:db1、db3mysql2操作系统版本:centos6.5数据库版本:mysql-5.6mycat版本:1.4release数据库名:db2MyCat1(Schema.xmlSchema.xml作为MyCat中重要的配置文件之一,管理着MyCat的逻辑库、表、分片规则、schema用于定义MyCat实例中的逻辑Table定义了MyCat中的逻辑dataNode定义了MyCat中的数据节点,也就是我们通常说所的数据分片dataHost在mycat逻辑库中也是作为最底层的存在,直接定义了具体的数据库实例、读LINUXMYSQLMysqlMySQLmy.inimysqld]中增加一行lower_case_table_names=Schema.xml<?xml<?xml<!DOCTYPEmycat:schemaSYSTEM<mycat:schema <schemaname="TESTDB"checkSQLschema="false"<!--autoshardingbyid(long)--<tablename="TB_ITEM"dataNode="dn1,dn2,dn3"rule="auto-sharding-long"/> dataNode="dn1,dn2"/><dataNodename="dn1"dataHost="localhost1"database="db1"<dataNodename="dn2"dataHost="localhost2"database="db2"<dataNodename="dn3"dataHost="localhost1"database="db3"<dataHostname="localhost1"maxCon="1000"minCon="10"balance="0" <heartbeat>select<!--canhavemultiwritehosts--<writeHosthost="hostM1"url="34:3306"user="root"<!--canhavemultireadhosts--<dataHostname="localhost2"maxCon="1000"minCon="10"balance="0" <heartbeat>select<!--canhavemultiwritehosts--<writeHosthost="hostM1"url="66:3306"user="root"<!--canhavemultireadhosts--server.xml几乎保存了所有mycat需要的系统配置信息最常用的是在此配置用户名及权限<user<user<property<property<propertyrule.xmltableRulefunction这两个。在具体使用过程中可以按照需求添加tableRulefunctionmycatmysqlmycat,----TablestructureforDROPTABLEIFEXISTS`tb_item`;CREATETABLE`tb_item`(`id`bigint(20)NOTNULLCOMMENTid,`title`varchar(100)NOTNULLCOMMENT`sell_point`varchar(500DEFAULTNULLCOMMENT`price`bigint(20)NOTNULLCOMMENT`num`int(10)NOTNULLCOMMENT`barcode`varchar(30DEFAULTN

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论