cassandra数据备份与迁移

简介: 单机备份 注意备份的时候schema也要备份一下,否则不能恢复快照! 1.备份单个keyspace schemacqlsh -e "DESC KEYSPACE user" > user_schema.

单机备份

注意备份的时候schema也要备份一下,否则不能恢复快照!

1.备份单个keyspace schema
cqlsh -e "DESC KEYSPACE user" > user_schema.cql
2.备份整个database schema
cqlsh -e "DESC SCHEMA" > db_schema.cql

3.导入keyspace schema
在 user_schema.cql所在的目录下打开cqlsh:
source 'user_schema.cql'
4.导入database schema:
在db_schema.cql所在的目录下打开cqlsh:
source 'db_schema.cql'
5.备份单个keyspace数据
bin/nodetool snapshot -t 20171130 user
6.备份所有的keyspace
bin/nodetool snapshot -t 20171130

-t后面指定快照的名字,备份好的数据在这个目录下
$CASSANDRA_HOME/data/yourkeyspace/table-uuid/snapshots/20171130

7.使用脚本将快照拷贝出来
将如下脚本保存为copy.sh,注意修改keyspacePath和dstKeyspacePath的值。 这个脚本只拷贝某一个keyspace的快照

#!/bin/bash
keyspacePath="cassandra-3.11.1/data/data/your_keysapce_name"
currentIp=`ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | cut -f1  -d'/'`
dstKeyspacePath="/home/master/beifen/$currentIp/my_backup"
echo $currentIp
if [ ! -x "$dstKeyspacePath" ]; then  
    mkdir -p $dstKeyspacePath
fi 
for dir in `ls $keyspacePath`; do (
    currentTableName=`basename $dir`
    echo "currentTableName=$currentTableName"
    tableDstPath="$dstKeyspacePath/$currentTableName"
    echo "tableDstPath=$tableDstPath"
    if [ ! -x "$tableDstPath" ]; then  
        mkdir -p $tableDstPath
    fi 
    cp -r "$keyspacePath/$dir/snapshots/" $tableDstPath
); done

给脚本赋予执行权限:
chmod +x ./copy.sh
执行脚本:
./copy.sh
8.恢复快照
将dstKeyspacePath下的SSTable(table-uuid)目录拷贝到新的cassandra的Data目录下,执行如下命令即可
bin/nodetool refresh


集群备份

直接从一个集群导到另一个集群:

1.memTable数据刷新到SSTable
bin/nodetool flush

2.源集群导出schema

cqlsh 192.168.40.x -e "DESC KEYSPACE your_keyspace" > your_keyspace_schema.cql

your_keyspace_schema.cql 拷贝到目录集群某个目录下,然后进入到这个目录,打开cqlsh。
source 'your_keyspace_schema.cql'

3.使用脚本直接导数据
该脚本只能导一个keyspace
将如下脚本保存为 migrate.sh,注意修改keyspacePath和dstClusterIP。keyspacePath是源集群的keyspace所在目录,dstClusterIP是目标集群的IP,可以是多个。

#!/bin/bash
keyspacePath="cassandra-3.11.1/data/data/your_keyspace"
dstClusterIP=192.168.40.1,192.168.40.2,192.168.40.3
for dir in `ls $keyspacePath`; do (
    sstableloader -d $dstClusterIP -t 100 "$keyspacePath/$dir"
); done

脚本赋上执行权限:
chmod +x ./migrate.sh
执行脚本,(请确保你的PATH环境变量里配置过Cassandra的路径)
./migrate.sh

如果要备份所有的数据:

#!/bin/bash
srcDataPath="/data/janus/apache-cassandra-3.11.1/data/data"
# 可以是多个IP,逗号分隔
dstClusterIP=192.168.40.13

