AliOS编译安装MyRocks
MyRocks是facabook版将自主研发的MySQL分支,其源码位于为:https://github.com/facebook/mysql-5.6/
首先需要安装以下:
sudo yum install cmake gcc-c++ bzip2-devel libaio-devel bison \
zlib-devel snappy-devel
sudo yum install gflags-devel readline-devel ncurses-devel \
openssl-devel lz4-devel gdb git
这几个包缺一不可,有好几个依赖的包都是不能直接yum安装的,所以要下源码编译安装。
其中 snappy-devel 需要加 -b current 安装,默认的repo里没有。而 gflags-devel 和 lz4-devel 通过yum找不到,只能下载源码编译安装。
gflags:https://gflags.github.io/gflags
lz4:https://github.com/Cyan4973/lz4
然后利用git从myrocks的github主页将项目clone下来:
git clone https://github.com/facebook/mysql-5.6.git
cd mysql-5.6
git submodule init
git submodule update
注意,这里必须要用这种方式下载项目源码,直接从github主页上下载解压的源码会编译失败。
调用 git submodule update 是用来更新 submodule 信息的。一般大的项目,通用的部分希望抽取出来做成一个公共库(子模块)来提供给别的工程来使用,MyRocks中也存在这样的子模块,当其他人将某一子模块修改更新后,用到这个模块的项目只要调用git submodule update即可获取最新的子模块。这样显然便于公共库的版本维护。
然后利用cmake:
cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo -DWITH_SSL=system -DWITH_ZLIB=bundled -DMYSQL_MAINTAINER_MODE= -DENABLED_LOCAL_INFILE=
这里插播一下下,如果在已经安装了cmake的情况下,要升级成更高版本的,需要删除了原来的后再编译安装,否则可能报CMake Error: Could not find CMAKE_ROOT !!!
接下来make:
make -j8
2 make install 指定文件夹
由于MyRocks要利用C++ 11 的一些特性,gcc/g++ 应该升级到4.7或以上版本(redhat默认是4.4.6)。
但是问题是,我升级到4.9.3,并使用如下命令更新后
#更新gcc默认
/usr/sbin/update-alternatives --install /usr/bin/gcc gcc /usr/local/bin/x86_64-unknown-linux-gnu-gcc-4.9. #更新g++默认
/usr/sbin/update-alternatives --install /usr/bin/g++ g++ /usr/local/bin/g++
仍然会报 cc1plus: error: unrecognized command line option "-std=c++11"
百思不得其解,请教了一下江神,江神建议我安装devtoolset ,然后设置CC和CXX参数,并export这两个参数。受到江神的启发,我先尝试着将CXX和CC的参数设置成我安装的g++/gcc路径看看怎么样,结果竟然通过了。
看来尽管我将gcc/g++升级到了4.9.3版本,cmake仍然默认使用未删除老版本,这一点要记住。
解决了这个问题后,后来又出现了如下的错误:
g++: internal compiler error: Killed (program cc1plus)
主要原因是内存不足,毕竟申请的虚拟机内存比较小,于是临时使用交换分区来解决:
sudo dd if=/dev/zero of=/swapfile bs=64M count=
sudo mkswap /swapfile
sudo swapon /swapfile
编译完成后,释放掉交换区:
sudo swapoff /swapfile
sudo rm /swapfile
最后还出了一个liblz4.so.1: cannot open shared object file错误,原来是我的lz4库默认安装在了/usr/local/bin下,将其链接到/usr/lib或者/lib这两个默认的目录下边。
sudo ln -s /usr/local/lib/liblz4.so. /usr/lib
sudo ldconfig
以上问题都解决了后,编译就成功了。
编译后应该进行安装:
/u01/my9906/scripts/mysql_install_db --defaults-file=/u01/my9906/my.cnf --datadir=/u01/my9906/data --basedir=/u01/my9906
sudo /u01/my9906/bin/mysqld --defaults-file=/u01/my9906/my.cnf &
[mysqld]
rocksdb
default-storage-engine=rocksdb
skip-innodb
default-tmp-storage-engine=MyISAM
collation-server=latin1_bin (or utf8_bin, binary) log-bin
binlog-format=ROW
AliOS编译安装MyRocks的更多相关文章
- Centos6.5下编译安装mysql 5.6
一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server rpm -qa | grep mysql 有的话通过下面的命令来卸载掉 rpm -e mysql //普通删除模式 rpm -e ...
- CENTOS 6.5 平台离线编译安装 PHP5.6.6
一.下载php源码包 http://cn2.php.net/get/php-5.6.6.tar.gz/from/this/mirror 二.编译 编译之前可能会缺少一些必要的依赖包,加载一个本地yum ...
- Linux下编译安装Vim8.0
什么是Vim? Vim 是经典的 UNIX 编辑器 Vi 的深度改良版本.它增加了许多功能,包括:多级撤销.格式高亮.命令行历史.在线帮助.拼写检查.文件名补完.块操作.脚本支持,等等.除了字符界面版 ...
- OpenSUSE下编译安装OpenFoam
在不是Ubuntu系统下安装OpenFoam,需要采用编译安装的方式.以下以OpenSuSE为例进行编译安装. 1 软件包准备 需要下载两个程序包: OpenFOAM-4.x-version-4.1. ...
- 不要着急改代码,先想想--centos 6.8下编译安装tmux
诸位读者新年好,2017开年第一篇博客,请允许我先问候一下看到这篇博客的诸位.写博客是我2017年定下的目标之一,希望我会坚持下去. 最近打算尝试一下tmux这个神器,于是有了这一篇关于思维方式的Bl ...
- protobuf的编译安装
github地址:https://github.com/google/protobuf支持多种语言,有多个语言的版本,本文采用的是在centos7下编译源码进行安装. github上有详细的安装说明: ...
- 编译安装mysql
参考:http://www.centoscn.com/CentosServer/www/2015/0422/5245.html 安装mysql5.6.17 1.按照标准需要给mysql创建所属用户和用 ...
- 编译安装zabbix3.2
1.1 环境准备 系统环境准备:redhat 6.6 64位mysql-5.6.34php-5.6.28zabbix-3.2.1配置前先关闭iptables和SELINUX,避免安装过程中报错. # ...
- centos系统编译安装nginx+php环境另加独立mysql教程
以前看过的安装nginx+php环境都带了mysql数据库了,这个是因为很多站长都是nginx+php+mysql都在同一台服务器了,那么今天我们是单独处理了,一个是nginx+php环境,然后mys ...
随机推荐
- 动态加载框架DL分析
动态加载框架DL分析 插件化开发,主要解决三个问题1.动态加载未安装的apk,dex,jar等文件2.activity生命周期的问题,还有service3.Android的资源调用的问题 简单说一下怎 ...
- Nodejs学习总结 -Express 登录注册示例(二)
项目创建后,我们来做个登录注册实例,详细操作步骤如下. 1.新建项目demo ,具体操作步骤参考上一章内容 https://www.cnblogs.com/Anlycp/ 2.添加mysql和sess ...
- LayoutInflater的使用
在实际工作中,事先写好的布局文件往往不能满足我们的需求,有时会根据情况在代码中自定义控件,这就需要用到LayoutInflater.LayoutInflater在Android中是“扩展”的意思,作用 ...
- 如何在页面进入时就加载js
页面一打开就执行JS的代码! onLoadwindow.onLoad=function(){}window.onload=function(){ } 补充:window.onload和doucumen ...
- 不刷新页面获取HTML进行显示
$.ajax({ url: "请求地址", dataType: "text", type: "GET" ...
- C#读写TxT文件
文/嶽永鹏 WPF 中读取和写入TxT 是经常性的操作,本篇将从详细演示WPF如何读取和写入TxT文件. 首先,TxT文件希望逐行读取,并将每行读取到的数据作为一个数组的一个元素,因此需要引入List ...
- mysql分组合并GROUP_CONCAT
SELECT pid, GROUP_CONCAT(field ORDER BY coder desc) 'msg'from product_field GROUP BY pid 分 ...
- Redis常用命令入门4:集合类型
集合类型 之前我们已经介绍过了最基本的字符串类型.散列类型.列表类型,下面我们一起学习一下集合类型. 集合类型也是体现redis一个比较高价值的一个类型了.因为Redis的集合类型,所以我们可以很容易 ...
- JavaScript 面向对象(一) —— 基础篇
学好JS的面向对象,能很大程度上提高代码的重用率,像jQuery,easyui等,这篇博客主要从细节上一步步讲JS中如何有效地创建对象,也可以看到常见的创建对象的方式,最后也会附上一些JS面向对象的案 ...
- 如何用fir.im 命令行工具 打包上传
1.注册fir.拿到token 2.安装 fir-cli 使用 Ruby 构建, 无需编译, 只要安装相应 gem 即可. $ ruby -v # > 1.9.3 $ gem install f ...