Descripción general de los métodos de copia de seguridad y recuperación de Clickhouse


Descripción general de los métodos de copia de seguridad habituales

Método de copia de seguridad Características
Copia de seguridad de archivos físicos Copie archivos físicos y prohíba la escritura de datos durante la copia de seguridad
volcado de importación y exportación de datos El método de copia de seguridad es flexible, pero la velocidad de copia de seguridad es lenta
Copia de seguridad de la tabla de instantáneas Hacer tabla _bak para respaldo
FREEZE copia de seguridad Copia de seguridad de la partición de tabla (tabla de particiones, tabla sin particiones), que se puede cargar y restaurar mediante adjuntar
FETCH copia de seguridad La copia de seguridad de la partición de la tabla de particiones del motor ReplicaMergeTree se puede cargar y restaurar adjuntando
Copia de seguridad de metadatos Crear una copia de seguridad de la declaración de la tabla y la base de datos

Descripción general de los métodos de recuperación comunes

Método de recuperación Características
adjuntar Al cargar y restaurar el archivo de respaldo de la partición de la tabla, el archivo de respaldo debe colocarse en el directorio separado correspondiente

Uno, preparación fría

El efecto de copia de seguridad también se puede lograr copiando los archivos físicos, pero debe tenerse en cuenta que durante el período de copia de seguridad al copiar los archivos físicos, se debe evitar la escritura de datos.

La copia de seguridad de archivos físicos se divide principalmente en dos partes:

  • Se puede hacer una copia de seguridad del archivo de datos de tabla, una base de datos, una tabla y un archivo de partición en $ {datadir} / data
  • Copia de seguridad de metadatos, en $ {datadir} / metadata, puede hacer una copia de seguridad de la declaración de creación de la tabla de una determinada base de datos o una determinada tabla

Dos, espera en caliente

2.1 Importación y exportación de datos

Los datos especificados se exportan al archivo tsv para la copia de seguridad a través de la declaración de consulta. Los datos de la copia de seguridad son más flexibles y los datos se pueden importar y restaurar a través de la herramienta del cliente.

1. Gramática básica

-- 导出
clickhouse-client -h xxx --query="select * from ${table_name}" > ${table_name}.tsv

-- 导入
cat ${table_name}.tsv | clickhouse-client -h xxx --query "insert into ${table_name} format TSV";

2. Ejemplo

1) Exportar datos a un archivo local

# clickhouse-client -h 172.16.104.11 --query="select * from db1.t7_all" > t7_all.tsv

# cat t7_all.tsv
1	aa
3	cc
4	dd
5	ee
2	bb

2) Importe el archivo de respaldo para restaurar

-- 创建表
mdw :) create table t7_bak_local on cluster shard2_repl0 (`id` Int32,`name` String) engine=ReplicatedMergeTree('/clickhouse/tables/{layer}-{shard}/t7_bak_local','{replica}') order by id;
mdw :) create table t7_bak_all on cluster shard2_repl0 (`id` Int32,`name` String) engine=Distributed(shard2_repl0,db1,t7_bak_local,rand());

-- 导入数据
# cat t7_all.csv | clickhouse-client -h 172.16.104.11 --query "insert into t7_bak_all format TSV";

-- 验证数据
mdw :) select * from t7_bak_all order by id;

SELECT *
FROM t7_bak_all
ORDER BY id ASC

┌─id─┬─name─┐
│  1 │ aa   │
│  2 │ bb   │
│  3 │ cc   │
│  4 │ dd   │
│  5 │ ee   │
└────┴──────┘

5 rows in set. Elapsed: 0.019 sec.

2.2 Tabla de instantáneas

La tabla de instantáneas es en realidad para crear una tabla de respaldo con la misma estructura que la tabla que necesita ser respaldada y escribir los datos en la tabla de respaldo para respaldo.

1. Gramática básica

