源码编译安装mariadb-5.5.48
mariadb简介
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB。 MariaDB由MySQL的创始人Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自Michael Widenius的女儿Maria的名字。
MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎,它使用了Percona的 XtraDB,InnoDB的变体,分支的开发者希望提供访问即将到来的MySQL 5.4 InnoDB性能。这个版本还包括了 PrimeBase XT (PBXT) 和 FederatedX存储引擎。
mysql自从5.5之后,编译安装项目代码管理不在使用make,而是用的是cmake。cmake的重要特性之一是其独立于源码(out-of-source)的编译功能,即编译工作可以在另一个指定的目录中而非源码目录中进行,这可以保证源码目录不受任何一次编译的影响,因此在同一个源码树上可以进行多次不同的编译,如针对于不同平台编译,并且编译安装需要准备开发环境,cmake默认也是不安装。
编译安装maridb-5.5.48
准备工作
1、操作系统环境为centos-6.7
2、官网下载https://downloads.mariadb.org/mariadb/5.5.48/maridb-5.5.48.tar.gz
#wget https://downloads.mariadb.org/mariadb/5.5.48/maridb-5.5.48.tar.gz
3、准备epel源
#rpm -Uvh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm #rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm #yum makecache #重建缓存
4、epel源yum安装开发环境组
#yum groupinstall "Development Tools" "Server Platform Development" "Server Platform" -y
5、epel源yum安装cmake(也可使用下载源码包编译安装,这里不做讲解)
# yum install cmake -y
一、cmake编译安装maridb-5.5.48
1、cmake常用编译配置
指定安装文件的安装路径时常用的选项:
-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
2、添加mysql用户及mysql组,创建数据目录/mydata/data并赋予mysql用户
# mkdir -pv /mydata/data # groupadd -r mysql # useradd -g mysql -r mysql # chown -R mysql:mysql /mydata/data
3、解压编译安装
# tar xf mariadb-5.5.48.tar.gz -C /usr/local/ # cd /usr/local/mariadb-5.5.48 # cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb-5.5.48 -DMYSQL_DATADIR=/mydata/data -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_LIBWRAP=0 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci # make # make install
4、创建链接至mysql,修改mysql目录下所有文件属组用户
#ln -sv /usr/local/mariadb-5.5.48 /usr/local/mysql # cd mysql/ # chown root.mysql ./*
5、初始化数据库
# ./scripts/mysql_install_db --user=mysql --datadir=/mydata/data
6、拷贝并修改服务配置文件
# cp support-files/my-large.cnf /etc/my.cnf # vim /etc/my.cnf [mysqld] #在此组字段下添加 datadir = /mydata/data thread_concurrency = 2 #设置核心数,根据实际情况设置 innodb_file_per_table = on #启用独立表空间模式,每个表生成一个表空间 skip_name_resolve = on #禁用域名反解析
7、创建服务文件并测试启动服务
# cp support-files/mysql.server /etc/rc.d/init.d/mysqld # chmod +x /etc/rc.d/init.d/mysqld # service mysqld start
8、将mysql命令添加到PATH变量中并连接测试
# vim /etc/profile.d/mysql.sh export PATH=/usr/local/mysql/bin:$PATH # chmod +x mysql.sh 添加执行权限 # . /etc/profile.d/mysql.sh 执行生效