for keyspacePath in `ls $srcDataPath`; do (
    echo "currentkeyspace=$keyspacePath"
    for table in `ls $srcDataPath/$keyspacePath`; do (
        echo "$srcDataPath/$keyspacePath/$table"
        sstableloader -d $dstClusterIP -t 100 "$srcDataPath/$keyspacePath/$table"
    );done
);done

dstClusterIP 后面指定的是目标集群的IP,可以是多个IP。根据你的实际情况修改之。

srcDataPath 是源集群的数据目录。根据你的实际情况修改之。

执行脚本的时候,控制台会打印出当前备份的进度。

目录
相关文章
|
7月前
|
SQL 运维 监控
TiDB集群故障排查与恢复
【2月更文挑战第28天】本章将详细探讨TiDB集群故障排查与恢复的方法。我们将介绍常见的故障类型、排查工具与步骤,以及故障恢复的策略与最佳实践。通过本章的学习,读者将能够掌握TiDB集群故障排查与恢复的技术,确保数据库的稳定性和可用性。
|
22天前
|
NoSQL 容灾 MongoDB
MongoDB主备副本集方案:两台服务器使用非对称部署的方式实现高可用与容灾备份
在资源受限的情况下,为了实现MongoDB的高可用性,本文探讨了两种在两台服务器上部署MongoDB的方案。方案一是通过主备身份轮换,即一台服务器作为主节点,另一台同时部署备节点和仲裁节点;方案二是利用`priority`设置实现自动主备切换。两者相比,方案二自动化程度更高,适合追求快速故障恢复的场景,而方案一则提供了更多的手动控制选项。文章最后对比了这两种方案与标准三节点副本集的优缺点,指出三节点方案在高可用性和数据一致性方面表现更佳。
|
6月前
|
NoSQL MongoDB 数据库
MongoDB如何进行数据备份?
【6月更文挑战第7天】MongoDB如何进行数据备份?
590 1
|
6月前
|
存储 监控 NoSQL
MongoDB 副本集:构建可靠的数据备份与高可用性系统
MongoDB 副本集:构建可靠的数据备份与高可用性系统
113 0
|
消息中间件 存储 大数据
简易教程:ClickHouse 的数据备份与恢复(二)
数据备份是IT运营中不可或缺的重要部分。在“大数据”部署(例如分析数据库)中,它们最具挑战性。本文将探讨备份ClickHouse所涉及的管道,并介绍用于自动化过程的Clickhouse备份工具。
1186 0
|
7月前
|
存储 算法 分布式数据库
HBase的数据备份和恢复是如何进行的?
HBase的数据备份和恢复是如何进行的?
84 0
|
SQL 数据库 OceanBase
OceanBase数据库中,如果你想将数据备份到本地
OceanBase数据库中,如果你想将数据备份到本地
659 1
|
存储 NoSQL Shell
如何将阿里云WiredTiger引擎的MongoDB物理备份文件恢复至自建数据库
数据库操作一直是一个比较敏感的话题,动不动“删库跑路”,可见数据库操作对于一个项目而言是非常重要的,我们有时候会因为一个游戏的严重bug或者运营故障要回档数据库,而你们刚好使用的是阿里云的Mongodb,那么这篇文章将给你提供一个思路(或许你按照阿里云官网的文档一顿操作下来,并不是那么顺利,有一些报错,无法登录...)
|
SQL 关系型数据库 MySQL
【迁移】Mysql数据库备份 迁移
备份数据,新建库,导入数据,恢复备份
84 0
【迁移】Mysql数据库备份 迁移
|
存储 安全 Linux
分布式数据库Couchbase 集群迁移-2
在之前的文章中,我们介绍了基于 CBBACK 以及 CBRESTORE 等操作方式进行的分布式数据库 Couchbase 集群迁移方案,具体可参考链接:分布式数据库Couchbase 集群迁移。其实,在基于不同的业务场景以及架构方案,针对分布式数据库 Couchbase 集群迁移有多种不同的实现策略,只有能够达到高效、稳定及安全,才是最优选择。
181 0