《MySQL数据库多种安装方法及企业级安装实践(上篇)》要点:
本文介绍了MySQL数据库多种安装方法及企业级安装实践(上篇),希望对您有用。如果有疑问,可以联系我们。
本文来自《老男孩MySQL私房菜》第三章!
在当今的互联网企业里,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
MySQL-devel-5.6.34-1.el6.x86_64.rpm
MySQL-server-5.6.34-1.el6.x86_64.rpm
MySQL-shared-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.
常规方式编译安装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及以后的产品系列)的产品逐渐替代了,因此,老男孩也不建议读者再使用第一条产品线的产品作为对外的业务库.
考虑到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方式的安装就算成功了.
采用二进制免编译方式安装MySQL的方法和yum/rpm包安装方式类似,适合各类MySQL产品系列,不需要复杂的编译设置及编译时间等待,直接解压下载的软件包,就相当于编译方式的make install步骤完成了,然后只要进行初始化数据库的操作,即可完成并启动,此方式的MySQL软件包一般都比较大,最大可达180MB,采用二进制方式免编译安装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仓库搭建的地址,不再赘述.
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需要的依赖包和编译软件
当前的Linux系统环境情况如下:
[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需要的软件
由于MySQL5.5及以上的系列产品要采用特殊的编译方式安装,因此,需要先安装常用的编译MySQL的工具cmake软件包,命令为:
[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二进制和源码包
MySQL软件 | 软件名 |
MySQL源码安装包 | mysql-5.6.34.tar.gz(本章选择的安装包) |
MySQL二进制安装包 | mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz |
(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数据库多种安装方法及企业级安装实践(下篇)》
文章来自微信公众号:老男孩教育
转载请注明本页网址:
http://www.vephp.com/jiaocheng/4238.html