1、系统环境:CentOS 6.5_x86
2、mysql-5.5.38-linux2.6-i686.tar.gz
MySQL 二进制分发版的文件名格式为 mysql-VERSION-OS.tar.gz,其中 VERSION 是版本号(例如,5.1.51),OS表示分发版安装的操作系统类型(例如,linux-i686)。
为什么要使用通用二进制包?
由于经常要安装MySQL做测试用,一般都是采用源码方式安装的,但是由于源码安装需要编译很长时间,虽然源码编译性能较好,但是我们完全可以通过配置文件来调整。并且源码方式严重依赖操作系统环境。
而且通用二进制包可以很容易的移植,而且官方也做了相应的优化选项。所以我推荐使用通用二进制包安装MySQL。
如果使用二进制安装升级怎么进行?
升级获取的还是二进制压缩包。在安装的时候,我们就创建一个链接,那么,升级时直接将指向目录切换到新的MySQL目录即可。
安装过程?
1、创建mysql用户和组
[[email protected] ~]# groupadd -r mysql [[email protected] ~]# useradd -r -g mysql -s /sbin/nologin mysql
2、创建mysql的数据存放目录(建议独立分区,且为逻辑卷)
这里,我直接偷懒了,在/mydata/data作为数据目录:
[[email protected] ~]# mkdir -pv /mydata/data 由于此目录mysql用户需要进行读写,所以我们把属主、属组改为mysql [[email protected] ~]# chown -R mysql:mysql /mydata/data
3、解压
通常,按照惯例,我们习惯于解压到/usr/local/src目录
[[email protected] ~]# tar xf mysql-5.5.38-linux2.6-i686.tar.gz -C /usr/local/src # 为了方便升级,我们创建一个软链接, 下次升级的时候, 重新创建此链接即可 [[email protected] ~]# cd /usr/local [[email protected] local]# ln -sv src/mysql-5.5.38-linux2.6-i686 mysql `mysql‘ -> `src/mysql-5.5.38-linux2.6-i686‘
其实这一步就是为了提供一种快捷操作的方式。其实不建立软连接也是可以用的,为什么要这样做?
升级管理有用:新版本单独建立一个目录存放的。假如你升级mysql了。只要将这个软连接指向的目录修改即可。
4、初始化数据库
[[email protected] local]# cd /usr/local/mysql [[email protected] mysql]# scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/mydata/data --user=mysql # --basedir 指定mysql基目录 # --datadir 指定数据目录 # --user 指定用户
这一个步骤非常关键。如果不成功,请检查上面是否有错误或漏掉的操作。
为了安全性,我们把Mysql程序的目录属主、属组改为root:root
[[email protected] mysql]# chown -R root:root /usr/local/src/mysql-5.5.38-linux2.6-i686/
5、拷贝Mysql服务启动脚本以及配置文件
# 拷贝服务启动脚本 [[email protected] mysql]# cp support-files/mysql.server /etc/init.d/mysqld # 加入sysV [[email protected] mysql]# chkconfig --add mysqld # 开机启动 [[email protected] mysql]# chkconfig mysqld on # 拷贝配置文件 [[email protected] mysql]# cp support-files/my-medium.cnf /etc/my.cnf
6、启动服务
[[email protected] etc]# service mysqld start Starting MySQL...... SUCCESS! [[email protected] etc]# netstat -tulpn | grep 3306 tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 3834/mysqld # OK, 我们看到mysqld监听在 3306 端口上
7、把mysql的bin目录加入到PATH
[[email protected] ~]# vim /etc/profile.d/mysql.sh # 增加下面的一行 export PATH=$PATH:/usr/local/mysql/bin [[email protected] ~]# . /etc/profile.d/mysql.sh # 做一些简单安全设置,根据提示,选择[Y/n] [[email protected] mysql]# /usr/local/mysql/bin/mysql_secure_installation
8、进行一些配置
修改MANPATH让man命令可以找到mysql帮助文档
# vim /etc/man.config #添加以下内容 MANPATH /usr/local/mysql/man
添加头文件
# ln -sv /usr/local/mysql/include /usr/include/mysql `/usr/include/mysql‘ -> `/usr/local/mysql/include’
添加库文件
#vim /etc/ld.so.conf.d/mysql.conf #添加以下内容 /usr/local/mysql/lib
重新生效
# ldconfig -v | grep mysql
9、使用TCMalloc为mysql加速
今天才发现在MySQL提供的二进制包里,已经包含了libtcmalloc.so,以前都不知道 (-__-)b
[[email protected] lib]# pwd /usr/local/mysql/lib [[email protected] lib]# ls | grep libtcmal libtcmalloc_minimal.so # 编辑mysqld_safe文件 [[email protected] bin]# vi /usr/local/mysql/bin/mysqld_safe # 添加下面这一行 export LD_PRELOAD="/usr/local/mysql/lib/libtcmalloc_minimal.so" # 重启mysql服务 [[email protected] ~]# service mysqld restart Shutting down MySQL.. SUCCESS! Starting MySQL... SUCCESS! [[email protected] bin]# lsof -n | grep -i tcma mysqld 4793 mysql mem REG 8,2 888700 14655 /usr/local/src/mysql-5.5.38-linux2.6-i686/lib/libtcmalloc_minimal.so
知识充电:
ldconfig命令的作用是:
ldconfig creates the necessary links and cache to the most recent shared libraries found in the directories specified on the command line, in the file /etc/ld.so.conf, and in the trusted directories (/lib and /usr/lib). The cache is used by the run-time linker, ld.so or ld-linux.so. ldconfig checks the header and filenames of the libraries it encounters when determining which versions should have their links updated.
ldconfig几个需要注意的地方!
1. 往/lib和/usr/lib里面加东西,是不用修改/etc/ld.so.conf的,但是完了之后要调一下ldconfig,不然这个library会找不到
2. 想往上面两个目录以外加东西的时候,一定要修改/etc/ld.so.conf,然后再调用ldconfig,不然也会找不到
比如安装了一个mysql到/usr/local/mysql,mysql有一大堆library在/usr/local/mysql/lib下面,这时就 需要在/etc/ld.so.conf下面加一行/usr/local/mysql/lib,保存过后ldconfig一下,新的library才能在程 序运行时被找到。
3. 如果想在这两个目录以外放lib,但是又不想在/etc/ld.so.conf中加东西(或者是没有权限加东西)。那也可以,就是export一个全局变 量LD_LIBRARY_PATH,然后运行程序的时候就会去这个目录中找library。一般来讲这只是一种临时的解决方案,在没有权限或临时需要的时 候使用。
4. ldconfig做的这些东西都与运行程序时有关,跟编译时一点关系都没有。编译的时候还是该加-L就得加,不要混淆了。
5. 总之,就是不管做了什么关于library的变动后,最好都ldconfig一下,不然会出现一些意想不到的结果。不会花太多的时间,但是会省很多的事
MySQL-5.5.38通用二进制安装