DevOps

编译安装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

执行安全脚本即可

上一篇 下一篇

猜你喜欢

热点阅读