本文参考老男孩教材安装部分:https://blog.csdn.net/hoboher...https://dev.mysql.com/doc/ref...1数据库介绍1.1什么是数据库简单来说,数据库就是存放数据库的仓库。这个仓库是根据一定的数据结构(数据结构是指数据的组织形式或数据之间的关系)来组织和存储的,我们可以通过数据库提供的多种方法来管理数据库中的数据。但是现在的数据库已经不仅仅是存储和管理数据,而是转变为用户需要的各种数据管理方式。数据库的种类和功能很多,从最简单的存储各种数据的表到能够存储海量数据的大型数据库系统,在各个方面都得到了广泛的应用。1.2数据库的种类根据早期的数据库理论,流行的数据库分为三种,即层次数据库、网络数据库和关系数据库。在当今的互联网中,最常用的数据库模型主要有两种,即关系型数据库。数据库和非关系数据库(NOSQL)。1.2.1关系数据库简介(1)关系数据库的起源网络数据库和层次数据库虽然解决了数据的集中和共享问题,但在数据独立性和抽象层次上仍有很大差距。用户在访问这两个数据库时,仍然需要明确数据的存储结构,指出访问路径。关系数据库可以更好地解决这些问题。(2)关系数据库简介关系数据库模型将复杂的数据结构归结为简单的二元关系(即二维表的形式),使用结构化查询语言SQL检索语句。关系数据库产品包括MySQL和Oracle。1.2.2非关系数据库简介(1)非关系数据库的诞生背景非关系数据库称为NoSQL数据库。NoSQL的原意是“NotOnlySQL”,指的是非关系型数据库。NoSQL的出现并不是要完全否定关系数据库,而是作为对传统关系数据库的有效补充。NoSQL在特定场景下可以实现超乎想象的高效率和高性能。由于互联网WEB2.0网站的兴起,传统关系型数据库正在响应web2.0网站,尤其是针对不断膨胀的海量数据、超大规模、高并发的微博、微信、SNS类型的web2.0纯动态的网站已经变得力不从心,暴露出很多无法克服的问题。于是,一大批以高性能和易用性为目的的功能专业化的数据库产品,针对特定场景的NoSQL(非关系型)数据库应运而生,并且发展非常迅速。1.2.2.1非关系数据库的类型(1)Key-Value存储数据库Key-value数据库类似于传统语言中使用的哈希表。数据可以通过键进行增、查、删,由于使用键的主键进行访问,所以可以获得高性能和可扩展性。键值(Key-Value)数据库主要使用哈希表,哈希表中有是一个特定的键和指向特定数据的指针。IT系统Key/value模型的优点是简单、易部署、高并发。典型产品:Memcached、Redis、MemcacheDB、BerkeleyDB(2)面向列的数据库这种数据库环境较差并且通常被大公司使用。工资在15K以下,可以先忽略学习。因为用的不多。列存储数据库将数据存储在列族中,列族存储经常一起查询的相关数据。这部分数据库通常用于处理分布式存储中的海量数据。键仍然存在,但它们通常引用多个列。列按列族排列。典型产品:Cassandra、HBase(3)面向文档的数据库(4)面向图形的数据库在这里了解更多关于Memcached、Redis和MongoDB的信息。互联网公司去IOE,Oracle适合传统大企业,大公司,政府,金融,证券1.3.2MySQL数据库MySQL数据库是中小型关系型数据库管理系统,软件开发商是瑞典人MySQLAB公司。由于体积小、速度快、总拥有成本低,尤其是开源代码,很多大中小型网站为了降低总拥有成本也选择MySQL作为网站数据库,就连淘宝也选择启用ORACLE以取代MySQL更开放。应用范围:大中小型网站、互联网领域、大中小型网站、游戏公司、电商平台等。1.3.3MemcachedMemcached是一个开源、高性能的分布式内存缓存系统对象。它可以减少数据库负载并加速动态Web应用程序。最初的版本是由LiveJournal的BradFitzpatrick在2003年开发的。目前全球有很多用户在使用它来建立自己的大负载网站或者提高高访问网站的响应速度。Memcache是??这个项目的名字,Memcached是服务器端的主程序文件的名字。缓存一般用来保存一些经常访问的对象或数据。Memcached是一种纯内存缓存系统,可以缓存经常访问的对象或数据。在memcached的内存中,这些数据是程序通过API访问的。为了解决Memcached重启时数据丢失的问题,新浪开发了一个开源项目Memcachedb。1.3.4Redis类似于Memcached。Redis也是Key-Value,自带持久化、主从、集群等,经常被大公司使用。2MySQL简介2.1MySQL的优势(1)MySQL性能优良,服务稳定,异常宕机少。(2)MySQL是开源的,没有版权限制,自主性强,使用成本低。(3)MySQL历史悠久,社区和用户非常活跃。遇到问题可以寻求帮助。(4)MySQL软件体积小,安装使用方便,维护方便,安装维护成本低。(5)口碑MySQL品牌效应,没错,企业想都没想就直接用,LAMP、LEMP流行架构。(6)MySQL支持多种操作系统,提供多种API接口,支持多种开发语言,尤其是流行的PHP语言。GA版为软件正式发布版本2.2MySQL版本选择最终建议1)稳定版:选择开源社区版本的稳定版GA版2)产品线:可选择5.1或5.5。互联网公司主流是5.5,其次是5.1和5.63)选择MySQL数据库GA版本发布后6个月以上的GA版本4)选择过去没有重大bug修复的版本几个月,而不是大量的bug修复集中版本5)最好发布长时间没有更新的版本6)考虑开发者开发程序使用的版本是否与版本兼容你选择7)作为内部开发测试数据库环境,运行3~6左右8)优先考虑企业非核心业务采用新版数据库GA版软件9)咨询DBA专家11)以上之后过程中,如果没有重要的功能bug或者性能瓶颈,可以开始考虑把它作为任何业务数据服务的后端数据库软件3MySQL安装MySQL分为商业版和社区版,我用的是社区版.3.1下载MySQL可以进入MySQL官网下载社区版二进制包下载链接:https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.22.tar.gz重要MySQL依赖于libaio库。如果本地没有安装这个库,数据目录初始化和后续的服务器启动步骤将失败。如有必要,使用适当的包管理器进行安装。shell>yumsearchlibaio#searchforinfoshell>yuminstalllibaio#installlibrary对于MySQL5.7.19及更高版本:*向一般Linux发行版添加了对非统一内存访问(NUMA)的支持,现在依赖于libnuma库;如果它尚未安装在您的系统上,请使用系统的包管理器搜索并安装它(请参阅最后一个项目符号以获取一些示例命令)。3.2开始安装,删除Mariadb遗留的配置文件。rm-rf/etc/my.cnf创建用户useradd-s/sbin/nologin-Mmysql修改权限chown-Rmysql.mysql/opt/mysql安装依赖shell>yum-yinstallgccgcc-develgcc-c++gcc-c++-develautoconf*automake*zlib*libxml*ncurses-develncurseslibgcrypt*libtool*cmakeopensslopenssl-develbisonbison-develperl-Data-Dumperboostboostboost-docboost-develunzipMySQL源码包shell>cd/opt/shell>tarzxfmysql-5.7.22.tar.gzshell>cdmysql-5.7.22Installboost5.7更新后有很多变化,比如现在必须安装boost库才能安装下载链接:https://netix.dl.sourceforge....安装命令:shell>mkdir/opt/mysql-5.7.22/boost/shell>cpboost_1_59_0.tar.gz/opt/mysql-5.7.22/boost/##这个boost版本只能用在这里解压等操作。该程序将在编译时执行。这里,只需要将包复制到这里即可编译。您必须首先切换到mysql源目录并转到shell>cmake\-DBUILD_CONFIG=mysql_release\-DCMAKE_BUILD_TYPE=RelWithDebInfo\-DCMAKE_INSTALL_PREFIX=/opt/mysql\-DMYSQL_DATADIR=/opt/mysql/data\-DSYSCONFDIR=/opt/mysql/conf\-DMYSQL_UNIX_ADDR=/opt/mysql/tmp/mysql.sock\-DSYSTEMD_PID_=/opt/mysql\-DMYSQL_USER=mysql\-DWITH_SYSTEMD=1\-DWITH_MYISAM_STORAGE_ENGINE=1\-DWITH_INNOBASE_STORAGE_ENGINE=1\-DWITH_ARCHIVE_STORAGE_ENGINE=1\-DWITH_MEMORY_STORAGE_ENGINE=1\-DWITH_READLINE=1\-DMYSQL_TCP_PORT=3306\-DENABLED_LOCAL_INFILE=1\-DENABLE_DOWNLOADS=1\-DWITH_PARTITION_STORAGE_ENGINE=1\-DEXTRA_CHARSETS=all\-DDEFAULT_CHARSET=utf8\-DDEFAULT_COLLATION=utf8_general_ci\-DWITH_DEBUG=0\-DMYSQL_MAINTAINER_MODE=0\-DWITH_SSL:STRING=bundled\-DWITH_ZLIB:STRING=bundled\-DDOWNLOAD_BOOST=1引入shell>cmake_CONFIG=DBUILDmysql_release\#此选项使用与Oracle相同的构建选项配置源代码分发,以生成官方MySQL版本的二进制分发-DCMAKE_BUILD_TYPE=RelWithDebInfo\#生成的构建类型=启用优化并生成调试信息。这是默认的MySQL构建类型。-DCMAKE_INSTALL_PREFIX=/opt/mysql\#option表示基本安装目录。-DMYSQL_DATADIR=/opt/mysql/data\#MySQL数据目录的位置。-DSYSCONFDIR=/opt/mysql/conf\#默认my.cnf选项文件目录。-DMYSQL_UNIX_ADDR=/opt/mysql/tmp/mysql.sock\#服务器监听socket连接的Unixsocket文件路径。这必须是绝对路径名。默认是/tmp/mysql.sock。-DSYSTEMD_PID_DIR=/opt/mysql\#mysql由systemd管理时创建PID文件的目录名。默认是/var/run/mysqld;这可能会根据INSTALL_LAYOUT值隐式更改。-dmysql_user=mysql\#mysql的的-dwith_systemd=1\#安装安装安装安装安装支持-dwith_myisam_storage_engine=1\-dwith_innobase_endobase_storage_engine_storage_end_engine=1\-dwith__ent__enter_stort__trine_ertecore_cartive_ertry=1\resore>\#配置MySQL监听的端口号-DENABLED_LOCAL_INFILE=1\#使mysql客户端具有加载数据infile的功能,存在安全隐患。loaddatainfile语句从文本文件中高速读取一个表-DENABLE_DOWNLOADS=1\#基于GoogleTest进行单元测试的googlemock分布路径。=1,CMake将从GitHub下载发行版。-DWITH_PARTITION_STORAGE_ENGINE=1\-DEXTRA_CHARSETS=all\-DDEFAULT_CHARSET=utf8\#服务器字符集-DDEFAULT_COLLATION=utf8_general_ci\#服务器排序规则-DWITH_DEBUG=0\#不包括调试支持。-DMYSQL_MAINTAINER_MODE=0\#是否开启MySQLmaintainer-specific开发环境。如果启用,此选项会导致编译器警告变为错误。-DWITH_SSL:STRING=bundled\-DWITH_ZLIB:STRING=bundled\-DDOWNLOAD_BOOST=1\#是否下载Boost库。默认为关闭。-DWITH_BOOST=./boost#指定Boost库目录位置。*注意如果想了解更多参数或者查看以上参数更详细的信息,请访问MySQL官网查看https://dev.mysql.com/doc/ref...查看是否编译成功shell>回声$?##如果为0则表示编译成功,安装MySQLshell>make&&makeinstall过程比较长,请耐心等待3.3相关配置添加systemd服务控制cp./scripts/mysqld.service/usr/lib/systemd/system添加环境变量cat>/etc/profile.d/mysql.sh<
