笔记内容:
11.1 LAMP架构介绍
11.2 MySQL、MariaDB介绍
11.3/11.4/11.5 MySQL安装
笔记日期:2017.9.26
11.1 LAMP架构介绍
LAMP包含了四种东西,就是Linux+Apache(httpd)+MySQL+PHP的一个简写,Linux我们都很熟悉,它通常作为服务器操作系统,Apache则是一个提供Web服务的一个软件,它真正的名称是httpd。MySQL是数据库软件,存储的是一些数据、字符串、用户信息。PHP是一个脚本语言,和shell类似但是比shell复杂,如果接触过C语言的就知道PHP是用C语言开发的,它通常用来做网站,是前几年比较火热的一门语言,但是现在的趋势是向移动端互联网发展,在PC上访问网站的用户少于在手机上访问网站的用户,所以现在PHP的需求也没有以前高了。
这两年流行的web开发语言是Java、Python、Go等语言,但是有些服务端也还在使用着PHP,因为客户端要向服务端读取数据,数据存储在MySQL里,如果服务端的程序是用PHP写的,那么MySQL要和PHP打交道,既然有服务端使用着PHP程序那么LAMP架构就还有学习的必要。
Apache、MySQL、PHP安装在Linux,Linux做为一个承载的平台,如果搭建一个小的架构的话,Apache、MySQL、PHP可以安装在一台机器上,不过也可以分开安装,但是Apache要与PHP安装在同一台机器上,可以把它俩看作是一个整体,MySQL则可以单独安装在另一台机器上,因为它们可以通过网络连接起来。对于一些小型的、访问量不是很高网站来讲,在一台机器上跑这三个服务是可以的。
架构图:
刚刚上面提到可以把Apache和PHP看作为一个整体,因为PHP是以一个模块的形式与Apache结合在一起的。Apache不能直接与MySQL交互,它只能通过PHP这个模块去MySQL里面读取数据,PHP把读取的数据交给Apache,Apache再交给用户。
我们把PHP与MySQL交互读取数据的这种请求,称为动态请求。当我们登录某个网站的账户时就是一个动态请求,浏览器先将账户密码发送给Apache,Apache再交给PHP去与MySQL数据库里的数据进行比较,正确或者错误的结果再通过Apache反馈给用户。
在网站上我们通常可以看到很多的图片、Logo什么的,这些网站素材的读取也是要到Apache上去请求的,但是这些图片素材没有存储在MySQL数据库里,而是存在服务器操作系统的某一个目录上。Apache可以直接读取到这些图片素材,然后可以直接返回给客户端,这个过程不需要与MySQL数据库打交道,所以称之为静态请求。MySQL数据库是不存储图片或文件的,MySQL数据库只存储账户密码、用户信息、用户的积分等等数据,而且这些数据也是会经常发生变化的数据。
11.2 MySQL、MariaDB介绍
什么是数据库:
数据库是与应用程序实现信息交互的数据存储、管理软件,并且存储数据的也都可以称为数据库。
MySQL数据库:由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。
MariaDB数据库管理系统则是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB引擎来代替MySQL的InnoDB引擎。 MariaDB由MySQL的创始人Michael Widenius(英语:Michael Widenius)主导开发,因为他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。Oracle公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。 过去一年中,大型互联网用户以及Linux发行商纷纷抛弃MySQL,转投MariaDB阵营。MariaDB是目前最受关注的MySQL数据库衍生版,也被视为开源数据库MySQL的替代品。MariaDB虽然被视为MySQL数据库的替代品,但它在扩展功能、存储引擎以及一些新的功能改进方面都强过MySQL。MariaDB名称来自Michael Widenius的女儿Maria的名字。
MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎,它使用了Percona的 XtraDB,InnoDB的变体,分支的开发者希望提供访问即将到来的MySQL 5.4 InnoDB性能。这个版本还包括了 PrimeBase XT (PBXT) 和 FederatedX存储引擎。
11.3/11.4/11.5 MySQL安装
二进制免编译包是相当于发布之前就在一台Linux服务器进行了编译,编译后将文件整合到了一个目录,然后再将这些目录和文件打包压缩后再发布出来。二进制免编译包有一个好处,就是我们不用花费那么多时间去编译,直接拿过来安装就就可以了。
二进制免编译包和rpm包有点类似,但是rpm包有一个缺点,就是没办法去定义安装路径,因为rpm包默认装在usr目录下,二进制免编译包则可以自由指定安装路径。
二进制免编译包毕竟是在别的机器上编译的,虽然不会有什么大的问题,但是想追求完美还是自己编译源码包要好一些。
MySQL二进制包下载地址:
http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
要下载与操作系统相对应位数的二进制免编译包,查看自己操作系统位数的命令是uname -a,x86_64的就是64位,i686、i586之类的则是32位,如果这个链接失效可以去r.aminglinux.com上去找。
然后使用wget下载:
下载好之后,第一步就是解压:
第二步,移动文件到/usr/local/下,并且将目录名称改为mysql:
然后进入到mysql目录下,可以看到以下文件和目录:
第三步,创建mysql用户:
第四步,如果系统中没有/data/目录就需要创建这个目录,有这个目录则可以省略这一步:
第五步,初始化生成/data/下的mysql目录,因为mysql要启动需要一个自带的库,所以我们要生成这个库:
这一步有可能会出现以下错误,从错误提示的字面上看可以知道,是缺少Perl的模块,这个模块的名称是Dumper,因为mysql_install_db是一个Perl文件,所以依赖于Perl,意思就是要安装这个模块的包:
但是我们并不知道Dumper具体的包名是什么,这时候我们可以模糊搜索一下这个Dumper的包:可以看到出现了几个和Dumper相关的包,如果不知道是哪个包就全部都安装一遍,不过在这里需要安装的是perl-Data-Dumper.x86_64,所以使用yum安装:
安装完这个包后继续执行初始化生成/data/mysql/目录的命令:
然后马上使用echo $?验证一下是否成功,为0的就是成功:
初始化完成后,进行第六步拷贝配置文件和启动脚本,配置文件在support-files目录下:
support-files目录下有一个模板配置文件:
把这个模板配置文件拷贝到etc目录下并更名为my.cnf:
Mysql的配置文件名称默认是/etc/下的my.cnf,这个名称和路径都是默认的,如果放在其他目录下,则要在mysql启动的时候指定这个配置文件。
我们先不拷贝,先ls一下/etc/my.cnf,可以发现这个文件是自带存在的:
我们可以使用命令查看一下这个文件从哪个包来的:
可以看到这个文件是来自于mariadb。
我们也可以不需要拷贝直接使用这个文件也可以,但是前提是得修改这个文件的配置信息,修改前:
修改后:
修改完之后就可以直接使用这个自带的,以后遇到需求要增加配置内容再去这个文件里增加即可。
第七步,拷贝启动脚本,这个脚本也是在support-files目录下:
拷贝完后编辑mysqld文件,找到basedir和datadir:
第八步,如果不是755权限,就要修改文件权限为755:
如果要将mysql设置为开机启动,就要添加进chkconfig里:
启动mysqld服务:
查看一下进程:
查看一下监听的端口:
如果遇到没有启动脚本文件拷贝,或者没法拷贝的情况下可以用这种方式启动:
查看一下进程,有进程就代表启动成功:
使用命令行方式启动的mysql服务,不能直接使用service等命令去关闭,要使用killall去关闭进程:
killall要安全一些,因为使用kill会直接中断,killall可以先让进程把内存中的数据读写完成之后,再杀死这个进程,kill则不会这么做,所以使用kill命令可能会有丢失数据的风险。
所以当你遇到使用killall命令杀死进程的时候,发现过了一两分钟进程还存在,不要直接killall -9去杀死进程。因为可能你这个进程读写的数据比较多,所以需要一定的时间等待它读写完成,如果直接killall -9会丢失数据或者损坏文件。
扩展
mysql5.5源码编译安装
http://www.aminglinux.com/bbs/thread-1059-1-1.html
mysql5.7二进制包安装(变化较大)
http://www.apelearn.com/bbs/thread-10105-1-1.html