11.1 LAMP架构介绍

  • Linux+Apache(httpd)+MySQL+PHP Linux: 操作系统 Apache: 提供Web服务的软件,真正名字叫httpd MySQL: 存储数据,字符串的数据库 PHP: 用C开发,类似shell但比shell高级,通常用于做网站

  • Apache,MySQL,PHP三个角色可以在一台机器上,也可以分开,但Apache(httpd)和PHP要在一起,因为PHP是以一个模块的形式存在Apache上的.

  • 静态请求: 直接由webserver处理的请求,比如图片,js,css等. 用户<-->Apache<-->静态文件

  • 动态请求: 需要和数据库打交道的请求. 用户<-->Apache<-->PHP模块<-->MySQL

11.2 MySQL_MariaDB介绍

  • MySQL是一个关系型数据库,由mysql ab公司开发,mysql在2008年被sun公司收购(10亿美元),2009年sun公司被oracle公司收购(74亿美元).MySQL官网https://www.mysql.com.MySQL5.6变化比较大,5.7性能上有很大提升.

  • Mariadb为MySQL的一个分支,官网https://mariadb.com

  • Mariadb主要由SkySQL公司(现更名为MariaDB公司)维护,SkySQL公司由MySQL原作者带领大部分原班人马创立.

  • Mariadb5.5版本对应MySQL的5.5,10.0对应MySQL5.6

  • MySQL各个版本: Community社区版本 Enterprise企业版 GA(Generally Available)通用版本,在生产环境中用的 DMR(Development Milestone Release)开发里程碑发布版 RC(Release Candidate)发行候选版本 Beta开放测试版本 Alpha内部测试版本

11.3/4/5 MySQL安装

  • MySQL的几个常用安装包: rpm,源码,二进制免编译.

  • 二进制免编译包是在其他Linux机器已经编译后打包的,安装时无需再编译,与rpm包安装类似,但胜于rpm包的一点是它能指定安装的路径,而rpm包不能指定.

  • 二进制免编译包可不足之处是性能可能不能保证,如果追求性能建议用源码安装方式.

  • 二进制免编译包安装MySQL简要步骤: cd /usr/local/src wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz #下载MySQL二进制免编译包 tar zxvf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz #解压安装包 mv mysql-5.6.36-linux-glibc2.5-x86_64 /usr/local/mysql #将安装包移动到/usr/local/mysql目录下 cd /usr/local/mysql useradd mysql #创建mysql用户 mkdir /data/ #创建数据库目录 ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql #初始化,指定数据库用户和目录(这是一个perl脚本) cp support-files/my-default.cnf /etc/my.cnf #拷贝配置文件 cp support-files/mysql.server /etc/init.d/mysqld #拷贝启动脚本

  • 编辑mysql配置文件: vi /etc/my.cnf 定义datadir和socket datadir=/data/mysql socket=/tmp/mysql.sock

  • 编辑mysql启动脚本: vi /etc/init.d/mysqld 定义basedir和datadir basedir=/usr/local/mysql datadir=/data/mysql /etc/init.d/mysqld start #启动mysql服务

  • 运行./scripts/mysql_install_db --user=mysql --datadir=/data/mysql进行初始化后,如何知道是否成功呢?简单说一是看是否有2个OK(如下图);二是立刻运行echo $?查看刚运行的初始化命令返回值是否为0(0成功,1失败).

  • 可用如下命令让mysqld能开机启动 chkconfig --add mysqld #将mysqld加入到启动列表中以便能开机启动

  • 安装过程(主要是初始化那一行命令)中遇到的问题:

  • 问题1: -bash: ./scripts/mysql_install_db: /usr/bin/perl: 坏的解释器: 没有那个文件或目录 解决方法: yum install perl -y

  • 问题2: [root@kh-01 mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql Installing MySQL system tables..../bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory 解决方法: yum install libaio* -y

  • 安装包时遇到缺少某些模块/包问题的一般思路,比如如下错误提示: FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db: Data::Dumper 方法一: 先模糊搜索可能的安装包-->安装搜索到的安装包-->再次执行,若不报错则说明安装正确. yum list|grep perl|grep -i dumper 方法二: 网上搜索该问题 www.baidu.com www.bing.com www.google.com

  • 命令行启动mysql服务(了解): /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql & 关闭mysql服务(了解): killall mysqld 注(重要): 不要用kill pid形式来关闭mysql服务,因为有可能造成数据丢失;而用killall会先停止当前写/读操作,将缓存中未同步到磁盘中的数据同步到磁盘后,再停止mysql服务.

  • mysql的两个引擎(此处先做了解则可): innodb myisam