python 怎么操作mysql中多个数据库
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 怎么操作mysql中多个数据库相关的知识,希望对你有一定的参考价值。
mysql 的 Binlog 记录着 MySQL 数据库的所有变更信息,了解 Binlog 的结构可以帮助我们解析Binlog,甚至对 Binlog 进行一些修改,或者说是“篡改”,例如实现类似于 Oracle 的 flashback 的功能,恢复误删除的记录,把 update 的记录再还原回去等。本文将带您探讨一下这些神奇功能的实现,您会发现比您想象地要简单得多。本文指的 Binlog 是 ROW 模式的 Binlog,这也是 MySQL 8 里的默认模式,STATEMENT 模式因为使用中有很多限制,现在用得越来越少了。Binlog 由事件(event)组成,请注意是事件(event)不是事务(transaction),一个事务可以包含多个事件。事件描述对数据库的修改内容。
现在我们已经了解了 Binlog 的结构,我们可以试着修改 Binlog 里的数据。例如前面举例的 Binlog 删除了一条记录,我们可以试着把这条记录恢复,Binlog 里面有个删除行(DELETE_ROWS_EVENT)的事件,就是这个事件删除了记录,这个事件和写行(WRITE_ROWS_EVENT)的事件的数据结构是完全一样的,只是删除行事件的类型是 32,写行事件的类型是 30,我们把对应的 Binlog 位置的 32 改成 30 即可把已经删除的记录再插入回去。从前面的 “show binlog events” 里面可看到这个 DELETE_ROWS_EVENT 是从位置 378 开始的,这里的位置就是 Binlog 文件的实际位置(以字节为单位)。从事件(event)的结构里面可以看到 type_code 是在 event 的第 5 个字节,我们写个 Python 小程序把把第383(378+5=383)字节改成 30 即可。当然您也可以用二进制编辑工具来改。
找出 Binlog 中的大事务
由于 ROW 模式的 Binlog 是每一个变更都记录一条日志,因此一个简单的 SQL,在 Binlog 里可能会产生一个巨无霸的事务,例如一个不带 where 的 update 或 delete 语句,修改了全表里面的所有记录,每条记录都在 Binlog 里面记录一次,结果是一个巨大的事务记录。这样的大事务经常是产生麻烦的根源。我的一个客户有一次向我抱怨,一个 Binlog 前滚,滚了两天也没有动静,我把那个 Binlog 解析了一下,发现里面有个事务产生了 1.4G 的记录,修改了 66 万条记录!下面是一个简单的找出 Binlog 中大事务的 Python 小程序,我们知道用 mysqlbinlog 解析的 Binlog,每个事务都是以 BEGIN 开头,以 COMMIT 结束。我们找出 BENGIN 前面的 “# at” 的位置,检查 COMMIT 后面的 “# at” 位置,这两个位置相减即可计算出这个事务的大小,下面是这个 Python 程序的例子。
切割 Binlog 中的大事务
对于大的事务,MySQL 会把它分解成多个事件(注意一个是事务 TRANSACTION,另一个是事件 EVENT),事件的大小由参数 binlog-row-event-max-size 决定,这个参数默认是 8K。因此我们可以把若干个事件切割成一个单独的略小的事务
ROW 模式下,即使我们只更新了一条记录的其中某个字段,也会记录每个字段变更前后的值,这个行为是 binlog_row_image 参数控制的,这个参数有 3 个值,默认为 FULL,也就是记录列的所有修改,即使字段没有发生变更也会记录。这样我们就可以实现类似 Oracle 的 flashback 的功能,我个人估计 MySQL 未来的版本从可能会基于 Binlog 推出这样的功能。
了解了 Binlog 的结构,再加上 Python 这把瑞士军刀,我们还可以实现很多功能,例如我们可以统计哪个表被修改地最多?我们还可以把 Binlog 切割成一段一段的,然后再重组,可以灵活地进行 MySQL 数据库的修改和迁移等工作。 参考技术A .多个数据库联用时数据导入导出
使用的时候和一个数据库的区别是:
如果不是defalut(默认数据库)要在命令后边加 --database=数据库对应的settings.py中的名称 如: --database=db1 或 --database=db2
数据库同步(创建表)
python manage.py syncdb #同步默认的数据库,和原来的没有区别
#同步数据库 db1 (注意:不是数据库名是db1,是settings.py中的那个db1,不过你可以使这两个名称相同,容易使用)
python manage.py syncdb --database=db1
数据导出
python manage.py dumpdata app1 --database=db1 > app1_fixture.json
python manage.py dumpdata app2 --database=db2 > app2_fixture.json
python manage.py dumpdata auth > auth_fixture.json
数据库导入
python manage.py loaddata app1_fixture.json --database=db1
python manage.py loaddata app2_fixture.json --database=db2本回答被提问者采纳
python之MySQL数据库
一.数据库概述
1.什么是数据库?
什么是数据库呢?
先来看看百度怎么说的
1
2
|
数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。 所谓“数据库”系以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。 |
百度的貌似不好理解啊,让我说啊,数据库是存储数据的地方,你这不是废话么?你你你你你说的对,哈哈,存数据的地方是存在哪里呢,存在硬盘上,为什么不是存在内存里面,因为内存无法永久保存。之前我们存数据都是使用的文件,在一个word文档里面写一些羞羞的网址,然后保存,就存储到硬盘上了。有同学就会说了,我这通过文件不是也将数据保存上了吗?是的,没毛病,但是你想,通过文件来操作数据,效率是不是很低,首先打开关闭就比较慢,其次是我们操作起来也比较麻烦,对不对,如果我想记录一条关于我个人信息的数据,我使用文档来存,是不是很不友好,并且我们要查数据的时候,看图1:图1是一个word里面记录的信息,如果我想查询出所有人的名字,这个操作是不是就很难搞定了,来来来,配合起来~~,你应该说是的,那我就接着说,有同学可能就会说了,老师我用excel啊,看图2,一列就搞定了,没毛病,但是你想打开操作excel效率低不低。并且通过你自己写的程序来操作这些文件是不是很麻烦,就你们学的open函数。其实效率低的原因是因为我们知道文件都是保存在硬盘上的,硬盘的效率本身就低,所以没办法。
所以,为了方便的管理这些数据,又能提高对数据的管理效率,各个公司就开始想办法了,喊出了口号:我们要写一套软件,专门管理数据!!,让应用程序或者说项目程序不直接和硬盘打交道了,让我们自己写的管理数据的软件来操作数据,并且我们写的软件要解决下面几个问题:1.直接操作硬盘上的文件效率低 。 2. 通过操作文件来读写数据很麻烦。 3. 我们自己的电脑上写的程序和我们自己电脑上存储的数据都在这一台电脑上了,想和别人共享一个数据或者一个文档也是比较麻烦的,并且如果和别人共享,那么可能造成自己电脑的安全性变低了,但是公司内部的项目可能就会使用一些共同的数据啊,这样共享起来就很麻烦。 4. 项目和数据如果都在一个电脑上,例如京东,如果有一天,京东的项目出问题了,或者部署这个项目的电脑(服务器)崩了,你的数据是不是就麻烦了,嗯,稳定性和安全性都不够,我们要把数据和项目分开管理,一般公司都会这么做,看下图:
通过上面这个图里面的思想,貌似解决了共享数据和数据稳定性的问题,但是专门管理数据的机器里面还是将数据存到硬盘上啊,如果项目直接和硬盘打交道,效率还是差啊,并且虽然数据共享起来了,我们通过前面的学习知道,数据共享起来就会出现数据不安全的问题和数据混乱的问题啊,怎么办,加锁!而且很多项目或者人都可能过来连接中间这个存放数据的机器啊,我们不能让所有人都能连接这个机器啊,怎么办,加连接验证!并且要做好备份,因为现在数据多重要啊,所以还要支持做数据备份的工作!多个人连接使用这个机器中的数据的时候,还要支持并发啊,每个人的感觉都是自己单独的在操作这个机器啊,怎么办,支持并发!
哎,想要好好的玩数据,还真是tm的麻烦,不过各个公司都不怕艰难,都在努力的搞事情,搞一套可以高效管理数据的工具,称之为数据库管理软件/系统(应用软件)
又出来一个新词啊,数据库管理系统,来,先看看百度怎么解释的
1
|
数据库管理系统(英语:Database Management System,简称DBMS)是为管理数据库而设计的电脑软件系统,<br>一般具有存储、截取、安全保障、备份等基础功能。数据库管理系统可以依据它所支持的数据库模型来作分类,例如关系式、XML;<br>或依据所支持的计算机类型来作分类,例如服务器群集、移动电话;或依据所用查询语言来作分类,例如SQL、XQuery;<br>或依据性能冲量重点来作分类,例如最大规模、最高运行速度;亦或其他的分类方式。不论使用哪种分类方式,一些DBMS能够跨类别,例如,同时支持多种查询语言。 |
貌似又是不好理解,来吧,通俗解释--> 这个工具负责来和硬盘打交道(当然中间还隔着操作系统),高效的管理数据,并且还支持对外通信,网络通信都是基于的socket,也就是说它还相当于一个socket服务端,那么想来到这个存数据的机器上来操作数据的人或者项目都可以连接到这个工具,并通过这个工具来管理数据,那么我们就可以通过下面这个图来看看这工具的工作方式:
上面这个图是不是就一目了然了,这个数据管理系统我们称之为DBMS,DB(database)就是数据库的意义,M(manage)就是管理的意思,S(system)就是系统的意思,其实就是英文名的首字符缩写。市场上冒出了很多优秀的数据库管理系统,例如:mysql、oracle、db2等等,人家开发好了,你使用就行了,既然是使用别人写好的数据库管理系统,那么我们在操作的时候,就要按照人家的规范来操作,这个规范叫做sql,我们通过这个系统来操作数据的语句叫做sql语句。那么过程就是这个样子的:首先下载安装人家的数据管理系统,然后启动系统,我们的项目如果想通过这个系统来操作数据,那么就需要你的项目中字节写一个socket客户端,要满足人家这个系统的服务端的消息格式要求,然后就按照人家规定好的sql语句写好操作数据的命令,使用你的写好的客户端通过网络发送给这个存放数据的机器上的数据管理系统的服务端,服务端街道这个命令之后,解析,然后产生对应的数据操作,你要是查询数据,就将查询数来的数据原路返回给你,如果你要是修改数据,那么我服务端就在系统上修改对应的数据。这就是整个操作流程了,其实这个系统就是一个基于socket编写的C/S架构的软件。
有人称这个数据管理系统为数据库,有人称这个存放数据的机器叫做数据库,有人称里面的一个存放数据的库叫做数据库,(存放数据的库,其实就是将数据分开管理,例如:你有两个项目来使用这个数据管理系统,那么我们两个项目的数据肯定是不能掺和在一块的对不对,那么就需要分开管理,分开管理的是可以给每个项目单独创建一个库,每个库存放自己项目对应的数据,有人称这个库为数据库),但是不管怎么称呼,你结合他当时说话的场景,就能够理解他指的是什么了,反正大意也都差不多,这个知道就好了。那么我们来看看有哪些NB的数据库管理系统啊,看下节的分类(还是先安装一下mysql搞一下看看在看分类吧!直接看第三大节)。
2.数据库分类
目前的数据库可以分为两个大类:关系型数据库和非关系型数据库
2.1 关系型数据库(RDBMS)
解释:关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式,不是excel,但是和excel的形式很像),结合下图来看一下,
这个表看着好乱啊,但是你细看一下,这几个表之间建立了某种关系,共享着双方的数据。这就是关系。关系型数据库里面存数据的时候就类似这个样子的。有个大概了解了吗~~~
操作关系型数据库的命令,我们称之为SQL,看解释
1
2
3
|
结构化查询语言(Structured Query Language)简称SQL(发音: / ˈes kjuː ˈel / "S-Q-L" ),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。 结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。 1986 年 10 月,美国国家标准协会对SQL进行规范后,以此作为关系式数据库管理系统的标准语言(ANSI X3. 135 - 1986 ), 1987 年得到国际标准组织的支持下成为国际标准。不过各种通行的数据库系统在其实践过程中都对SQL规范作了某些编改和扩充。所以,实际上不同数据库系统之间的SQL不能完全相互通用 |
其中最后一句挺重要的:不同数据库系统之间的SQL不能完全相互通用
常用的关系型数据库:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
2.1 . 1 oracle数据库 Oracle前身叫SDL、由Larry Ellison和两个变成任意在 1977 创办,他们开发了主机的拳头产品,在市场上大量销售。Oracle公司是最早开发关系型数据库的厂商之一,其产品支持最广泛的操作系统平台。目前Oracle关系数据库产品的市场占有率数一数二 。 Oracle公司是目前全球最大的数据库软件公司,也是近年业务增长极为迅速的软件提供与服务商 主要应用范围:传统大企业、大公司、政府、金融、证券等。 版本升级:oracle8i,oracle9i,oracle10g,oracle11g,oracle12c 2.1 . 2 MySQL MySQL被广泛的应用在Internet上的大中小型网站中。由于体积小、速度快、总体拥有成本低,开放源代码 2.1 . 3 MariaDB数据库 MAriaDB数据库管理系统是MySQL数据库的一个分支,主要由开元社区维护,采用GPL授权许可。开发这个MariaDB的原因之一是:甲骨文公司收购了MySQL后,有MySQL闭源的潜在风险,因此MySQL开元社区采用分支的方式来避开这个风险。 MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM的存储引擎,它使用了Percona的XtraDB(InnoDB的变体)这个版本还包括了PrimeBase XT (PBXT)和Federated X存储引擎。 2.1 . 4 SQL Server数据库 Microsoft SQL Server是微软公司开发的大型关系数据库系统。SQL Server的功能比较全面,效率高,可以作为中型企业或单位的数据库平台。SQL Server可以与Winodws操作系统紧密集成,不论是应用程序开发速度还是系统事务处理运行速度,都得到较大的提升,对于在Windows平台上开发的各种企业级信息管理系统来说,不论是C / S(客户机 / 服务器)架构还是B / S(浏览器 / 服务器)架构。SQL Server都是一个很好的选择。SQL Server的缺点是只能在Windows系统下运行 2.1 . 5 Access数据库 Access是入门级小型桌面数据库,性能安全性都很一般,可供个人管理或小型企业只用 Access不是数据库语言,只是一个数据库程序,目前最新版本为Office 2007 ,其特点主要如下: ( 1 )完善地管理各种数据库对象,具有强大的数据组织,用户管理、安全检查等功能 ( 2 )强大的数据处理功能,在一个工作组级别的网络环境中,使用Access开发的多用户管理系统具有传统的XSASE(DBASE、FoxBASE的统称)数据库系统所无法实现的客户服务器(Ckient / Server)结构和响应的数据库安全机制,Access具备了许多先进的大型数据管理管理系统所具备的特征。 ( 3 )可以方便地生成各种数据对象,利用存储的数据建立窗体和报表 ( 4 )作为Office套件的一部分,可以与Office集成,实现无缝连接 ( 5 )能够利用Web检索和发布数据,实现与Internet的连接,Access主要适用于中小企业应用系统,或作为客户机 / 服务器系统中的客户端数据库。 2.1 . 6 其他不常用关系型数据库 DB2,PostgreSQL,Informix,Sybase等。这些关系型数据库逐步的淡化了普通运维的实现,特别是互联网公司几乎见不到 |
2.2 非关系型数据库
非关系型数据库也被成为NoSQL数据库,NOSQL的本意是“Not Olnly SQL”
指的是非关系型数据库,而不是“No SQL”的意思,因此,NoSQL的产生并不是要彻底地否定关系型数据库,而是作为传统关系型数据库的一个有效补充。NOSQL数据库在特定的场景下可以发挥出难以想象的高效率和高性能。
随着互联网Web2.0网站的星期,传统的关系型数据库在应付web2,0网站,特别是对于规模日益扩大的海量数据,超大规模和高并发的微博、微信、SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题。
例如:传统的关系型数据库IO瓶颈、性能瓶颈都难以有效突破,于是出现了大批针对特定场景,以高性能和使用便利为目的功能特异化的数据库产品。NOSQL(非关系型)类的数据就是在这样的情景下诞生并得到了非常迅速的发展
高性能、高并发、对数据一致性要求不高
开源的NoSQL体系,如Facebook的Cassandra,Apache的HBase,也得到了广泛认同,Redis,mongb也逐渐越来越受到各类大中小型公司的欢迎和追捧
NOSQL非关系型数据库小结:
1、NOSQL不是否定关系数据库,而是作为关系数据库的一个重要补充
2、NOSQL为了高性能、高并发而生,忽略影响高性能,高并发的功能
3、NOSQL典型产品memcached (纯内存),redis(持久化缓存),mongodb(文档的数据库)
非关系型数据库又分为以下4种:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
( 1 )键值(Key - Value)存储数据库 键值数据库就类似传统语言中使用哈希表,可以通过key来添加、查询或删除数据,因为使用key主键访问,所以会获得很高的性能及扩展性 键值(Key - Value)数据库主要是使用一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key / value模型对于IT系统来说的优势在于简单、易部署、高并发 k1—>数据 k2—>数据 典型产品:Memcached、Redis、MemcacheDB、BerkeleyDB ( 2 )列存储(Column - oriedted)数据库 = = = = = = >了解即可,一般公司用不到 这部分数据库通常用来分布式存储的海量数据,键仍然存在,但是他们的特点是指向了多个列。 典型产品:Cassandra,HBase ( 3 )面向文档(Document - Oriented)数据库 面向文档数据库会将以文档的形式存储。每个文档都是自包含的数据单元,是一系列数据项的集合。每个数据项都有一个名称与对应的值,值既可以是简单的数据类型,如字符串、数字和日期等;也可以是复杂的类型,如有序列表和关系对象。数据存储的最小单位是文档,同一个表中存储的文档属性可以是不同的,数据可以使用XML、JSON或者JSONB等多种形式存储 典型产品:MorgoDB、CouchDB ( 4 )图形(Graph)数据库 |
常见的非关系型数据库
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
2.2 . 1 memcached(key - value) Memcaced是一个开源的、高性能的、具有分布式内存对象的缓存系统。通过它可以减轻数据库负载,加速动态的web应用,最初版本由LiveJoumal 的Brad Fitzpatrick在 2003 年开发完成。目前全球有非常多的用户都在使用它来架构主机的大负载网站或提升主机的高访问网站的响应速度。注意:Memcache 是这个项目的名称,而Memcached是服务端的主程序文件名。 缓存一般用来保存一些进程被存取的对象或数据,通过缓存来存取对象或数据要比在磁盘上存取块很多,前者是内存,后者是磁盘、Memcached是一种纯内存缓存系统,把经常存取的对象或数据缓存在memcached的内存中,这些被缓存的数据被程序通过API的方式被读取,memcached里面的数据就像一张巨大的 hash 表,数据以key - value对的方式存在。Memcached通过缓存经常被存取的对象或数据,从而减轻频繁读取数据库的压力,提高网站的响应速度,构建出快速更快的可扩展的Web应用。 官网:http: / / memcached.org / 由于memcached为纯内存缓存软件,一旦重启所有数据都会丢失,因此,新浪网基于Memcached开发了一个开源项目Memcachedb。通过为Memcached增加Berkeley DB的特久化存储机制和异步主复制机制,使Memcached具备了事务恢复能力、持久化数据能力和分布式复制能力,memcached非常适合需要超高性能读写速度、持久化保存的应用场景,但是最近几年逐渐被其他的持久化产品替代如Redis Memcached小结: 1 、key - value行数据库 2 、纯内存数据库 3 、持久化memcachedb(sina) 2.2 . 2 Redis(key - value) 和Memcached类似,redis也是一个key - value型存储系统。但redis支持的存储value类型相对更多,包括string(字符串)、 list (链表)、 set (集合)和zset(有序集合)等。这些数据类型都支持push / pop、add / remove及取交集、并集和差集及更丰富的操作,而且这些操作都是原子性的。为了保证效率,redis的数据都是缓存在内存中。区别是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在基础上实现了master - slave(主从)同步。 redis是一个高性能的key - value数据库。redis的出现、很大程度补偿了memcached这类key / value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了Python、Ruby、Erlang、PHP客户端,使用方便。 官方:http: / / www.redis.io / documentation redis特点: 1 )支持内存缓存,这个功能相当于memcached 2 )支持持久化存储,这个功能相当于memcachedb,ttserver 3 )数据库类型更丰富。比其他key - value库功能更强 4 )支持主从集群、分布式 5 )支持队列等特殊功能 应用:缓存从存取memcached更改存取redis 2.2 . 3 MongoDB(Document - oriented) MongoDB是一个介于关系型数据库和非关系型数据库之间的产品,是非关系型数据库当中功能最丰富,最像关系数据库的。他支持的数据库结构非常松散,类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongodb最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。 特点: 高性能、易部署、易使用、存储数据非常方便 主要功能特性: 1. 面向集合存储,易存储对象类型的数据 2. “面向集合”(Collenction - Orented)意思是数据库被分组存储在数据集中,被称为一个集合(Collenction)每个 集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档,集合的概念类似关系型数据库(RDBMS)里的表(table)不同的是它不需要定义任何模式(schema) 3. 模式自由 模式自由(schema - free)意为着存储在mongodb数据库中的文件,我们不需要知道它的任何结构定义。 4. 支持动态查询 5. 支持完全索引,包含内部对象 6. 支持查询 7. 支持复制和故障恢复 8. 使用高效的二进制数据存储,包括大型对象 9. 自动处理碎片、以支持云计算层次的扩展性 2.2 . 4 Cassandra(Column - oriented) Apache Cassndra是一套开源分布式Key - Value存储系统。它最初由Facebook开发,用于存储特别大的数据。Facebook目前在使用此系统。 主要特点: 1. 分布式 2. 基于column的结构化 3. 高伸展性 4.Cassandra 的主要特点就是它不是一个数据库,而是由一堆数据库节点共同构成一个分布式网络服务,对Cassandra的一个写操作,会被复制到其他节点上去,对Cassandra的读操作。也会被路由到某个节点上面去读取。 Cassandir是一个混合型的非关系的数据库,类似于Google的BigTable。其主要功能比Dynomie(分布式的key - value存储系统)更丰富,Cassandra最初由Facebook开发,后转变成了开源项目。 2.2 . 5 其他不常用非关系型数据库 HBase、MemcacheDB、BerkeleyDB、Tokyo Cabinet\\Tokyo Tyrant(ttserver) ttserver 持久化输出,缺点存储 2 千万条 性能下降(由日本人发明) |
进入今天我们主要讲的内容:MySQL
二.MySQL介绍
1.mysql版本
双授权版本:社区版(完全免费,功能也够nb了)和商业版(更好,功能更多更强大一些,但是收费,VIP,有售后服务,也会参考和吸收社区版的一些nb的功能,安全性和稳定性都是最好的,大几十万),一般NB的开源软件都是双授权的
每个版本又分四个版本依次进行发布:
Alpha版:一般只在开发公司内部使用,不对外公开,测试、自我检查的版本
Beta版:一般是开发完也测试完的版本,一般不会出现比较大的性能bug(一般我们不用,阿里、去哪儿会使用这个版本,有些新功能,内部有高手能调,也能评估新功能的性能)
RC版:根据Beta版测试之后收集到一些bug等在进行完善的一个版本
GA版:软件正式发布的版本,没有特别的需求一定要使用GA版,有些公司追求新功能会使用Beta版,这是个例。
2.MySQL的产品线:(mysql是C++写的,oracle 9i版本之前是C语言写的,之后主要是java)
最早期,mysql是按照3.x--4.x--5.x等来开发的,但是为了提高MySQL的竞争优势,以及提高性能、降低开发维护成本等原因,同时,更方便企业用户更精准的选择合适的版本产品用于自己的企业生产环境中,MySQL在发展到5.1系列版本之后,重新规划为三条产品线。
第一条:5.0.xx 到 5.1.xx产品线系列介绍
第二条:5.4.xx 到 5.7.xx产品线系列介绍(主流:5.5和5.6)
第三条:6.0.xx 到 7.1.xx产品线系列介绍
3. MySQL数据库软件命名介绍
以mysql-5.6.42.tar.gz的版本号来解释:
1.第一个数字5是主版本号,描述了文件格式。所有版本5发行都有相同的文件格式。
2.第二个数字6是发行级别。主版本号和发行级别组合到一起便构成了发行序列号。
3.第三个数据42是在此发行系列的版本号,随每个新发布版递增。通常你需要已经选择发行的最新版本,每次更新后,版本字符串的最后一个数字会递增。如果增加了一些新功能或者微小的不兼容性,版本字符串的第二个数字会递增。如果文件格式改变,第一个数字会递增。
一般有的版本也会加上上面我们说的4个版本的后缀,beta、alpha、rc版、ga版等等,我们举得这个例子是不带后缀的,就相当于GA版
4.1 MySQL版本选择建议
1.稳定版:选择开源的社区版的稳定版GA版本
2.产品线:可以选择5.1、5.5、5.6,互联网公司主流5.5和5.6,其次是5.1.
3.选择MySQL数据库GA版发布后6个月以上的GA版本。
4.要选择前后几个月没有大的BUG修复的版本,而不是大量修复BUG的集中版本
5.最好向后较长时间没有更新发布的版本。
6.开发、测试、运维、DBA进行自己本地测试的时候,最好要和线上的版本一致,最差也要兼容,所以作为开发,你要清楚公司用的哪个版本的数据库
7.作为内部开发测试数据库环境,跑大概3-6个月的时间。
8.优先企业非核心业务采用新版本的数据库GA版本的软件。
10.想DBA高手请教,或者在技术分为好的群里和大家一起交流,使用真正高手用过的好用的GA版本产品
经过上述工序后,若没有重要的功能BUG或者性能瓶颈,则可以开始考虑作为任何业务数据服务的后端数据库软件。
好了,同志们,铺垫了这么多,我们要开始学习实战内容啦,来看第四大节,修改密码~~
三.MySQL的下载安装,简单应用及目录介绍
1.下载安装
win10系统下安装说明:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
#1、下载:MySQL Community Server 5.7.16 http: / / dev.mysql.com / downloads / mysql / #2、解压 如果想要让MySQL安装在指定目录,那么就将解压后的文件夹移动到指定目录,如:C:\\mysql - 5.7 . 16 - winx64 #3、添加环境变量 【右键计算机】 - - 》【属性】 - - 》【高级系统设置】 - - 》【高级】 - - 》【环境变量】 - - 》【在第二个内容框中找到 变量名为Path 的一行,双击】 - - > 【将MySQL的 bin 目录路径追加到变值值中,用 ; 分割】 #4、初始化 mysqld - - initialize - insecure #5、启动MySQL服务 mysqld # 启动MySQL服务 #6、启动MySQL客户端并连接MySQL服务 mysql - u root - p # 连接MySQL服务器 #7、将mysql添加系统服务 注意: - - install前,必须用mysql启动命令的绝对路径 # 制作MySQL的Windows服务,在终端执行此命令: "c:\\mysql-5.7.16-winx64\\bin\\mysqld" - - install # 移除MySQL的Windows服务,在终端执行此命令: "c:\\mysql-5.7.16-winx64\\bin\\mysqld" - - remove 注册成服务之后,以后再启动和关闭MySQL服务时,仅需执行如下命令: # 启动MySQL服务 net start mysql # 关闭MySQL服务 net stop mysql |
Linux系统下安装说明:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
1. 解压tar包 cd / software #cd到一个自己创建的文件夹中 tar - xzvf mysql - 5.6 . 21 - linux - glibc2. 5 - x86_64.tar.gz #解压下载下来的mysql文件,如果没在这个文件夹中,记得把文件移动到这个文件夹中,通过mv指令 mv mysql - 5.6 . 21 - linux - glibc2. 5 - x86_64 mysql - 5.6 . 21 #通过mv指令给这个解压出来的文件改了个名字 2. 添加用户与组 groupadd mysql #添加用户组 useradd - r - g mysql mysql #创建mysql用户,并添加到mysql用户组 chown php操作MySQL数据库判断多个数据表是不是存在,不存在就创建要怎么写呢
|