高级DBA教你clickhouse 备份导出迁移技术副shell批量脚本例子

一、数据库常规备份

clickhouse没有很方便某个库整个备份导出导入的方法,只能逐一表迭代导出,或者所有表迭代导入。这个原则性不同跟MYSQL其他数据库都不一样。整个导出导入过程比较繁琐。
不能一次性导出表结构

导出数据
步骤1 逐一导出表结构(SQL文件)
步骤2 逐一导出表数据(tsv文件)
导出数据
步骤1 逐一导出表结构(SQL文件)
步骤2 逐一导出表数据(tsv文件)

clickhouse导出建表语句的shell脚本代码

#!/bin/bash

OUTDIR=/home/clickhouse_backup/
 
clickhouse-client --user default --password 123456  -q "SHOW DATABASES" > /home/clickhouse_backup/db.txt
while read -r db 
do
        clickhouse-client  --user default --password 123456 -q "SHOW TABLES FROM $db" > /home/clickhouse_backup/table.txt
        #echo "--------------------------------${db}"
        while read -r table  
        do
                if [ "$db" == "system" ]; then
                echo "skip system db"
                continue 2;
                fi
 
                if [[ "$table" == ".inner."* ]]; then
                echo "skip materialized view $table ($db)"
                continue;
                fi
 
                echo "export table $table from database $db"
 
                # dump schema
                clickhouse-client --user default --password 123456 -q "SHOW CREATE TABLE ${db}.${table} format CSV" >> "${OUTDIR}/schema.sql"
 
 
  done  < `ls /home/clickhouse_backup/table.txt`
done  < `ls /home/clickhouse_backup/db.txt`

sed -i 's/"CREATE/;"CREATE/g' ${OUTDIR}/schema.sql

clickhouse导出建表的shell脚本

#!/bin/bash

echo "back_up_start"


clickhouse-client --user default --password 123456   --query="select * from nasen.test1" >/home/clickhouse_backup/test1.tsv
clickhouse-client --user default --password 123456   --query="select * from nasen.test2" >/home/clickhouse_backup/test2.tsv
clickhouse-client --user default --password 123456   --query="select * from nasen.test3" >/home/clickhouse_backup/test3.tsv

echo "back_up_finish"

echo "zip now backUP clickhouse  files!!"

#gzip /home/clickhouse_backup/test1.tsv

echo "zip finish!!"

导出某个表数据命令

clickhouse-client --user default --password 123456 --query="select * from nasen.test1" >/home/test1.tsv

gzip /home/clickhouse_backup/test1.tsv  #压缩
gunzip /home/clickhouse_backup/test1.tsv.gz #解压缩

导入某个表数据命令

cat /home/test1.tsv | clickhouse-client --user default --password 123456 --query="insert into nasen.test1 FORMAT TSV"

二、clickhouse之间互相迁移

create table nasen.test1 ENGINE = MergeTree
order by id AS as  select *  from remote ('192.168.2.1','nasen.test1 ','default','123456');
insert into nasen.test1  select *  from remote select *  from remote ('192.168.2.1','nasen.test1 ','default','123456');

三、借助数据库工具导出导入

https://dbeaver.io/download/

在这里插入图片描述

在这里插入图片描述

四、补充笔记

clickhouse从postgresql数据库同步某个表命令
把postgresql某个表同步到clickhouse的命令

CREATE TABLE 表名 ENGINE = MergeTree
order by 主键 AS select * from  postgresql('IP地址:5432','PGSQL数据库名称','表名','用户名','用户名PW') ;  #clickhouse从postgresql数据库同步某个表命令
把postgresql某个表同步到clickhouse的命令

表结构修改(alter)
1、添加字段:
alter table 表名 add column 字段名 字段类型 after 已有字段
alter table 表名 add column 字段名 字段类型

2、删除字段:
alter table 表名 drop column 字段名 字段类型 after 已有字段
alter table 表名 drop column 字段名

3、修改字段:
alter table 表名modify column 字段名 字段类型

4、增加注释:
alter table 表名comment 字段名 ‘注释’

5、移动表|重命名:
rename table a to b
rename table a to newdb.a
rename table a to newdb.b

表数据操作(数据要用单引号)
insert、select和其他数据库一样
修改、删除操作要用到alter关键字

INSERT INTO default.test (test, ip, created_at, updated_at) VALUES(’’, ‘’, ‘’, ‘’);

SELECT test, ip, created_at, updated_at FROM default.test;

ALTER TABLE default.test UPDATE test=’’, ip=’’, created_at=’’, updated_at=’’;

ALTER TABLE default.test DELETE WHERE test=’’ AND ip=’’ AND created_at=’’ AND updated_at=’’;

如:删除test表中的所有数据
alter table test delete where 1=1

笔者简介
国内某一线知名软件公司企业认证在职员工:任JAVA高级研发工程师,大数据领域专家,数据库领域专家兼任高级DBA!10年软件开发经验!现任国内某大型软件公司大数据研发工程师、MySQL数据库DBA,软件架构师。直接参与设计国家级亿级别大数据项目!并维护真实企业级生产数据库300余个!紧急处理数据库生产事故上百起,挽回数据丢失所造成的灾难损失不计其数!并为某国家级大数据系统的技术方案(国家知识产权局颁布)专利权的第一专利发明人!

