实验环境
系统:centos7.4
安装包:mariadb-10.2.15.tar.gz源码包
一、先准备Mariadb10.2.15二进制安装包,我们可以到https://downloads.mariadb.org/mariadb/10.2.15/下载,这里我们选择mariadb-10.2.15.tar.gz这个包
官方会提示,请不要在生产环境使用beta和alpha版本的数据库。
他们的主要功能一般是用来测试和排错,所以不稳定。
这里我们选择安装一个10.2系列的Stable的数据库。
二、安装相关包,把编译环境配置好
[root@centos7 ~]# yum install libaio-devel \
bison \
bison-devel \
zlib-devel \
openssl-devel \
ncurses-devel \
libcurl-devel \
libarchive-devel \
boost-devel \
gcc \
gcc-c++ \
cmake \
libevent-devel
三、准备用户和数据目录
[root@centos7 ~]# useradd -r -s /bin/nologin -m -d /data/mysqldb/ mysql
[root@centos7 ~]# getent passwd mysql
mysql:x:991:986::/data/mysqldb:/bin/nologin
[root@centos7 ~]# ll /data/
总用量 0
drwx------ 3 mysql mysql 78 7月 6 00:55 mysqldb
[root@centos7 ~]# mkdir -pv /app/mysql //创建数据库的安装目录
mkdir: 已创建目录 "/app"
mkdir: 已创建目录 "/app/mysql"
四、解压缩、编译源码包
[root@centos7 ~]# tar xvf mariadb-10.2.15.tar.gz
编译mariadb我们使用的是cmake 编译安装方式。编译选项可以查看:https://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html
[root@centos7 ~]# cd mariadb-10.2.15
[root@centos7 mariadb-10.2.15]# ls
appveyor.yml cmake COPYING debian include libmariadb mysql-test plugin sql strings VERSION zlib
BUILD CMakeLists.txt COPYING.thirdparty Docs INSTALL-SOURCE libmysqld mysys randgen sql-bench support-files vio
BUILD-CMAKE config.h.cmake CREDITS EXCEPTIONS-CLIENT INSTALL-WIN-SOURCE libservices mysys_ssl README.md sql-common tests win
client configure.cmake dbug extra KNOWN_BUGS.txt man pcre scripts storage unittest wsrep
[root@centos7 mariadb-10.2.15]# cmake . \
-DCMAKE_INSTALL_PREFIX=/app/mysql \
-DMYSQL_DATADIR=/data/mysqldb/ \
-DSYSCONFDIR=/etc \
-DMYSQL_USER=mysql \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITHOUT_MROONGA_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
编译时出现的错误信息,说明编译mariadb时,tokuDB引擎需要支持c++11的编译器,如果确实想用tokuDB引擎,那就编译一个高版本的gcc。如果不需要tokuDB引擎,直接在编译参数中加上-DPLUGIN_TOKUDB=NO就行了
这里说明一下:-DCMAKE_INSTALL_PREFIX是指定安装的位置,这里是/app/mysql,-DMYSQL_DATADIR是指定MySQL的数据目录,这里是/data1/mysql,安装目录和数据目录都可以自定义设置,-DSYSCONFDIR是指定配置文件所在的目录,一般都是/etc ,具体的配置文件是/etc/my.cnf,-DWITHOUT_TOKUDB=1(no)这个参数一般都要设置上,表示不安装tokudb引擎,tokudb是MySQL中一款开源的存储引擎,可以管理大量数据并且有一些新的特性,这些是Innodb所不具备的,这里之所以不安装,是因为一般计算机默认是没有Percona Server的,并且加载tokudb还要依赖jemalloc内存优化,一般开发中也是不用tokudb的,所以暂时屏蔽掉,否则在系统中找不到依赖会出现:CMake Error at storage/tokudb/PerconaFT/cmake_modules/TokuSetupCompiler.cmake:179 (message)这样的错误,然后后面那些参数都是可选的,可以加也可以不加。
注意:如果万一执行中有了错误,可以执行: rm -f CMakeCache.txt 删除编译缓存,让指令重新执行,否则每次读取这个文件,命令修改正确也是报错。
由于刚才编译出错,这里我们先执行 rm -f CMakeCache.txt 删除编译缓存,然后再重新编译。
[root@centos7 mariadb-10.2.15]# cmake . \
-DCMAKE_INSTALL_PREFIX=/app/mysql \
-DMYSQL_DATADIR=/data/mysqldb/ \
-DSYSCONFDIR=/etc \
-DMYSQL_USER=mysql \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITHOUT_MROONGA_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
-DPLUGIN_TOKUDB=NO
编译完成后/mariadb-10.2.15目录下会多出一些文件
[root@centos7 mariadb-10.2.15]# ls
appveyor.yml CMakeFiles COPYING.thirdparty debian info_macros.cmake libmysqld mysys scripts support-files win
BUILD cmake_install.cmake CPackConfig.cmake Docs install_manifest.txt libservices mysys_ssl sql tests wsrep
BUILD-CMAKE CMakeLists.txt CPackSourceConfig.cmake EXCEPTIONS-CLIENT INSTALL-SOURCE make_dist.cmake pcre sql-bench unittest zlib
client config.h.cmake CREDITS extra INSTALL-WIN-SOURCE Makefile plugin sql-common VERSION
cmake configure.cmake CTestTestfile.cmake import_executables.cmake KNOWN_BUGS.txt man randgen storage VERSION.dep
CMakeCache.txt COPYING dbug include libmariadb mysql-test README.md strings vio
五、安装数据库
cmake没问题,可以安装了 make && make install 时间有点长,耐心等待。
[root@centos7 mariadb-10.2.15]# make && make install
执行完成也就是安装完成了,我们来查看/app/mysql目录下的文件安装情况,发现这个文件的所有者和属主为root所拥有。因此需要对这个目录设置acl权限,使mysql用户对该目录用rwx权限,否则无法启动服务。
[root@centos7 mysql]# ll /app/mysql
总用量 176
d-wx--x--x 2 root root 4096 7月 11 19:57 bin
--w------- 1 root root 17987 5月 17 2018 COPYING
--w------- 1 root root 86263 5月 17 2018 COPYING.thirdparty
--w------- 1 root root 2268 5月 17 2018 CREDITS
d-wx--x--x 3 root root 18 7月 11 19:56 data
--w------- 1 root root 8245 5月 17 2018 EXCEPTIONS-CLIENT
d-wx--x--x 3 root root 19 7月 11 19:56 include
--w------- 1 root root 8694 5月 17 2018 INSTALL-BINARY
d-wx--x--x 3 root root 218 7月 11 19:56 lib
d-wx--x--x 4 root root 30 7月 11 19:57 man
d-wx-wx--x 11 root root 4096 7月 11 19:57 mysql-test
--w------- 1 root root 2374 5月 17 2018 README.md
--w------- 1 root root 19510 5月 17 2018 README-wsrep
d-wx--x--x 2 root root 30 7月 11 19:57 scripts
d-wx--x--x 29 root root 4096 7月 11 19:57 share
d-wx--x--x 4 root root 4096 7月 11 19:57 sql-bench
d-wx--x--x 3 root root 275 7月 11 19:57 support-files
[root@centos7 mysql]# setfacl -R -m u:mysql:rwx /app/mysql //对这个目录设置acl权限,使mysql用户对该目录用rwx权限
六、生成数据库文件,一定要进入/app/mysql这个目录下,然后在这个目录下执行scripts子目录下的mysql_install_db这个脚本文件。
[root@centos7 mariadb-10.2.15]# cd /app/mysql
[root@centos7 mysql]# ls
bin COPYING.thirdparty data include lib mysql-test README-wsrep share support-files
COPYING CREDITS EXCEPTIONS-CLIENT INSTALL-BINARY man README.md scripts sql-bench
[root@centos7 mysql]# ./scripts/mysql_install_db --datadir=/data/mysqldb/ --user=mysql --basedir=/app/mysql
Installing MariaDB/MySQL system tables in '/data/mysqldb/' ...
OK
To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system
PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER !
To do so, start the server, then issue the following commands:
'/app/mysql/bin/mysqladmin' -u root password 'new-password'
'/app/mysql/bin/mysqladmin' -u root -h centos7.cwj.com password 'new-password'
Alternatively you can run:
'/app/mysql/bin/mysql_secure_installation'
which will also give you the option of removing the test
databases and anonymous user created by default. This is
strongly recommended for production servers.
See the MariaDB Knowledgebase at http://mariadb.com/kb or the
MySQL manual for more instructions.
You can start the MariaDB daemon with:
cd '/app/mysql' ; /app/mysql/bin/mysqld_safe --datadir='/data/mysqldb/'
You can test the MariaDB daemon with mysql-test-run.pl
cd '/app/mysql/mysql-test' ; perl mysql-test-run.pl
Please report any problems at http://mariadb.org/jira
The latest information about MariaDB is available at http://mariadb.org/.
You can find additional information about the MySQL part at:
http://dev.mysql.com
Consider joining MariaDB's strong and vibrant community:
https://mariadb.org/get-involved/
七、准备配置文件
[root@centos7 mysql]# cp /app/mysql/support-files/my-huge.cnf /etc/my.cnf
cp:是否覆盖"/etc/my.cnf"? y
八、准备环境变量
[root@centos7 mysql]# echo 'PATH=/app/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
[root@centos7 mysql]# . /etc/profile.d/mysql.sh //重载脚本文件
九、准备启动脚本并启动
[root@centos7 mysql]# cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@centos7 mysql]# service mysqld start
Reloading systemd: [ 确定 ]
Starting mysqld (via systemctl): [ 确定 ]