-- 创建备份表,对于分布式表或者复制表可通过手动指定engine进行区分
create table ${table_name}_bak as ${table_name} ;
create table ${table_name}_bak as ${table_name} engine=xxx order by xx;

-- 备份数据
insert into ${table_name}_bak select * from ${table_name} ;

2. Ejemplo

1) Crea una tabla de instantáneas

-- 创建快照表
mdw :) create table db1.t2 on cluster shard2_repl0 as db1.t7_all ENGINE = Distributed('shard2_repl0', 'db1', 't2_local', rand());
mdw :) create table db1.t2_local on cluster shard2_repl0  as db1.t7_local ENGINE = ReplicatedMergeTree('/clickhouse/tables/{layer}-{shard}/t2_local','{replica}') order by id;

2) Copia de seguridad de datos

-- 导入数据
mdw :) insert into t2 select * from t7_all ;
mdw :) select * from t2 order by id;

SELECT *
FROM t2
ORDER BY id ASC

┌─id─┬─name─┐
│  1 │ aa   │
│  2 │ bb   │
│  3 │ cc   │
│  4 │ dd   │
│  5 │ ee   │
└────┴──────┘

5 rows in set. Elapsed: 0.014 sec.

2.3 copia de seguridad FREEZE

La congelación se basa en la partición para realizar la copia de seguridad. Una vez que se ha realizado una copia de seguridad de la partición especificada mediante la congelación, CK almacenará los datos de la partición modificada en el directorio $ {datadir} / shadow. N en el directorio shadow es un número entero que aumenta automáticamente , lo que significa congelar el número de ejecuciones.

La copia de seguridad congelada se logra esencialmente vinculando de forma rígida el archivo de catálogo original, por lo que no aumentará el espacio de almacenamiento adicional.

1. Gramática básica

Para las tablas no particionadas, ck realmente la considera una tabla particionada con un solo todo. Cuando se usa freeze, no es necesario agregar una condición de partición.

alter table ${table_name} freeze [partition ${partition_expr}];

2. Ejemplo

1) Tabla de particiones

-- 备份数据
sdw1 :) alter table t7 freeze partition 202101;
sdw1 :) alter table t7 freeze partition 202102;


-- 查看shadow目录
[root@sdw1 shadow]# pwd
/data/clickhouse-server/data/shadow
[root@sdw1 shadow]# ll
总用量 4
drwxr-x--- 3 clickhouse clickhouse 18 2月  18 22:16 1
drwxr-x--- 3 clickhouse clickhouse 18 2月  18 22:24 2
-rw-r----- 1 clickhouse clickhouse  2 2月  18 22:24 increment.txt

-- 查看备份数据
[root@sdw1 t7]# pwd
/data/clickhouse-server/data/shadow/1/data/db1/t7
[root@sdw1 t7]# ll
总用量 0
drwxr-x--- 2 clickhouse clickhouse 279 2月  18 22:16 202101_5_5_0
[root@sdw1 t7]# pwd
/data/clickhouse-server/data/shadow/2/data/db1/t7
[root@sdw1 t7]# ll
总用量 0
drwxr-x--- 2 clickhouse clickhouse 279 2月  18 22:24 202102_4_4_0               # 对于分区表,每个分区为一个分区目录


2) Mesa no particionada

-- 备份数据
sdw3 :) alter table tt1 freeze;

-- 查看备份数据
[root@sdw3 tt1]# pwd
/data/clickhouse-server/data/shadow/1/data/db1/tt1
[root@sdw3 tt1]# ll
总用量 0
drwxr-x--- 2 clickhouse clickhouse 181 2月  24 16:55 all_1_1_0                  # 对于非分区表,默认为all一个分区

2.4 FETCH copia de seguridad

fetch es solo para las tablas del motor ReplicaMergeTree. Su principio de funcionamiento es similar al de ReplicatedMergeTree para sincronizar datos. FETCH encuentra y descarga todos los archivos de datos correspondientes al zk_path especificado y almacena los archivos de respaldo en datadir / data / {datadir} / data /d a t a d i r / d a t a / {db} / $ {table_name} / directorio separado.

