cassandra数据库迁移与扩容
1、先下载cassandra的tgz包,我安装的是3.9版本的cassandra,下载地址http://www.apache.org/dyn/closer.lua/cassandra/3.9/
2、下载之后解压
tar zxvf apache-cassandra-3.9-bin.tar.gz
3、配置
进入解压后的cassandra目录,在conf/cassandra.yaml中设置datafile,commitlog和saved_caches目录,其默认值分别为:$CASSANDRA_HOME/data/data, $CASSANDRA_HOME/data/commitlog, $CASSANDRA_HOME/data/saved_caches,可以根据自己要求设置
本人设置的是/var/lib/cassandra/data, /var/lib/cassandra/commitlog, /var/lib/cassandra/saved_caches。
新建设置的这三个目录,并将其所有者改成普通用户
sudo mkdir /var/lib/cassandra/data
sudo mkdir /var/lib/cassandra/commitlog
sudo mkdir /var/lib/cassandra/saved_caches
sudo chown -R ly:ly /var/lib/cassandra/data
sudo chown -R ly:ly /var/lib/cassandra/commitlog
sudo chown -R ly:ly /var/lib/cassandra/saved_caches
之后如果有需要可以配置cassandra的内存,在conf下的cassandra-env.sh文件中,MAX_HEAP_SIZE表示最大申请内存大小,HEAP_NEW_SIZE表示初始申请内存大小,两者不能单独设置,否则cassandra出错
4、运行
全部完成后可以启动cassandra了,在cassandra目录下运行
bin/cassandra
等待,输入命令
ps -aux | grep cassandra
查看进程,当出现下图中5012类似进程时,则cassandra启动完毕
图999
5、启动cql
bin/cqlsh
启动cassandra的cql编辑器,可以使用cql语句操作数据库(启用cql的条件是系统安装了2.7版本及以上的python,如果没有则不能打开)
6、关闭cassandra,使用简单粗暴的kill命令
kill 5012
7、测试
使用java编写简单的程序插入数据库,参见http://ju.outofmemory.cn/entry/210437(jdbc连接方式),http://blog.csdn.net/maosijunzi/arTIcle/details/42268061(Cassandra.Client方式)
在运行时可能会出现错误:
java.lang.ClassNotFoundExcepTIon:com.google.common.uTIl.concurrent.AsyncFuncTIon
可能是因为依赖包不全的原因,保证以下几种jar包依赖:
cassandra-driver-core-*.jar
guaua-*.jar
metrics-core-*.jar
netty-all-*.Final.jar
slf4j-api-*.jar
cassandra数据库迁移(介绍两种方法)
第一种方式:copy命令
使用方法:适用于数据量小的情况下。
使用方式:copy mykeyspace.mytable to ‘/home/db.csv’
这样就成功的把表mytable以csv的格式导出到了db.csv文件。
然后再另外一个集群中,建一个一模一样的表,然后使用
copy app12345.mytable from ‘/home/db.csv’
就把数据导入到了新的库中。
不过以上方式仅限于小数据量,当数据量一大,这个过程会持续很久,而且文件也会很大。
第二种方式:sstableloader工具。
在cassandra的bin目录下提供了一个sstableloader工具,这个工具专门用于把一个表的sstable文件导入到一个新的集群中。
假设你的表是mykeyspace.mytable。你的数据存一个10个节点组成的集群中,每个几点的数据都存在/disk/data1和/disk/data2目录下。
假设你的新集群的一个访问地址是IP, 先在新集群建离相同名字的keyspace和表结构。
接下来你只要在老集群的每个节点执行下面的命令:
bin/sstableloader -d IP -u cassandra -pw cassandra -t 100 /disk/data1/mykeyspace/mytable
bin/sstableloader -d IP -u cassandra -pw cassandra -t 100 /disk/data2/mykeyspace/mytable
其中-u是 用户名 -pw是密码 -t是限制流量100M/bps
等所有节点执行完毕,你的表数据就成功导入到了新的集群中,当然只要你的机器io和网络条件允许,你可以多个节点并发执行。
技术专区
- mybatis动态sql详解
- 用VHDL语言设计数据传输系统中的HDB3编码器
- 裸机程序如何驱动硬件?看前辈是怎么说的
- 应用面向对象编程SoC原则的典型示例
- 嵌入式开发之java常用开发工具介绍