CentOS 7 安装MyRocksDB

Rocksdb
是脸书(facebook)公司开源的一个key-value存储引擎,基于leveldb开发。rocksdb使用的是LSM存储引擎,纯c++编写。rocksdb具有很好的读写性能。但是rocksdb的实际操作需要很好的阅读rocksdb api文档,很多实现要自己编写代码来执行,还要考虑诸如线程安全等问题。
官网页面:https://rocksdb.org.cn
Myrocksdb
是rocksdb和mysql结合的结果,它将mysql的innodb引擎替换为rocksdb引擎,剥离实际操作底层rocksdb的方式,通过熟悉的操作mysql的方式进行数据库的连接、数据的存储读取等操作,方便很多。
官网链接:http://myrocks.io/docs/getting-started/
官网给的两个平台一个是Centos,一个是Ubuntu。这里我选择的是Centos版本,但需要注意的是官方给出的Centos 6.8版本自身并不带有gcc 4.7以上版本,如果使用该版本需要自身配置gcc更高的版本,至少需要4.8以上,不然编译rocksdb源码的时候通不过。在这里插入图片描述
最后选择的是Centos 7.2.1511版本,同时配置的时候要保证内存为3G以上:
下载链接:https://pan.baidu.com/s/1ZlR5-Bxg0UmILKTdULYY-A提取码:ui9l
安装配置:https://blog.csdn.net/qq_44714603/article/details/88829423
本文主要参考:https://www.cnblogs.com/lunyu/p/10190364.html

安装

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源码包

git clone https://github.com/facebook/mysql-5.6.git
cd mysql-5.6
git submodule init
git submodule update

这里我们选择的源码都是在github上的代码,如果你可以忍受20-30kb的速度,可以继续,如果等不及可以考虑换一个国内源码库gitee下载:

cd /usr/local
mkdir myrocksdb
cd myrocksdb
git clone https://gitee.com/tang_dahe/mysql-5.6.git
cd mysql-5.6
git submodule init
git clone https://gitee.com/tang_dahe/rocksdb.git
git clone https://gitee.com/tang_dahe/rqg.git
git submodule update

在这里插入图片描述

3.安装zstd
zstd是zstandard数据压缩工具,由Facebook开发。该工具如果不安装,执行数据库初始化时会提示缺少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

同样可以用gitee去下载。
在这里插入图片描述
编译和安装(make install)后的zstd文件产生的文件在 /usr/local/lib 下,我们需要将该目录下的文件拷贝至 /usr/lib64 目录下。

cd /usr/local/lib
cp * /usr/lib64

4.下载‪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/

5.安装boost
boost是c++的标准库,编译过程中会用到。

yum install boost
yum install boost-devel
yum install boost-doc

6.执行make操作
在 /usr/local/myrocksdb/mysql-5.6 目录下执行:
cmake操作

cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo -DWITH_SSL=system \
-DWITH_ZLIB=bundled -DMYSQL_MAINTAINER_MODE=0 -DENABLED_LOCAL_INFILE=1 \
-DENABLE_DTRACE=0 -DCMAKE_CXX_FLAGS="-march=native"

出现如下结果表示执行成功:
在这里插入图片描述

执行make操作

make -j8

这一步要求centos环境至少要有3G的内存,而且执行时间很长,出现以下结果表示执行成功。
在这里插入图片描述

7.添加压缩软件库(*)

# assume libsnappy.a is located at /usr/lib/
export WITH_SNAPPY=/usr
cmake ...
make ...

8.执行MTR 测试(*)

cd mysql-test
./mysql-test-run.pl --mem --async-client --parallel=16 --fast \
--max-test-fail=1000 --retry=0 --force --mysqld=--rocksdb \
--mysqld=--default-storage-engine=rocksdb --mysqld=--skip-innodb \
--mysqld=--default-tmp-storage-engine=MyISAM --suite=rocksdb

9.安装Linkbench(*)
Linkbench是对mysql进行性能测试的一个工具,这里可以不安装。
确保安装JDK 和maven,如果没有要安装上,如下:

sudo yum install openjdk-7-jdk maven
git clone https://github.com/facebook/linkbench.git
cd linkbench;
mvn clean package -P fast-test

10.安装mysql数据库
执行命令安装数据库:

make install

数据库安装成功:
在这里插入图片描述

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

在这里插入图片描述

11.创建mysql用户并赋权

useradd -d /home/mysql -m mysql

将mysql目录的权限赋给mysql用户。

cd /usr/local
chown -R mysql:mysql mysql

12.在/etc目录下创建my.cnf文件
对mysql的配置文件 /etc/my.cnf 填入以下内容:

[client]
port=3306
socket= /usr/local/mysql/mysql-5.6.sock
default-character-set=utf8
[mysqld]

#skip-grant-tables
character_set_server=utf8
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket= /usr/local/mysql/mysql-5.6.sock
user=mysql
port=3306
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

13.初始化数据库服务

cd /usr/local/mysql/scripts
./mysql_install_db --user=mysql --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

在这里插入图片描述

14.启动数据库服务

cd /usr/local/mysql/bin
./mysqld_safe --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

在这里插入图片描述

通过 ps -ef | grep mysql 命令查看,出现mysql的启动进程表示启动成功。
在这里插入图片描述

15.mysql的登录和赋权
默认用户是root用户
密码默认是123456

cd /usr/local/mysql/bin
./mysqladmin -u root password '123456'
./mysql -u root -p

输入密码登录成功。
在这里插入图片描述
赋权

use mysql;
insert into mysql.user(Host,User,Password) values ("%","root",password("123456"));
grant all privileges on *.* to root@'%' identified by '123456';
flush privileges;

在这里插入图片描述

16.查看engines是否是Rocksdb
因为我们主要是为了研究sql在rocksdb上的存储构造,所以mysql默认的innodb必须禁用,在我们编写my.cnf的时候已经加入skip-innodb禁用,此处查看结果。
在这里插入图片描述
可以看到Rocksdb已经为default默认状态。

17.开放防火墙端口
这里防火墙是cetos默认的firewall防火墙。
打开设置的端口,重启防火墙。

firewall-cmd --zone=public --add-port=3306/tcp --permanent
systemctl restart firewalld.service

18.尝试创建库和表
创建数据库:

create database myrocks;

创建表:

CREATE TABLE `linktable` (
  `id1` bigint(20) unsigned NOT NULL DEFAULT '0',
  `id1_type` int(10) unsigned NOT NULL DEFAULT '0',
  `id2` bigint(20) unsigned NOT NULL DEFAULT '0',
  `id2_type` int(10) unsigned NOT NULL DEFAULT '0',
  `link_type` bigint(20) unsigned NOT NULL DEFAULT '0',
  `visibility` tinyint(3) NOT NULL DEFAULT '0',
  `data` varchar(255) NOT NULL DEFAULT '',
  `time` bigint(20) unsigned NOT NULL DEFAULT '0',
  `version` int(11) unsigned NOT NULL DEFAULT '0',
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;

19.设置mysqld服务启动
如果不设置启动服务,每次操作数据库都要执行一遍初始化过程,很麻烦,可以执行下面的操作,通过service启动。
执行chkconfig管理系统服务(service)的命令工具。

cp /usr/local/mysql/support-files/mysql.server  /etq/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --level 345 mysqld on 

然后就可以通过一下命令来重启项目。

service mysqld restart

有以下结果:在这里插入图片描述
20.设置在任意位置登录和导出mysql库

export MYSQL_HOME=/usr/local/mysql
export PATH=$MYSQL_HOME/bin:$PATH

任意位置登录mysql;
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值