在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: MySQL DBA必备脚本可以帮助DBA管理和维护MySQL数据库,提高数据库性能和安全性。以下是几个常用的MySQL DBA必备脚本: 1. 备份和恢复脚本:MySQL数据库备份是保证数据安全的重要措施之一。DBA需要编写脚本来自动备份数据库,并制定相应的恢复策略。 2. 监控脚本DBA需要实时监控数据库的状态和性能。监控脚本可以定期收集数据库的性能指标和系统状态,以便DBA能够及时识别并解决潜在的问题。 3. 优化脚本:为了提高数据库的性能,DBA需要编写脚本来优化数据库的配置和查询语句。这些脚本可以帮助DBA分析数据库性能瓶颈,并提供相应的优化建议和解决方案。 4. 安全脚本数据库安全是DBA的首要任务之一。安全脚本可以帮助DBA检测数据库的安全漏洞,并采取相应的安全措施来保护数据库的数据。 5. 清理脚本数据库中的无用数据和日志可以占用大量的存储空间,影响数据库的性能。DBA需要编写清理脚本来定期清理这些无用的数据和日志。 6. 自动化脚本:为了减少日常管理任务的工作量,DBA需要编写自动化脚本来执行常见的管理任务,如数据库监控、备份和优化等。 这些脚本只是MySQL DBA必备的一部分,具体的脚本需根据实际情况和需求进行编写和调整。随着数据库的不断发展和变化,DBA还需要根据实际情况不断更新和完善这些脚本,以适应不同的需求和挑战。 ### 回答2: MySQL DBA必备脚本包括以下几个方面: 1. 数据库备份和恢复脚本:这些脚本用于定期备份数据库,并在需要时进行恢复。备份脚本可以使用mysqldump命令来导出数据库的结构和数据,并将其存储在备份文件中。恢复脚本可以使用mysql命令将备份文件中的内容重新导入到数据库中。 2. 性能优化脚本:这些脚本用于分析数据库的性能瓶颈,并提供相应的优化建议。例如,可以编写脚本来检查慢查询日志,并找出可能引起性能问题的查询语句。还可以编写脚本来监控数据库的系统资源使用情况,如内存、CPU和磁盘空间等,并根据需要进行优化。 3. 数据库监控脚本:这些脚本用于监控数据库的运行状态和健康状况。例如,可以编写脚本来检查数据库的连接数、查询负载、锁等待情况,并发送警报或记录日志以提醒DBA。 4. 安全性脚本:这些脚本用于检查数据库的安全配置,并提供相应的建议和修复脚本。例如,可以编写脚本来检查数据库的用户权限设置、网络访问控制和数据加密等,以确保数据库的安全性。 5. 自动化任务脚本:这些脚本用于执行一些常见的数据库管理任务,如索引优化、表空间管理和数据清理等。编写脚本可以减轻DBA的工作负担,并提高数据库管理的效率和准确性。 总之,MySQL DBA必备脚本是为了简化和自动化数据库管理任务,提高数据库的性能和安全性,并及时发现和解决潜在的问题。这些脚本可以根据实际需求进行定制和扩展,以适应不同的数据库环境和管理要求。 ### 回答3: MySQL DBA数据库管理员)在日常工作中需要掌握一些必备的脚本,以下是其中一些重要的脚本: 1. 数据库备份脚本:编写一个定期备份数据库脚本,以确保数据的安全性。该脚本可以使用mysqldump命令或其他备份工具,将数据库导出到一个特定的文件中,这样可以在意外情况下恢复数据。 2. 数据库恢复脚本:当数据库出现故障或意外情况时,需要编写一个恢复脚本来重新加载备份数据并修复问题。这个脚本可以将备份文件中的数据导入到数据库中,以恢复丢失的数据。 3. 性能监控脚本:为了确保数据库的高性能运行,需要编写监控脚本来跟踪关键指标,比如CPU、内存、磁盘和网络使用情况。该脚本可以使用MySQL自带的性能监控工具,如MySQL Performance Schema和MySQL Enterprise Monitor。 4. 空间管理脚本:在数据库运行期间,需要通过定期清理不再使用的表、索引或日志文件来管理数据库的空间。编写一个空间管理脚本,可以根据数据库的大小和使用情况,自动删除过期或不再需要的数据。 5. 定期优化脚本数据库的性能可能会随着时间的推移而下降,所以要定期进行数据库优化。编写一个定期优化脚本,可以分析数据库的查询性能,并执行必要的优化操作,如创建合适的索引、重构查询语句等。 6. 安全审计脚本数据库安全是DBA工作中的一个重要方面。编写一个安全审计脚本,以检查数据库的安全设置,如是否启用了密码策略、是否有未授权的用户等。此外,还可以定期检查数据库日志,以发现潜在的安全威胁。 这些是MySQL DBA必备的一些脚本。根据具体的需求和环境,DBA还可以根据自己的经验和专业知识编写其他定制化的脚本来帮助管理和维护数据库

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术很渣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值