在centos环境下编译安装myrocksdb
rocksdb(https://rocksdb.org.cn/)是脸书(facebook)公司开源的一个key-value存储引擎,基于leveldb开发。rocksdb使用的是LSM存储引擎,纯c++编写。rocksdb具有很好的读写性能。但是rocksdb的实际操作需要很好的阅读rocksdb api文档,很多实现要自己编写代码来执行,还要考虑诸如线程安全等问题。Myrocks是rocksdb和mysql结合的结果,它将mysql的innodb引擎替换为rocksdb引擎,剥离实际操作底层rocksdb的方式,通过熟悉的操作mysql的方式进行数据库的连接、数据的存储读取等操作,方便很多。
参考页面http://myrocks.io/docs/getting-started/
1. 执行前两步安装必要的包
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
2. 下载facebook的mysql-5.6源码包
初始化init和更新submodule因为很耗时间,我采用在本地(windows)下载和执行。
git clone https://github.com/facebook/mysql-5.6.git
cd mysql-5.6
git submodule init
git submodule update
执行过后将这些文件上传至centos,我设置的接收目录是/usr/local/myrocksdb。
3. 处理dos文件(*)
如果上一步都在linux中执行,则可以忽略这一步。
这一步执行的原因是git在windows上执行上一步的一系列操作之后,执行/产生的文件是dos文件格式,和centos 的unix文件格式存在不同,不执行的话,会出现一系列未知错误。
通过如下命令对mysql-5.6中的所有文件进行转码:
cd /usr/local/myrocksdb/mysql-5.6
find . -type f -exec dos2unix {} \;
如果不存在dos2unix命令,执行:
yum install –y dos2unix
4. 安装zstd
zstd是zstandard数据压缩工具,由Facebook开发。该工具如果不安装,执行第14步时会提示缺少zstd的问题。
参考页面:https://www.howtoing.com/zstd-fast-data-compression-algorithm-used-by-facebook
执行如下几步:
cd /usr/local
git clone https://github.com/facebook/zstd.git
cd zstd
make
sudo make install

编译和安装(make install)后的zstd文件产生的文件在 /usr/local/lib 下,我们需要将该目录下的文件拷贝至 /usr/lib64 目录下。
cd /usr/local/lib
cp * /usr/lib64
5. 下载googletest-release-1.8.0.zip文件
到 https://codeload.github.com/google/googletest/zip/release-1.8.0 页面下下载googletest-release-1.8.0.zip文件。
将该文件存放到如下目录,
/usr/local/myrocksdb/mysql-5.6/source_downloads/
6. 安装boost
boost是c++的标准库,编译过程中会用到。
yum install boost
yum install boost-devel
yum install boost-doc
7. 执行make操作
7.1. cmake操作
在 /usr/local/myrocksdb/mysql-5.6 目录下执行,
cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo -DWITH_SSL=system \
-DWITH_ZLIB=bundled -DMYSQL_MAINTAINER_MODE= -DENABLED_LOCAL_INFILE= \
-DENABLE_DTRACE= -DCMAKE_CXX_FLAGS="-march=native"
出现如下结果表示执行成功。

7.2. make操作
make -j8
这一步要求centos环境至少要有3G的内存,而且执行时间很长,出现以下结果表示执行成功。

8. 添加压缩软件库(*)
这一步没怎么看明白,也可以不执行。
# assume libsnappy.a is located at /usr/lib/
export WITH_SNAPPY=/usr
cmake ...
make ...
9. 执行MTR 测试(*)
这一步是对mysql数据库做一个测试,也可以不执行。
cd mysql-test
./mysql-test-run.pl --mem --async-client --parallel= --fast \
--max-test-fail= --retry= --force --mysqld=--rocksdb \
--mysqld=--default-storage-engine=rocksdb --mysqld=--skip-innodb \
--mysqld=--default-tmp-storage-engine=MyISAM --suite=rocksdb
出现如下结果,表示MTR测试执行完毕。

10. 安装Linkbench(*)
Linkbench是对mysql进行性能测试的一个工具,这里可以不安装。
确保安装JDK 和maven,如果没有要安装上,如下,
sudo apt-get install openjdk--jdk maven
git clone https://github.com/facebook/linkbench.git
cd linkbench;
mvn clean package -P fast-test
出现如下结果表示执行成功。

11. 安装mysql数据库
执行以下命令安装数据库。
make install
出现以下结果表示执行安装完成。

成功之后会在 /usr/local/ 目录下生成 /mysql 文件,这个就是我们熟知的mysql安装目录。

12.创建mysql用户并赋权
useradd -d /home/mysql -m mysql
将mysql目录的权限赋给mysql用户。
cd /usr/localchown -R mysql:mysql mysql
13. 创建my.cnf文件
对mysql的配置文件 /etc/my.cnf 填入以下内容。
[client]
default-character-set=utf8
[mysqld] #skip-grant-tables
character_set_server=utf8
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
user=mysql
port=
default_authentication_plugin=mysql_native_password rocksdb
default-storage-engine=rocksdb
skip-innodb
default-tmp-storage-engine=MyISAM
collation-server=utf8_bin log-bin
binlog-format=ROW
14. 初始化数据库服务
cd /usr/local/mysql/scripts
./mysql_install_db --user=mysql --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
出现如下结果表示执行成功。

15. 启动数据库服务
切换到 /usr/local/mysql/bin 目录下,执行mysql服务的启动。
cd /usr/local/mysql/bin
./mysqld_safe --defaults-file=/usr/local/mysql/my.cnf &
通过 ps -ef | grep mysql 命令查看,出现mysql的启动进程表示启动成功。

16. mysql的登录和赋权
在 /usr/local/mysql/bin 目录下,执行,
use mysql;
insert into mysql.user(Host,User,Password) values ("%","root",password("123456"));
grant all privileges on *.* to root@'%' identified by '';
flush privileges;
17.开放防火墙端口
这里防火墙是cetos默认的firewall防火墙。
打开设置的端口,重启防火墙。
firewall-cmd --zone=public --add-port=/tcp --permanent
systemctl restart firewalld.service
18. 尝试创建库和表
创建数据库
create database myrocks;
创建表
CREATE TABLE `linktable` (
`id1` bigint(20) unsigned NOT NULL DEFAULT '',
`id1_type` int(10) unsigned NOT NULL DEFAULT '',
`id2` bigint(20) unsigned NOT NULL DEFAULT '',
`id2_type` int(10) unsigned NOT NULL DEFAULT '',
`link_type` bigint(20) unsigned NOT NULL DEFAULT '',
`visibility` tinyint(3) NOT NULL DEFAULT '',
`data` varchar(255) NOT NULL DEFAULT '',
`time` bigint(20) unsigned NOT NULL DEFAULT '',
`version` int(11) unsigned NOT NULL DEFAULT '',
PRIMARY KEY (link_type, `id1`,`id2`) COMMENT 'cf_link_pk',
KEY `id1_type` (`id1`,`link_type`,`visibility`,`time`,`version`,`data`) COMMENT 'rev:cf_link_id1_type'
) ENGINE=RocksDB DEFAULT COLLATE=utf8_bin;
在centos环境下编译安装myrocksdb的更多相关文章
- Redhat环境下编译安装Google Bazel
Redhat环境下编译安装bazel 作者:Jack47 目前Google Bazel没有提供各个操作系统下的二进制安装包,只提供源代码,需要我们自己编译安装,详情可以见我翻译的中文版Google B ...
- libCURL开源库在VS2010环境下编译安装,配置详解
libCURL开源库在VS2010环境下编译安装,配置详解 转自:http://my.oschina.net/u/1420791/blog/198247 http://blog.csdn.net/su ...
- centos7.6环境下编译安装tengine-2.2.2的编译安装
centos7.6环境下编译安装tengine-2.2.2的编译安装 .获取tengine2..2的源码包 http://tengine.taobao.org/download/tengine-2.2 ...
- Linux/CentOS环境下如何安装和配置PhantomJS工作环境
PhantomJS 是一个基于WebKit的服务器端 JavaScript API.它全面支持web而不需浏览器支持,其快速,原生支持各种Web标准: DOM 处理, CSS 选择器, JSON, C ...
- CentOS环境下jdk安装部署
1.准备jdk安装文件: 这里我使用的是 jdk-7u79-linux-x64.tar.gz 2.在 /usr/local 目录下创建 sotfware目录,并上传JDK文件: 解压文件并修改文件夹为 ...
- 在CentOS 7下编译安装Nginx+PHP+MySQL环境
本文转载自:http://www.softeng.cn/?p=156,本文已获得作者授权,未经作者同意,不可转载. 1.前言 本文适合于已经对Linux操作系统具有基本操作经验,并且能够在Linux或 ...
- CentOS 6下编译安装MySQL 5.6
一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server rpm -qa | grep mysql 有的话通过下面的命令来卸载掉 rpm -e mysql //普通删除模式 rpm -e ...
- Ubuntu16.04LTS 环境下编译安装Xen
一.编译安装xen4.6过程 操作系统使用ubuntu16.04,通过下载xen4.6的源代码并编译安装来创建xen4.6环境. 一.依赖包的安装 sudo apt-get install gcc m ...
- CentOS 7 下编译安装lnmp之PHP篇详解
一.安装环境 宿主机=> win7,虚拟机 centos => 系统版本:centos-release-7-5.1804.el7.centos.x86_64 二.PHP下载 官网 http ...
随机推荐
- 微信小程序为什么不被看好?
我自认为对新技术还是比较有热情的,可对于小程序这个“新技术”,我却完全是被动的.去年9月份的时候,微信小程序开始内测,瞬间引爆朋友圈.知乎等一众分享平台.当时我大概了解了一下,觉得从技术角度上来说没啥 ...
- strConnection连接Access数据库
string strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;"; strConnection += @ ...
- Android 图板之保存图像
(1)为了能适应多种屏幕尺寸的手机,我们在创建图像的时候就要根据用户手机屏幕的宽高像素来创建. (2)该软件将把图形保存到sdcard中,在保存之前,需要检测sdcard是否存在,是否可写入.如通过以 ...
- HTTP请求封装:Ajax与RESTful API
一.HTTP请求 HTTP即超文本传输协议,用以进行HTML 文件. 图片文件. 查询结果等的网络传输. 一个完整的HTTP请求包括:请求行.请求头.空行和请求数据(请求数据可以为空) HTTP1.1 ...
- 【Python】Java程序员学习Python(二)— 开发环境搭建
巧妇难为无米之炊,我最爱的还是鸡蛋羹,因为我和鸡蛋羹有段不能说的秘密. 不管学啥,都要有环境,对于程序员来说搭建个开发环境应该不是什么难题.按顺序一步步来就可以,我也只是记录我的安装过程,你也可以滴. ...
- CSS 小结笔记之清除浮动
浮动是一个非常好用的属性,但是有时会出现一些问题,需要进行清除浮动.例如 <!DOCTYPE html> <html lang="en"> <head ...
- 第一章 数据库和SQL
1-1 数据库是什么? 一.数据库的含义 数据库是将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合. 数据库DB 二.数据库管理系统 DBMS 用来管理数据库的计算机系统称为 ...
- MySQL8.0初体验
MySQL8.0的官方社区开源版出来有段时间了,而percona的8.0版本还没有正式对外发布(已发布测试版),一直以来也没安装体验下这个号称质的飞跃的版本,今天正好有些时间就下了安装体验体验. 一. ...
- 转:.NET中的三种Timer的区别和用法(转)
//1.实现按用户定义的时间间隔引发事件的计时器.此计时器最宜用于 Windows 窗体应用程序中,并且必须在窗口中使用. System.Windows.Forms.Timer // 2.提供以指定的 ...
- 使用Charles进行网络请求抓包解析
使用Charles进行网络请求抓包解析 0. 懒人的福音(⌐■_■)(破解版下载地址,记得安装java库支持) http://pan.baidu.com/s/1c08ksMW 1. 查看电脑的ip地址 ...