1. Gramática básica

alter table ${table_name} fetch partition ${partition_expr} from '${zk_path}'

2. Ejemplo

-- 数据准备
sdw1 :) create table t8 on cluster shard1_repl1(`id` Int32,`name` String,`create_date` Date) engine = ReplicatedMergeTree('/clickhouse/tables/{layer}-{shard}/t8','{replica}') PARTITION BY toYYYYMM(create_date) order by id

sdw1 :) insert into t8 values (6,'dsk','2020-07-20'),(4,'ww','2020-01-02'),(19,'bw','2021-02-18'),(17,'bb','2021-01-02'),(12,'aw','2021-01-02'),(21,'cc','2020-01-08'),(32,'ww','2020-02-02');

-- 备份数据
sdw1 :) alter table t8 fetch partition 202101 from '/clickhouse/tables/01-01/t8';          # from后的路径为zk_path的路径,可查看表结构


-- 备份数据
[root@sdw1 202101_0_0_0]# pwd
/data/clickhouse-server/data/data/db1/t8/detached/202101_0_0_0
[root@sdw1 202101_0_0_0]# ls
checksums.txt  columns.txt  count.txt  create_date.bin  create_date.mrk2  default_compression_codec.txt  id.bin  id.mrk2  minmax_create_date.idx  name.bin  name.mrk2  partition.dat  primary.idx

Tres, recuperación de datos

Las copias de seguridad de archivos físicos, las copias de seguridad congeladas y las copias de seguridad de recuperación se pueden cargar mediante adjuntar para completar la recuperación de datos.

  • Cuando se realiza una copia de seguridad de archivos físicos, se congela la copia de seguridad y se obtiene una copia de seguridad, debe prestar atención a la copia de seguridad de los metadatos para evitar la pérdida de metadatos y los archivos de datos no se pueden restaurar
  • Después de usar fetch para hacer una copia de seguridad de los archivos de partición de la tabla, los archivos de copia de seguridad se almacenan en datadir / data / {datadir} / data /d a t a d i r / d a t a / {db} / $ {table_name} / directorio separado, puede cargar directamente a través del comando adjuntar
  • Después de usar congelar para hacer una copia de seguridad del archivo de partición de la tabla, el archivo de copia de seguridad se almacena en el directorio $ {datadir} / shadow. Si necesita restaurar los datos, debe copiar el archivo de copia de seguridad en el directorio al directorio separado correspondiente, y luego cargue y restaure
  • Para utilizar la copia de seguridad de archivos físicos, debe copiar los archivos que deben restaurarse en el directorio separado correspondiente, y luego cargar y restaurar

1. Gramática básica

Para la operación de restauración de la partición de respaldo, debe usar ATTACH para cargar la partición.

1) Para la tabla de particiones

Si desea restaurar los datos de la partición de la tabla de particiones, primero debe copiar activamente el archivo de partición en el subdirectorio de sombra al directorio separado de la tabla de datos correspondiente y luego usar la instrucción ATTACH para cargarlo.

-- 对于分区表,需要提前创建表结构
ALTER TABLE ${tablename} ATTACH PARTITION ${partition_expr};


2) Para tablas sin particiones

Si desea restaurar los datos de la partición de la tabla de particiones, debe colocar activamente la copia de seguridad del directorio de particiones relacionadas en el directorio de datos de la tabla correspondiente y usar la instrucción DETACH para descargar y la instrucción ATTACH para cargar.

-- 对于非分区表,需要提前创建表结构
ATTACH TABLE ${tablename}               
DETACH TABLE ${tablename}

2. Ejemplo

alter table t8 attach partition 202102;

Supongo que te gusta

Origin blog.csdn.net/weixin_37692493/article/details/113873066
Recomendado
Clasificación