博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AliOS编译安装MyRocks
阅读量:5244 次
发布时间:2019-06-14

本文共 2553 字,大约阅读时间需要 8 分钟。

MyRocks是facabook版将自主研发的MySQL分支,其源码位于为:https://github.com/facebook/mysql-5.6/

首先需要安装以下:

1 sudo yum install cmake gcc-c++ bzip2-devel libaio-devel bison \2 zlib-devel snappy-devel3 sudo yum install gflags-devel readline-devel ncurses-devel \4 openssl-devel lz4-devel gdb git

这几个包缺一不可,有好几个依赖的包都是不能直接yum安装的,所以要下源码编译安装。

其中 snappy-devel 需要加 -b current 安装,默认的repo里没有。而 gflags-devel 和 lz4-devel 通过yum找不到,只能下载源码编译安装。

gflags:

lz4:

然后利用git从myrocks的github主页将项目clone下来:

1 git clone https://github.com/facebook/mysql-5.6.git2 cd mysql-5.63 git submodule init4 git submodule update

注意,这里必须要用这种方式下载项目源码,直接从github主页上下载解压的源码会编译失败。

调用 git submodule update 是用来更新 submodule 信息的。一般大的项目,通用的部分希望抽取出来做成一个公共库(子模块)来提供给别的工程来使用,MyRocks中也存在这样的子模块,当其他人将某一子模块修改更新后,用到这个模块的项目只要调用git submodule update即可获取最新的子模块。这样显然便于公共库的版本维护。

然后利用cmake:

1 cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo -DWITH_SSL=system -DWITH_ZLIB=bundled -DMYSQL_MAINTAINER_MODE=0 -DENABLED_LOCAL_INFILE=1

这里插播一下下,如果在已经安装了cmake的情况下,要升级成更高版本的,需要删除了原来的后再编译安装,否则可能报CMake Error: Could not find CMAKE_ROOT !!!

接下来make:

1 make -j8 2 make install 指定文件夹

由于MyRocks要利用C++ 11 的一些特性,gcc/g++ 应该升级到4.7或以上版本(redhat默认是4.4.6)。

但是问题是,我升级到4.9.3,并使用如下命令更新后

1 #更新gcc默认2 /usr/sbin/update-alternatives --install  /usr/bin/gcc gcc /usr/local/bin/x86_64-unknown-linux-gnu-gcc-4.9.3 403 4 #更新g++默认5 /usr/sbin/update-alternatives --install /usr/bin/g++ g++ /usr/local/bin/g++ 40

仍然会报 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)

主要原因是内存不足,毕竟申请的虚拟机内存比较小,于是临时使用交换分区来解决:

1 sudo dd if=/dev/zero of=/swapfile bs=64M count=162 sudo mkswap /swapfile3 sudo swapon /swapfile

编译完成后,释放掉交换区:

1 sudo swapoff /swapfile2 sudo rm /swapfile

最后还出了一个liblz4.so.1: cannot open shared object file错误,原来是我的lz4库默认安装在了/usr/local/bin下,将其链接到/usr/lib或者/lib这两个默认的目录下边。

1 sudo ln -s /usr/local/lib/liblz4.so.1 /usr/lib2 sudo ldconfig

 以上问题都解决了后,编译就成功了。

编译后应该进行安装:

1 /u01/my9906/scripts/mysql_install_db --defaults-file=/u01/my9906/my.cnf --datadir=/u01/my9906/data --basedir=/u01/my9906
启动:
1 sudo /u01/my9906/bin/mysqld --defaults-file=/u01/my9906/my.cnf &
 
为了能让RocksDB正常运行,其my.cnf至少应该包含:
1 [mysqld]2 rocksdb3 default-storage-engine=rocksdb4 skip-innodb5 default-tmp-storage-engine=MyISAM6 collation-server=latin1_bin (or utf8_bin, binary)7 8 log-bin9 binlog-format=ROW

 

转载于:https://www.cnblogs.com/WonderHow/p/5621591.html

你可能感兴趣的文章
数据库
查看>>
洛谷 P1967 货车运输(克鲁斯卡尔重构树)
查看>>
D2.Reactjs 操作事件、状态改变、路由
查看>>
ble学习笔记四---------------------控制lcd
查看>>
kali自定义分辨率(1920*1080)
查看>>
HDU4054_Hexadecimal View
查看>>
网页css效果调试技巧
查看>>
Python【第三课】 函数基础
查看>>
《Linux兵书》
查看>>
10 条“有争议”的编程观点
查看>>
Python全栈开发-Day11-RabbitMQ/Redis
查看>>
C# 实现可克隆(ICloneable)的类型
查看>>
AJAX 跨域请求 - JSONP获取JSON数据
查看>>
团队题目需求分析-NABCD
查看>>
求墙之间有多少水洼
查看>>
数据挖掘学习心得---聚类算法
查看>>
AutoIt 无法获取.net CheckBox 控件的状态
查看>>
自媒体工具
查看>>
典藏百度前端面试题
查看>>
最简单的window下使用Jenkins来做自动化部署的教程
查看>>