编译安装MySQL
2018-04-27 本文已影响8人
4e8ea348373f
一,安装前准备
1.cmake 可以编译也可以yum,在base源提供
2.yum install cmake -y
3.yum groupinstall "Development Tools" "Server Platform Development" -y
4.准备MariaDB源码包,可以去官网下载
二,Cmake的用法
cmake指定编译选项的方式不同于make,其实现方式对比如下:
./configure cmake .
./configure --help cmake . -LH or ccmake .
指定安装文件的安装路径时常用的选项:
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql
-DMYSQL_DATADIR=/data/mysql
-DSYSCONFDIR=/etc
默认编译的存储引擎包括:csv、myisam、myisammrg和heap。若要安装其它存储引擎,可以使用类似如下编译选项:
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_FEDERATED_STORAGE_ENGINE=1
若要明确指定不编译某存储引擎,可以使用类似如下的选项:
-DWITHOUT_<ENGINE>_STORAGE_ENGINE=1
比如:
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1
-DWITHOUT_PARTITION_STORAGE_ENGINE=1
如若要编译进其它功能,如SSL等,则可使用类似如下选项来实现编译时使用某库或不使用某库:
-DWITH_READLINE=1
-DWITH_SSL=system
-DWITH_ZLIB=system
-DWITH_LIBWRAP=0
其它常用的选项:
-DMYSQL_TCP_PORT=3306
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock
-DENABLED_LOCAL_INFILE=1
-DEXTRA_CHARSETS=all
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
-DWITH_DEBUG=0
-DENABLE_PROFILING=1
如果想清理此前的编译所生成的文件,则需要使用如下命令:
make clean
rm CMakeCache.txt
三,编译安装
#创建用户和组
[root@node1 ~]# groupadd -rg 306 mysql
[root@node1 ~]# useradd -rg 306 -u 306 mysql
#解压源码
[root@node1 /]# tar xf mariadb-10.2.14.tar.gz
[root@node1 /]# cd m
mariadb-10.2.14/ mariadb-10.2.14.tar.gz media/ mnt/
[root@node1 /]# cd mariadb-10.2.14
[root@node1 mariadb-10.2.14]# ll
总用量 324
-rw-rw-r-- 1 1001 1001 655 3月 27 00:41 appveyor.yml
drwxrwxr-x 2 1001 1001 4096 3月 27 00:41 BUILD
-rw-rw-r-- 1 1001 1001 8575 3月 27 00:41 BUILD-CMAKE
drwxrwxr-x 2 1001 1001 4096 3月 27 00:41 client
drwxrwxr-x 4 1001 1001 4096 3月 27 00:41 cmake
-rw-rw-r-- 1 1001 1001 15761 3月 27 00:41 CMakeLists.txt
-rw-rw-r-- 1 1001 1001 17260 3月 27 00:41 config.h.cmake
-rw-rw-r-- 1 1001 1001 31978 3月 27 00:41 configure.cmake
-rw-rw-r-- 1 1001 1001 17987 3月 27 00:41 COPYING
-rw-rw-r-- 1 1001 1001 86263 3月 27 00:41 COPYING.thirdparty
-rw-rw-r-- 1 1001 1001 2323 3月 27 00:41 CREDITS
drwxrwxr-x 2 1001 1001 290 3月 27 00:41 dbug
drwxrwxr-x 6 1001 1001 4096 3月 27 00:41 debian
drwxrwxr-x 2 1001 1001 172 3月 27 00:41 Docs
-rw-rw-r-- 1 1001 1001 8245 3月 27 00:41 EXCEPTIONS-CLIENT
drwxrwxr-x 6 1001 1001 317 3月 27 00:41 extra
drwxrwxr-x 4 1001 1001 4096 3月 27 00:41 include
-rw-rw-r-- 1 1001 1001 108 3月 27 00:41 INSTALL-SOURCE
-rw-rw-r-- 1 1001 1001 130 3月 27 00:41 INSTALL-WIN-SOURCE
-rw-rw-r-- 1 1001 1001 1562 3月 27 00:41 KNOWN_BUGS.txt
drwxrwxr-x 14 1001 1001 324 3月 27 00:41 libmariadb
drwxrwxr-x 3 1001 1001 247 3月 27 00:41 libmysqld
drwxrwxr-x 2 1001 1001 4096 3月 27 00:41 libservices
drwxrwxr-x 2 1001 1001 4096 3月 27 00:41 man
drwxrwxr-x 10 1001 1001 4096 3月 27 00:41 mysql-test
drwxrwxr-x 2 1001 1001 4096 3月 27 00:41 mysys
drwxrwxr-x 2 1001 1001 212 3月 27 00:41 mysys_ssl
drwxrwxr-x 5 1001 1001 4096 3月 27 00:41 pcre
drwxrwxr-x 32 1001 1001 4096 3月 27 00:41 plugin
drwxrwxr-x 3 1001 1001 18 3月 27 00:41 randgen
-rw-rw-r-- 1 1001 1001 2374 3月 27 00:41 README.md
drwxrwxr-x 2 1001 1001 4096 3月 27 00:41 scripts
drwxrwxr-x 3 1001 1001 12288 3月 27 00:41 sql
drwxrwxr-x 5 1001 1001 4096 3月 27 00:41 sql-bench
drwxrwxr-x 2 1001 1001 151 3月 27 00:41 sql-common
drwxrwxr-x 25 1001 1001 4096 3月 27 00:41 storage
drwxrwxr-x 2 1001 1001 4096 3月 27 00:41 strings
drwxrwxr-x 6 1001 1001 4096 3月 27 00:41 support-files
drwxrwxr-x 2 1001 1001 4096 3月 27 00:41 tests
drwxrwxr-x 9 1001 1001 141 3月 27 00:41 unittest
-rw-rw-r-- 1 1001 1001 68 3月 27 00:41 VERSION
drwxrwxr-x 3 1001 1001 298 3月 27 00:41 vio
drwxrwxr-x 4 1001 1001 71 3月 27 00:41 win
drwxrwxr-x 2 1001 1001 130 3月 27 00:41 wsrep
drwxrwxr-x 2 1001 1001 4096 3月 27 00:41 zlib
#构建 如果出错可以rm -f CMakeCache.txt
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data1/mysql -DSYSCONFDIR=/etc -DWITHOUT_TOKUDB=1 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci.
#make && make install
PS:-DCMAKE_INSTALL_PREFIX是指定安装的位置,这里是/usr/local/mysql,-DMYSQL_DATADIR是指定MySQL的数据目录,这里是/data1/mysql,安装目录和数据目录都可以自定义设置,-DSYSCONFDIR是指定配置文件所在的目录,一般都是/etc ,具体的配置文件是/etc/my.cnf,-DWITHOUT_TOKUDB=1这个参数一般都要设置上,表示不安装tokudb引擎,tokudb是MySQL中一款开源的存储引擎,可以管理大量数据并且有一些新的特性,这些是Innodb所不具备的,这里之所以不安装,是因为一般计算机默认是没有Percona Server的,并且加载tokudb还要依赖jemalloc内存优化,一般开发中也是不用tokudb的,所以暂时屏蔽掉,否则在系统中找不到依赖会出现:CMake Error at storage/tokudb/PerconaFT/cmake_modules/TokuSetupCompiler.cmake:179 (message)这样的错误,然后后面那些参数都是可选的,可以加也可以不加,最后的编码建议设置一下,所以编译指令也可以简化成下面这样:
#准备数据文件夹
[root@node1 ~]# mkdir -pv /data1/mysql
mkdir: 已创建目录 "/data1"
mkdir: 已创建目录 "/data1/mysql"
[root@node1 ~]# chown mysql.mysql /data1/mysql
#修改属组合属主
[root@node1 mysql]# chown -R root.mysql ./*
#创建连接,因我这里已经有一个mysql了,所以就换成mariadb
[root@node1 local]# ln -sv mysql mariadb
"mariadb" -> "mysql"
初始化
[root@node1 mariadb]# scripts/mysql_install_db --user=mysql --datadir=/data1/mysql/
[root@node1 mariadb]# cp support-files/my-large.cnf /etc/mariadb.cnf
#编辑此文件,添加如下项
datadir = /data1/mysql
innodb_file_per_table = ON
skip_name_resolve = ON
准备启动脚本
[root@node1 mariadb]# cp support-files/mysql.server /etc/rc.d/init.d/mariadb
[root@node1 mariadb]# chmod +x /etc/rc.d/init.d/mariadb
执行安全脚本即可