最近做项目,之前我是用 Oracle 的,如果在 Windows 环境,无论是安装,还是配置,都很容易;Linux 环境没试过,刚毕业时的那个公司,是 Linux 环境。一般等到开发的时候,数据库早按完了,这活轮不到开发干。现在,跳槽后,公司用 MySQL~遇到两个问题:
1,对一个包含二进制字段的表,开发环境和测试环境的性能差异巨大,都是虚拟机。开发环境,Windows 平台,执行 INSERT 很快,几毫秒的事;而测试环境,Linux 平台,执行 INSERT 慢到有点说不过去了,几十毫秒,差距将近 30 倍。如果是 Oracle,前期的话,即便什么不做,也很快;
网上有些人告诉我,应该查看一下机器的负载,比如,磁盘、IO 等,我倒是想,也不是产品环境,不至于差异这么大吧,并且一直就没快过~
2,产品环境,70W 数据,执行 SELECT * FROM T1 WHERE FLAG=0 ORDER BY ID ASC,如果不为 FLAG 字段建索引,执行时间都快 1 秒啦。这要是在 Oracle 上,绝对不可能发生~
这促使我自己在 Linux 上安装 MySQL 源代码。没事时,练习、研究一下~
用源代码方式安装的好处是,编译时,可以针对自己的硬件环境。只是安装相比 RPM 要麻烦点,不过“会者不难,难者不会”,多练练就好了~
期间,最开始用的是 RPM 包,挺容易,尝试了 Percona 和社区版,最后,又用源代码安装了一遍~
本文是以 MySQL 源代码方式进行安装。参考众多资料,折腾好几天,总算安上了~如果安装时,缺少必要的包,就用 yum 安装,比如 cmake、perl 等~
创建 MySQL 用户和组这步的目的,是执行 mysql_install_db 创建 MySQL 授权表,以及启动 MySQL 时,都需要指定用户名。所以,它是第一步。
第一步:为以后的 MySQL 服务 mysqld 增加一个登录的用户和组,用户名和组名均为“mysql”。如果用了其他名称,在后面的操作中也要替换。
[root@linuxidc usr]# groupadd mysql [root@linuxidc usr]# useradd -g mysql mysql
解压 MySQL 源代码包假设你把 MySQL 源代码包放在 /usr/local/src 目录下。
第二步:解压 mysql 软件包。
[root@linuxidc /]# cd /usr/local/src [root@linuxidc src]# ls mysql-5.6.28.tar.gz [root@linuxidc src]# tar zxf mysql-5.6.28.tar.gz [root@linuxidc src]# ls mysql-5.6.28 mysql-5.6.28.tar.gz [root@linuxidc src]#
此时,会看见一个新目录 mysql-5.6.28。
其中,解压时,-x 为解压;-z 为包有gzip属性;-f 为使用档案名字。当然,也可以用 -v 显示解压过程。
生成配置安装文件以下两步任选其一,MySQL 早期版本,提供 Configure 文件以便在编译安装前进行配置;但在高版本已不提供该文件,而是采用 cmake。
假设,MySQL 安装到 /usr/local/mysql 下。
第三步:
使用“Configure”命令配置安装需要的系统环境,并生成安装配置文件
[root@linuxidc mysql-5.6.28]# ./configure \ > --prefix=/usr/local/mysql \ > --with-extra-charsets=all
如果采用 cmake 就跳过这步。
使用“cmake”配置安装需要的系统环境,并生成安装配置文件
[root@linuxidc mysql-5.6.28]# cmake \ > -DDEFAULT_CHARSET=utf8 > -DDEFAULT_COLLATION=utf8_general_ci > -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ > -DEXTRA_CHARSETS=all
指定 MySQL 的安装位置为“/usr/local/mysql”,以及采用的默认字符集等。
我在试验时,如果不配置字符集的相关选项,在执行后面 mysql_install_db 那步时会报各种字符集错误。
cmake 具体参数,参看 MySQL Source-Configuration Options
编译和安装编译和安装很简单。
第四步:使用“make”命令编译源代码文件,并生成安装文件,再用“make install”命令安装。
[root@linuxidc mysql-5.6.28]# make && make install
或是编译与安装分开执行:
[root@linuxidc mysql-5.6.28]# make
[root@linuxidc mysql-5.6.28]# make install
自此,MySQL 就会安装到 /usr/local/mysql 下。
MySQL 配置文件第五步:创建 MySQL 数据库服务器的配置文件,可以使用源代码包 support-files 目录中的 my-default.cnf 文件作为模板,将其复制到 /etc/ 目录下,重命名为“my.cnf”文件。
[root@linuxidc /]# cd /usr/local/src/mysql-5.6.28
[root@linuxidc mysql-5.6.28]# cp support-files/my-default.cnf /etc/my.cnf
并用 vi /etc/my.cnf 修改该配置文件,内容如下。
[mysqld] basedir = /usr/local/mysql datadir = /usr/local/mysql/data sock = /tmp/mysql.sock
模板文件不只是源代码中有,安装目录中也有。
创建 MySQL 授权表