MySQL数据库多种安装方法及企业级安装实践(上篇)
《MySQL数据库多种安装方法及企业级安装实践(上篇)》要点: 本文来自《老男孩MySQL私房菜》第三章! 3.1MySQL数据库的安装方法及选择在当今的互联网企业里,MySQL数据库大多运行在Linux系列操作系统上,当然,你也可以运行在Windows/Unix等商业操作系统上,本书主要以国内互联网公司应用最多的数据库服务操作系统——CentOS6最新版(6.8)x86_64Linux系统为例进行讲解,使用其他系统的读者同样可以从本书受益! 即使是在CentOS6x86_64Linux系统环境下,若应用场景不同或版本不同,MySQL数据库的安装方法也会有所区别,下面我们就把最常见的几种方法一一介绍给大家! 3.1.1yum/rpm方式安装MySQL MySQL官方网站及相关镜像网站提供了不同版本的RPM安装包,并且针对不同的硬件或操作系统平台,安装包的类型也会有区别.在使用时,可以到官方网站下载页面进行选择,国内也有一些互联网公司提供了镜像,比如搜狐、阿里云公司提供的镜像资源就非常不错. 下面是搜狐网提供的数据库软件镜像地址:http://mirrors.sohu.com/mysql 注意:yum/rpm安装方式适合所有MySQL软件产品. 1.rpm包方式安装MySQL rpm包的安装方式非常简单,这里以el6平台下的mysql-5.6.34版本为例,首先,要通过上述搜狐镜像地址下载到如下四个MySQL相关软件安装包. MySQL-client-5.6.34-1.el6.x86_64.rpm 提示:我们可以从Linux的对应系统盘或系统镜像里找到类似的rpm包,但是版本一般会较低一些. 一般来说,其中的MySQL-server-5.6.34-1.el6.x86_64.rpm和MySQL-client-5.6.34-1.el6.x86_64.rpm这两个软件包是必须要安装的,至于另外两个软件包,则可视实际需要进行安装,不过一般建议一起安装. 可以把这四个RPM包上传到服务器的目录中,然后执行如下rpm命令进行安装: [root@oldboy tools]# rpm -qa|grep mysql #<==查找已经安装的mysql包 mysql-libs-5.1.73-7.el6.x86_64
rpm -e mysql-libs-5.1.73-7.el6.x86_64 –nodeps #<==卸载系统已经安装的mysql依赖包. rpm -ivh MySQL-client-5.6.34-1.el6.x86_64.rpm rpm -ivh MySQL-devel-5.6.34-1.el6.x86_64.rpm rpm -ivh MySQL-shared-5.6.34-1.el6.x86_64.rpm rpm -ivh MySQL-server-5.6.34-1.el6.x86_64.rpm 这里的el6表示适合操作系统的版本,还有el5、el7等.i686表示适合32位的系统,x86_64表示适合64位的系统. 执行上述命令即可完成MySQL软件的安装. 在采用rpm包安装方式时,必须要官方或第三方提供了现成的rpm软件包,否则是无法使用该方式安装的.另外,和直接采用yum的安装方式相比,rpm包的安装方式往往可以选择更新的版本,但是rpm包安装也有自身的问题,例如,无法满足定制化安装,比如,不能进行编译参数、路径等的更改. 2.?yum方式安装MySQL yum方式安装MySQL数据库时,只需执行一个命令yum install mysql-server -y即可,yum方式的安装原理是在执行yum安装命令后,会自动从yum源地址下载相应名称的MySQL数据库rpm包,然后到系统上安装,并自动解决各种软件包之间的依赖问题.这是一个非常不错的安装软件的方式,不仅仅是针对MySQL,安装其他软件也是如此. yum安装方式的最大优点就是超级简单,但是它也有自身的问题,例如它继承了rpm包的无法定制化安装的问题,另外一个缺点是采用默认的yum安装时,一般yum源带的软件版本都比较低,例如:截止作者写作本文时,使用CentOS6.8 Linux?默认yum安装的MySQL版本仅为5.1.73. 3.1.2?常规方式编译安装MySQL常规方式编译安装MySQL时,适合用第一条最正宗的MySQL产品线5.2及以前版本: 所谓常规方式编译安装MySQL就是延续早期MySQL的3部曲安装方式,即./configure;make;make install,下面是老男孩在早期的企业生产场景下操作过的具体命令及参数: tar zxf mysql-5.1.73.tar.gz tar zxf mysql-5.1.73.tar.gz cd mysql-5.1.73 ./configure –prefix=/application/mysql5.1.73 –with-unix-socket-path=/application/mysql5.1.73/tmp/mysql.sock –localstatedir=/application/mysql5.1.73/data –enable-assembler –enable-thread-safe-client –with-mysqld-user=mysql –with-big-tables –without-debug –with-pthread –enable-assembler –with-extra-charsets=complex –with-readline –with-ssl –with-embedded-server –enable-local-infile –with-plugins=partition,innobase –with-mysqld-ldflags=-all-static –with-client-ldflags=-all-static make make installl ln -s /application/mysql-5.1.73/ /application/mysql 安装到这里,MySQL数据库还不能正常启动使用,还需要进行初始化数据库等工作,具体可以参考后文安装部分. 此种方式适合所有MySQL5.2.xx及以前的产品系列,是最常规的编译方式,在当下的互联网企业中,此种编译安装的方法已经很少使用了,原因是第一条产品线的产品(MySQL5.2.xx及以前的产品系列)用得越来越少了,被第二条产品线(MySQL5.4.xx及以后的产品系列)的产品逐渐替代了,因此,老男孩也不建议读者再使用第一条产品线的产品作为对外的业务库. 3.1.3?采用cmake方式编译安装MySQL考虑到MySQL5.4.xx及以后系列产品的特殊性,其编译方式和早期的第一条产品线的有所不同,这里采用cmake或gmake方式的编译安装.即./cmake;make;make install,生产场景的具体命令及参数为: tar zxf mysql-5.6.34.tar.gz cd mysql-5.6.34 cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.6.34 -DMYSQL_DATADIR=/application/mysql-5.6.34/data -DMYSQL_UNIX_ADDR=/application/mysql-5.6.34/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 -DWITH_ZLIB=bundled -DWITH_SSL=bundled -DENABLED_LOCAL_INFILE=1 -DWITH_EMBEDDED_SERVER=1 -DENABLE_DOWNLOADS=1 -DWITH_DEBUG=0 #提示,编译时可配置的选项很多,具体可参考本章最后一部分内容或官方文档. make make install ln -s /application/mysql-5.6.34/ /application/mysql 安装到这里,MySQL数据库仍无法正常启动使用,具体可以参考后文安装部分,另外,cmake等用于编译的工具也需要提前进行安装.相关参数的说明,见后文. 如果上述操作未出现错误,则MySQL5.6.34软件cmake方式的安装就算成功了. 3.1.4?采用二进制方式免编译安装MySQL采用二进制免编译方式安装MySQL的方法和yum/rpm包安装方式类似,适合各类MySQL产品系列,不需要复杂的编译设置及编译时间等待,直接解压下载的软件包,就相当于编译方式的make install步骤完成了,然后只要进行初始化数据库的操作,即可完成并启动,此方式的MySQL软件包一般都比较大,最大可达180MB,采用二进制方式免编译安装MySQL的方法在后文会详细讲解. 3.1.5?如何正确选择MySQL的安装方式若是对数据库要求不太高的场景,可以采用yum/rpm方式安装MySQL,例如并发不大,只是在公司内部(wiki系统)、企业内部的应用(Zabbix监控系统,OpenStack后台管理)等需要数据库的一些应用场景,生产场景下也是可以选择yum或rpm方式进行安装的. 但是,有很多大型网站或门户网站,往往在安装MySQL时,会有各种定制化、初始化的需求,这时,要根据企业的需求先把源码包制作成rpm包,然后搭建自己的yum仓库,最终采用yum install mysql-server -y的方式安装,这样做的优点是即兼顾了yum/rpm安装方式简单的优点,又用到了源码包安装方式的可定制性,但是,使用这个方法需要一定的技术能力,此部分的内容读者可以参考老男孩教育为读者提供的如下博文. 自动化运维必备技能—定制属于自己的RPM包http://blog.oldboyedu.com/autodeploy-rpm/. 自动化运维必备技能—搭建属于自己的YUM仓库http://blog.oldboyedu.com/autodeploy-yum/. 二进制免编译安装方式很简单方便,且适合5.0-5.1和5.5-5.7系列,是不少专业DBA的选择,普通Linux运维人员一般多采用编译的方式安装,对应到MySQL5.0-5.1系列就是常规编译方式,对应到MySQL5.5-5.7系列就是cmake编译方式. 所以综合来讲,这些安装方式都是可以使用的,只是不同层次的人习惯不同,实际应用的性能差距不是很大. 老男孩的建议:首先是选择MySQL5.5或以上的数据库版本,当数据库服务器机器数量少的话,可采用cmake编译方式安装,这是很多运维人员的习惯选择.当数据库服务器机器数量多的情况,可用二进制免编译方式安装,这是某些DBA的偏爱,若是数据库服务器机器数量特别大,且对定制化要求很高,可以选择通过源码定制rpm包,搭建yum仓库的安装方式.当然了,采用此种方法的读者也要具备这方面的能力才行,前文已经给出了做rpm定制以及yum仓库搭建的地址,不再赘述. 3.2?安装并配置MySQL数据库3.2.1?安装MySQL数据库1.MySQL数据库的安装环境准备 如果读者没有物理服务器环境,则可以搭建vmware等虚拟机环境学习,相应地则需准备如下内容: 1)请提前加大VM虚拟机硬件的内存,这样编译时候会更快,最好设置2GB以上的内存. 2)最好提前下载好要安装的MySQL相关软件包(http://mirrors.sohu.com/mysql/). 3)重视每个操作过程的输出,有错误要解决掉再继续,不能忽略掉操作中的错误(error). 4)建议进入虚拟机界面去执行make以及make install,通过SSH操作有时会导致网络中断. 有关vmware虚拟化学习软件和CentOS6操作系统的安装详细步骤见《跟老男孩学Linux运维:Web集群实战》,或看免费部署文章:http://book.51cto.com/art/201605/510756.htm. 2.安装MySQL需要的依赖包和编译软件 [root@oldboy ~]# cat /etc/redhat-release #<==操作系统版本 CentOS release 6.8 (Final) [root@oldboy ~]# uname -r #<==内核版本 2.6.32-642.el6.x86_64 [root@oldboy ~]# uname -m x86_64??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #<==64位系统 (1)安装MySQL需要的依赖包 安装MySQL之前,最好先安装MySQL需要的依赖包,不然后面会出现很多报错信息,到那时还得再回来安装MySQL的依赖包.安装命令如下: [root@oldboy ~]# yum install ncurses-devel libaio-devel -y [root@oldboy ~]# rpm -qa ncurses-devel libaio-devel ncurses-devel-5.7-4.20090207.el6.x86_64 libaio-devel-0.3.107-10.el6.x86_64 提示:安装后使用rpm -qa ncurses-devel libaio-devel命令检查,如果出现两行如上信息表示安装成功. (2)安装编译MySQL需要的软件 [root@oldboy ~]# yum install cmake -y [root@oldboy ~]# rpm -qa cmake cmake-2.8.12.2-4.el6.x86_64 提示:安装后使用rpm -qa cmake检查,如果出现一行如上信息表示安装成功. 此外,也有网友采用源码包的方式安装cmake的,但比较复杂,因此一般建议读者选择这个简单的yum安装方法. 3.开始安装MySQL 为了让大家学习更多的MySQL技术,本文选择了相对复杂的源代码安装方式为例来讲解MySQL多实例安装,大型公司一般都会将MySQL软件定制成rpm包,然后放到yum仓库里,使用yum安装,中小企业里的二进制和编译安装的区别不大. 使用二进制方式安装MySQL方法见http://oldboy.blog.51cto.com/2561410/1893734. (1)建立MySQL用户账号 首先以root身份登录到Linux系统中,然后执行如下命令创建mysql用户账号: root@oldboy ~]# useradd -s /sbin/nologin -M mysql?#<==默认会创建和mysql用户同名的组. [root@oldboy ~]# id mysql uid=500(mysql) gid=500(mysql) groups=500(mysql) 根据上述结果输出,可以看到mysql用户和组已经成功创建. (2)获取MySQL软件包 MySQL软件包的下载地址为:http://dev.mysql.com/downloads/mysql/(如果地址变更无法下载,可以去http://mirrors.sohu.com/mysql下载).可以把软件下载到客户端电脑本地后,使用rz等工具传到Linux里,或者找到网络下载地址后,直接在Linux里使用wget下载. 提示:本例以MySQL编译的方式来讲解,使用二进制方式安装的完整过程在本文结尾会提供给大家.在生产场景中,二进制和源码包两种安装方法都是可以用的,其应用场景一般没什么太大差别.不同之处在于,二进制的安装包较大,名字和源码包也有些区别,二进制的安装过程比源码更快. MySQL源码包和二进制安装包的名称见表3-1. 表3-1 MySQL二进制和源码包
(3)采用编译方式安装MySQL 配置及编译安装的步骤如下: 第一步,下载mysql软件包. [root@oldboy ~]# mkdir -p /home/oldboy/tools [root@oldboy ~]# cd /home/oldboy/tools/ [root@oldboy tools]# wget -q?http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.34.tar.gz [root@oldboy tools]# ls -lh total 31M -rw-r–r–. 1 root root 31M Nov 28 07:46 mysql-5.6.34.tar.gz 第二步,解压配置mysql,命令如下: [root@oldboy tools]# tar xf mysql-5.6.34.tar.gz [root@oldboy tools]# cd mysql-5.6.34 [root@oldboy tools]# cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.6.34 -DMYSQL_DATADIR=/application/mysql-5.6.34/data -DMYSQL_UNIX_ADDR=/application/mysql-5.6.34/tmp/mysql.sock? -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 -DWITH_ZLIB=bundled -DWITH_SSL=bundled -DENABLED_LOCAL_INFILE=1 -DWITH_EMBEDDED_SERVER=1 -DENABLE_DOWNLOADS=1 -DWITH_DEBUG=0 提示: 1)编译时可配置的选项很多,常见的参数选项见本章最后一部分内容,更详细的可参考本章结尾附录讲解. 2)编译MySQL需要安装gcc等工具,此部分在安装操作系统时已经安装上了,具体参考CentOS6操作系统的安装详细步骤,见《跟老男孩学Linux运维:Web集群实战》书或免费部署文章http://book.51cto.com/art/201605/510756.htm. 第三步,编译安装MySQL,命令如下: root@oldboy mysql-5.6.34]# make? ??????#<==如果是多核cpu,可指定make -j cpu核数,加快编译速度. [root@oldboy mysql-5.6.34]# make install 第四步,为MySQL安装路径设置不带版本号的软链接/application/mysql,操作命令如下: [root@oldboy mysql-5.6.34]# ln -s /application/mysql-5.6.34/ /application/mysql [root@oldboy mysql-5.6.34]# ln -s /application/mysql-5.6.34/ /application/mysql #补充:如果系统里有曾经安装的数据库文件和启动程序最好停掉或删除,以免冲突. [root@oldboy mysql-5.6.34]# ls -l /application/ total 4 lrwxrwxrwx.? 1 root root?? 26 Feb 26 17:49?mysql -> /application/mysql-5.6.34/ drwxr-xr-x. 13 root root 4096 Feb 26 17:49 mysql-5.6.34 [root@oldboy mysql-5.6.34]# ls /application/mysql/ bin? COPYING? data? docs? include? lib? man? mysql-test? README? scripts? share? sql-bench? support-files 如果上述操作未出现错误(每个步骤结束后,都可以使用echo $?看返回值是否为0,为0则表示正确),查看/application/mysql/目录,若其下有内容,则表示MySQL5.6.34源代码包采用cmake方式安装成功了. 3.2.2创建MySQL数据库配置文件并对数据库目录授权 MySQL5.5数据库默认为用户提供了多个配置文件模板,但是MySQL5.6的support-files目录下已经没有配置文件模板了. [root@oldboy mysql-5.6.34]# ll support-files/*.cnf -rw-r–r–. 1 root root 1126 Feb 26 17:54 support-files/my-default.cnf [root@oldboy mysql-5.6.34]# mv /etc/my.cnf /etc/my.cnf.bak #提示:在CentOS 6.8版操作系统最小化安装完成后,在/etc目录下会存在一个my.cnf,需要将此文件更名为其他的名字,如:/etc/my.cnf.bak,否则,该文件会干扰源码安装的MySQL的正确配置,造成无法启动. #在启动MySQL服务时,会按照一定的顺序搜索my.cnf,先在/etc目录下找,找不到则会搜索”$basedir/my.cnf”,在本例中就是/application/mysql-5.6.34/my.cnf,这是新版MySQL的配置文件的默认位置! [root@oldboy mysql-5.6.34]# cp support-files/my-default.cnf /application/mysql-5.6.34/my.cnf 提示:此行操作可以省略,在下文初始化mysql时会自动生成my.cnf模板文件,如果已经执行上述命令,则初始化后会生成my-new.cnf文件,my.cnf和my-new.cnf除了注释以外是一致的. [root@oldboy mysql-5.6.34]# chown -R mysql.mysql /application/mysql/ #<==授权mysql用户管理mysql的安装目录. 关于更多mysql my.cnf参数的说明及调优,请参看本书后面章节. 未完,请见《MySQL数据库多种安装方法及企业级安装实践(下篇)》 文章来自微信公众号:老男孩教育 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |