lnmp架构之mysql部署

在前面的操作中(之前的文章),我们已经手动配置好了nginx的负载均衡服务器,后端配置有两个RS;在nginx调度服务器上使用php源码编译安装了php,使用nginx发布了php页面,同时为了减轻数据库的负载,给php添加了高性能的分布式内存缓存服务器memcached,使用openresty对php+memcached进行了优化,提高了并发量;结合tomcat和nginx,在后端两个服务器上部署了tomcat集群,将动态静态资源进行分离,同时给tomcat集群配置了memcached缓存服务器,使用交叉式存储实现了后端两个服务器之间的session共享,提升了nginx调度的性能;在lnmp架构中,只剩下来要介绍的mysql数据库的构建。

一、mysql介绍

MySQL 是一款安全、跨平台、高效的,并与 PHP、Java 等主流编程语言紧密结合的数据库系统。该数据库系统是由瑞典的 MySQL AB 公司开发、发布并支持,由 MySQL 的初始开发人员 David Axmark 和 Michael Monty Widenius 于 1995 年建立的。

目前 MySQL 被广泛地应用在 Internet 上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,使得很多公司都采用 MySQL 数据库以降低成本。

关系型数据库,存储的格式可以直观地反映实体间的关系。关系型数据库和常见的表格比较相似,关系型数据库中表与表之间是有很多复杂的关联关系的。
常见关系型数据库有Oracle,SQLServer,DB2,Mysql等。在轻量或者小型的应用中,使用不同的关系型数据库对系统的性能影响不大,但是在构建大型应用时,则需要根据应用的业务需求和性能需求,选择合适的关系型数据库。
对于非关系型数据库即NoSQL数据库,以数据集的方式,把大量的数据集中存储在一起,类似于键值对、图结构或者文档,比较主流的有redis,HBase,MongoDb,memcache等产品,通常都采用开源的方式。

二、源码包编译安装mysql:

下载:https://dev.mysql.com/downloads/mysql/

lnmp架构之mysql部署_第1张图片

 解压源码包:

编译mysql用的是cmake(mysql8需要cmake3.5以上):

我们用的是mysql5.7的,所以我们直接安装源生的cmake即可:

 

编译还需要安装gcc,gcc-c++:

 

编译安装mysql还得靠官方文档啊: MySQL :: MySQL 5.7 Reference Manual :: 2.9.3 MySQL Layout for Source Installation

编译选项参数:MySQL :: MySQL 5.7 Reference Manual :: 2.9.7 MySQL Source-Configuration Options

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock -DWITH_INNOBASE_STORAGE_ENGINE=1 -DSYSCONFDIR=/etc -DWITH_EXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=/root/mysql-5.7.35/boost/boost_1_59_0
make && make install

#添加mysql用户
useradd -s /sbin/nologin -M -d /data/mysql mysql 
cd /usr/local/mysql/support-files
cp mysql.server /etc/init.d/mysqld #要确保mysqld具有可执行权限
mkdir -p /data/mysql
chown mysql.mysql /data/mysql/

编译成功!此处有个warning,但是不影响编译,也可以解决:

lnmp架构之mysql部署_第2张图片

注:若是编译中途由于依赖性问题失败,解决依赖性后重新编译前要删除mysql源码包里的缓存 CMakeCache.txt 

在make时可以使用 -j 指定计算时使用的cpu核心数(虚拟机不能使用,会造成内存溢出):

lnmp架构之mysql部署_第3张图片

make 完成后进行 make install :

lnmp架构之mysql部署_第4张图片

 lnmp架构之mysql部署_第5张图片

 进入/etc/my.cnf更改配置:

lnmp架构之mysql部署_第6张图片

将mysql可执行文件bin路径放入用户主目录的 .bash_profile 中:

lnmp架构之mysql部署_第7张图片

 source .bash_profile 使之生效:

三、初始化mysql:

#初始化
mysqld --initialize --user=mysql
#启动数据库
/etc/init.d/mysqld start

lnmp架构之mysql部署_第8张图片

使用初始密码登陆mysql,必须更改密码才能继续操作:

lnmp架构之mysql部署_第9张图片

 使用mysql_secure_installation 更改密码:

lnmp架构之mysql部署_第10张图片

注:此时为测试环境不在生产环境,所以不要密码强壮度检测插件。此时mysql初始化完成,可以正常使用数据库了。

 lnmp架构之mysql部署_第11张图片

四、lnmp架构的构建

接下来我们就要把整个lnmp架构串联到一起:nginx+php+mysql,java则需要tomcat:

首先,我们在nginx发布目录:/usr/local/nginx/html 下放入phpMyAdmin:

phpMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库。通过phpMyAdmin 可以完全对数据库进行操作,例如建立、复制和删除数据等等。

lnmp架构之mysql部署_第12张图片

 lnmp架构之mysql部署_第13张图片

 此文件使用php打开,使用前要打开php-fpm。在nginx的配置文件 /usr/local/nginx/conf/nginx.conf  中添加默认首页index.php:

lnmp架构之mysql部署_第14张图片

此时访问myadmin :

lnmp架构之mysql部署_第15张图片

问题一:nginx找不到mysql的socket:

lnmp架构之mysql部署_第16张图片

 解决:

vim /usr/local/php/etc/php.ini :

 

 更改完成之后reload一下:

此时登陆成功:

 lnmp架构之mysql部署_第17张图片

 这个页面成功加载就说明lnmp架构部署成功。

我们由于实验环境的问题,将nginx+php+mysql都放在一台电脑上了,但是在生产环境部署时肯定是分布式部署的。

你可能感兴趣的:(架构,mysql,数据库)