首页 运维干货MySQL数据库多种安装方法及企业级安装实践(上篇)

MySQL数据库多种安装方法及企业级安装实践(上篇)

运维派隶属马哥教育旗下专业运维社区,是国内成立最早的IT运维技术社区,欢迎关注公众号:yunweipai
领取学习更多免费Linux云计算、Python、Docker、K8s教程关注公众号:马哥linux运维

本文来自《老男孩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
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。

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需要的依赖包和编译软件
当前的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数据库多种安装方法及企业级安装实践(下篇)》

文章来自微信公众号:老男孩教育

本文链接:https://www.yunweipai.com/14403.html

网友评论comments

发表回复

您的电子邮箱地址不会被公开。

暂无评论

Copyright © 2012-2022 YUNWEIPAI.COM - 运维派 京ICP备16064699号-6
扫二维码
扫二维码
返回顶部