探索ClickHouse——使用MaterializedPostgreSQL同步PostgreSQL数据库

news/2024/7/9 21:03:53 标签: 数据库, clickhouse, postgresql

安装PostgreSQL

sudo apt install postgresql

修改配置

sudo vim /etc/postgresql/14/main/postgresql.conf 

解开并修改wal_level 的配置项

wal_level = logical

重启服务

/etc/init.d/postgresql restart

Restarting postgresql (via systemctl): postgresql.service==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to restart ‘postgresql.service’.
Multiple identities can be used for authentication:

  1. fangliang
  2. , (kafka)

Choose identity to authenticate as (1-2): 1
Password:
==== AUTHENTICATION COMPLETE ===
.

设置密码

切换用户

sudo su - postgres

使用下面命令进入PostgreSQL命令行交互页面

psql

输入下面命令设置密码为postgres_pwd

\password postgres

Enter new password for user “postgres”:
Enter it again:

创建数据库和表

使用下面命令创建数据库

CREATE DATABASE test_db;
\c test_db
CREATE TABLE accounts(user_id INT PRIMARY KEY, username VARCHAR(50) UNIQUE NOT NULL, password VARCHAR(50) NOT NULL, email VARCHAR(255) UNIQUE NOT NULL);

数据同步

开启一个新的窗口,使用下面指令进入交互页面

clickhouse-client

创建表

CREATE TABLE postgresql_replica(user_id UInt64, username String, password String, email String) ENGINE = MaterializedPostgreSQL('127.0.0.1:5432', 'test_db', 'accounts', 'postgres', 'postgres_pwd') PRIMARY KEY user_id;

CREATE TABLE postgresql_replica
(
user_id UInt64,
username String,
password String,
email String
)
ENGINE = MaterializedPostgreSQL(‘127.0.0.1:5432’, ‘test_db’, ‘accounts’, ‘postgres’, ‘postgres_pwd’)
PRIMARY KEY user_id
Query id: 16f796bc-e979-47b4-8f1c-33471cfd7b12
0 rows in set. Elapsed: 0.013 sec.
Received exception from server (version 23.7.5):
Code: 1001. DB::Exception: Received from localhost:9000. DB::Exception: pqxx::sql_error: ERROR: logical decoding requires wal_level >= logical
. (STD_EXCEPTION)

数据库写入数据

在psql的交互页面输入

INSERT INTO accounts(user_id, username, password, email) VALUES(0, 'fangliang', 'pwd', 'fangliang@123.com');

检查数据

select * from accounts;

user_id | username | password | email
---------±----------±---------±------------------
0 | fangliang | pwd | fangliang@123.com
(1 row)

ClickHouse同步数据

clickhouse-client交互页面输入

select * from postgresql_replica;

SELECT *
FROM postgresql_replica
Query id: eef3fc8e-82ce-4e69-bf0b-0c2afe047daf
┌─user_id─┬─username──┬─password─┬─email─────────────┐
│ 0 │ fangliang │ pwd │ fangliang@123.com │
└─────────┴───────────┴──────────┴───────────────────┘
1 row in set. Elapsed: 0.012 sec.

参考资料


http://www.niftyadmin.cn/n/5071200.html

相关文章

黑客帝国代码雨

黑客帝国代码雨奉上,之前一直想写,但一直没抽出时间来,今天把他写了,也算了了装心事 效果图如下 原理就不讲了,代码写的很清楚而且不长 有不懂的评论区问我就好 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8">&l…

jwt的基本介绍

说出我的悲惨故事给大家乐呵乐呵&#xff1a;公司刚来了一个实习生&#xff0c;老板让他写几个接口给我&#xff0c;我页面还没画完呢。他就把接口给我了&#xff0c;我敲开心&#xff0c;第一次见这么高效率的后端。但我很快就笑不出来了。他似乎不知道HTTP通信是无状态的。他…

Leetcode hot 100之双指针(快慢指针、滑动窗口)

目录 数组 有序的平方仍有序 删除/覆盖元素 移动零&#xff1a;交换slow和fast 滑动窗口&#xff1a;最短的连续子串&#xff08;r可行解->l--最短解&#xff09; 最小长度的子数组 求和&#xff1a;sort、l i 1, r len - 1 三数之和abctarget 四数之和abcdtarg…

国内手机安装 Google Play 服务 (GMS/Google Mobile Services)

目录 1. 国内手机安装 Google Play 服务 (GMS/Google Mobile Services)1.1. 什么是 GMS1.2. 国内手机只需要安装 3 个 APP1.2.1. Google Services Framework 服务框架1.2.2. Google Play Services1.2.3. Google Play Store 应用商店 1.3. 问题1.3.1. 谷歌地图闪退 2. 小米手机 …

【yolo系列:YOLOV7改进-添加EIOU,SIOU,AlphaIOU,FocalEIOU.】

yolo系列文章目录 在YoloV7中添加EIoU,SIoU,AlphaIoU,FocalEIoU,Wise-IoU. 2023-2-7 更新 yolov7添加Wise-IoUB站链接 重磅&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; YOLO系列模型改进损失函数 文章目录 yolo系列文章目录一、初始的yolov7损失函数二、首…

2023-IDEA插件推荐

CamelCase 链接 https://plugins.jetbrains.com/plugin/7160-camelcase https://github.com/netnexus/camelcaseplugin 介绍 提供下划线、驼峰等代码风格的切换。快捷键是⇧ ⌥ U / Shift Alt U GsonFormatPlus 链接 https://plugins.jetbrains.com/plugin/14949-gs…

Git 学习笔记 | 版本控制和版本控制工具

Git 学习笔记 | 版本控制和版本控制工具 Git 学习笔记 | 版本控制和版本控制工具什么是版本控制&#xff1f;版本管理工具的特性版本管理工具的发展简史主流的版本控制器本地版本控制集中版本控制分布式版本控制 Git与SVN的主要区别 Git 学习笔记 | 版本控制和版本控制工具 学…

第五章:最新版零基础学习 PYTHON 教程—Python 字符串操作指南(第十节 Python——查找字符串中所有重复的字符)

给定一个字符串,找到所有彼此相似的重复字符。让我们看一下这个例子。 例子: # 输入:你好 # 输出:好 输入字符串 = "你好" 字符索引 = 输入字符串.index("好") 输出字符 = 输入字符串[字符索引] print(输出字符)# 输入:吴老师for吴老师 # 输出:空…