Bytebase es una herramienta CI/CD de base de datos que proporciona funciones como auditoría SQL, cambios, retención de archivos y reversión. Este artículo explica brevemente el uso de Bytebase.
1. Instalación
Puede experimentar Bytebase rápidamente a través de la imagen oficial de Docker. El comando es el siguiente:
docker run --init \
--name bytebase \
--platform linux/amd64 \
--restart always \
--publish 5678:8080 \
--health-cmd "curl --fail http://localhost:5678/healthz || exit 1" \
--health-interval 5m \
--health-timeout 60s \
--volume ~/.bytebase/data:/var/opt/bytebase \
bytebase/bytebase:1.12.0 \
--data /var/opt/bytebase \
--port 8080
A continuación, verá el siguiente resultado, que indica que el inicio se realizó correctamente:
2023-02-14T14:05:04.417Z INFO server/server.go:206 -----Config BEGIN-----
2023-02-14T14:05:04.420Z INFO server/server.go:207 mode=prod
2023-02-14T14:05:04.420Z INFO server/server.go:208 dataDir=/var/opt/bytebase
2023-02-14T14:05:04.420Z INFO server/server.go:209 resourceDir=/var/opt/bytebase/resources
2023-02-14T14:05:04.420Z INFO server/server.go:210 externalURL=https://www.bytebase.com/docs/get-started/install/external-url
2023-02-14T14:05:04.420Z INFO server/server.go:211 readonly=false
2023-02-14T14:05:04.420Z INFO server/server.go:212 debug=false
2023-02-14T14:05:04.421Z INFO server/server.go:213 demoName=
2023-02-14T14:05:04.421Z INFO server/server.go:214 backupStorageBackend=LOCAL
2023-02-14T14:05:04.421Z INFO server/server.go:215 backupBucket=
2023-02-14T14:05:04.421Z INFO server/server.go:216 backupRegion=
2023-02-14T14:05:04.421Z INFO server/server.go:217 backupCredentialFile=
2023-02-14T14:05:04.421Z INFO server/server.go:218 -----Config END-------
2023-02-14T14:05:04.558Z INFO server/server.go:248 -----Sample Postgres Instance BEGIN-----
2023-02-14T14:05:04.559Z INFO server/server.go:250 sampleDatabasePort=8083
2023-02-14T14:05:04.559Z INFO server/server.go:251 sampleDataDir=/var/opt/bytebase/pgdata-sample
2023-02-14T14:05:05.501Z INFO server/server.go:255 -----Sample Postgres Instance END-----
2023-02-14T14:05:05.502Z INFO server/server.go:260 -----Embedded Postgres Config BEGIN-----
2023-02-14T14:05:05.502Z INFO server/server.go:261 datastorePort=8082
2023-02-14T14:05:05.502Z INFO server/server.go:262 pgDataDir=/var/opt/bytebase/pgdata
2023-02-14T14:05:05.502Z INFO server/server.go:263 -----Embedded Postgres Config END-----
a2023-02-14T14:05:06.808Z INFO store/pg_engine.go:302 Apply database migration if needed...
2023-02-14T14:05:06.809Z INFO store/pg_engine.go:306 Current schema version before migration: 1.12.6
2023-02-14T14:05:06.811Z INFO store/pg_engine.go:318 The prod cutoff schema version: 1.12.6
2023-02-14T14:05:06.811Z INFO store/pg_engine.go:392 Skip migration 1.0.0; the current schema version 1.12.0 is higher.
2023-02-14T14:05:06.812Z INFO store/pg_engine.go:392 Skip migration 1.1.0; the current schema version 1.12.0 is higher.
2023-02-14T14:05:06.812Z INFO store/pg_engine.go:392 Skip migration 1.2.0; the current schema version 1.12.0 is higher.
2023-02-14T14:05:06.812Z INFO store/pg_engine.go:392 Skip migration 1.3.0; the current schema version 1.12.0 is higher.
2023-02-14T14:05:06.812Z INFO store/pg_engine.go:392 Skip migration 1.4.0; the current schema version 1.12.0 is higher.
2023-02-14T14:05:06.812Z INFO store/pg_engine.go:392 Skip migration 1.5.0; the current schema version 1.12.0 is higher.
2023-02-14T14:05:06.812Z INFO store/pg_engine.go:392 Skip migration 1.6.0; the current schema version 1.12.0 is higher.
2023-02-14T14:05:06.812Z INFO store/pg_engine.go:392 Skip migration 1.7.0; the current schema version 1.12.0 is higher.
2023-02-14T14:05:06.812Z INFO store/pg_engine.go:392 Skip migration 1.8.0; the current schema version 1.12.0 is higher.
2023-02-14T14:05:06.812Z INFO store/pg_engine.go:392 Skip migration 1.9.0; the current schema version 1.12.0 is higher.
2023-02-14T14:05:06.812Z INFO store/pg_engine.go:392 Skip migration 1.10.0; the current schema version 1.12.0 is higher.
2023-02-14T14:05:06.812Z INFO store/pg_engine.go:392 Skip migration 1.11.0; the current schema version 1.12.0 is higher.
2023-02-14T14:05:06.813Z INFO store/pg_engine.go:396 Starting minor version migration cycle from 1.12.0 ...
2023-02-14T14:05:06.813Z INFO store/pg_engine.go:444 Database schema is at version 1.12.6; nothing to migrate.
2023-02-14T14:05:06.896Z INFO store/pg_engine.go:157 Current schema version after migration: 1.12.6
██████╗ ██╗ ██╗████████╗███████╗██████╗ █████╗ ███████╗███████╗
██╔══██╗╚██╗ ██╔╝╚══██╔══╝██╔════╝██╔══██╗██╔══██╗██╔════╝██╔════╝
██████╔╝ ╚████╔╝ ██║ █████╗ ██████╔╝███████║███████╗█████╗
██╔══██╗ ╚██╔╝ ██║ ██╔══╝ ██╔══██╗██╔══██║╚════██║██╔══╝
██████╔╝ ██║ ██║ ███████╗██████╔╝██║ ██║███████║███████╗
╚═════╝ ╚═╝ ╚═╝ ╚══════╝╚═════╝ ╚═╝ ╚═╝╚══════╝╚══════╝
Version 1.12.0 (schema version 1.12.6) has started on port 8080
************* External Visiting URL (--external-url) *************
!!! You have not set --external-url. If you want to make Bytebase
!!! externally accessible, follow:
https://www.bytebase.com/docs/get-started/install/external-url
******************************************************************
___________________________________________________________________________________________
2. Registrador
Después de que Docker se inicie correctamente, abra http://localhost:5678 en el navegador local para abrir la página principal de Bytebase. La primera vez que la abre es la página de registro de administrador:
Complete la dirección de correo electrónico y la contraseña de inicio de sesión en el lugar correspondiente y haga clic en Registrarse. Después de un registro exitoso, saltará automáticamente a la página de la consola después de iniciar sesión:
3. Agrega una instancia
Haga clic en el botón Agregar instancia:
Aparecerá el cuadro de diálogo de creación de instancia:
Complete el nombre de dominio/IP y el puerto de ClickHouse en el cuadro de diálogo Crear instancia, haga clic en Probar conexión y aparecerá un mensaje de éxito en la esquina inferior derecha. En este punto, haga clic en Crear para completar la creación de la instancia. ClickHouse aquí lo inicio localmente. Para mayor comodidad, el funcionario también proporciona el docker-compose.yml correspondiente para iniciar Bytebase y ClickHouse con un clic, y el clickhouse-quickstart.docker-compose.yml de la versión independiente de ClickHouse y la versión de clúster adjunta de clickhouse -cluster-quickstart.docker-compose.yml de ClickHouse
Si ClickHouse también se implementa localmente, debe usar host.docker.internal como nombre de dominio local. Si usa localhost como nombre de dominio local, Bytebase le dará un cálido recordatorio:连接到实例失败。 如果您使用的 Docker 部署,请尝试使用 "host.docker.internal" 作为 Host 地址
4. Crea un proyecto
Una vez creada la instancia, debe crear un proyecto. Haga clic en Proyecto -> Crear proyecto en la barra de menú y aparecerá el siguiente cuadro de diálogo:
Debe nombrar el proyecto "Proyecto ClickHouse" y hacer clic en Crear.
5. Crea una base de datos
Después de tener un proyecto, cree una base de datos en el proyecto y haga clic en Crear base de datos:
Agregue el nombre de datos mydb en el cuadro de diálogo Crear base de datos y luego complete el clúster. El clúster aquí es exclusivo de ClickHouse, es decir, el concepto de clúster en ClickHouse. Debe completarse de acuerdo con la configuración real de ClickHouse. y luego seleccione el entorno, porque al crear una instancia arriba, si seleccionó Prueba, también debe seleccionar Prueba aquí, y luego la instancia de ClickHouse que acaba de crear aparecerá en el cuadro desplegable de instancias a continuación. Finalmente haga clic en Crear.
Nota: Si está utilizando la versión independiente del clúster ClickHouse, no es necesario completarlo, simplemente déjelo en blanco. Si sigue el método de llenado anterior, se informará un error de la siguiente manera:
Le indicará que el valor predeterminado ejecutado en el clúster no existe.
Por lo tanto, el cuadro de entrada del clúster se puede dejar en blanco. Después de una creación exitosa, el resultado es el siguiente:
Puede ver el proyecto ClickHouse y la base de datos denominada db creada correctamente en el entorno de prueba a la izquierda.
6. Crear tabla
Para crear una tabla para la base de datos recién creada, haga clic en Cambiar esquema en el menú Base de datos:
Después de hacer clic en Cambiar esquema, aparecerá el cuadro de diálogo de selección de base de datos de la siguiente manera:
Seleccione la base de datos de datos que acaba de crear arriba y aparecerá la página de creación de tablas:
Ingrese la declaración de creación de la tabla en el cuadro de entrada SQL:
create table tb
(
id UInt32,
name String
) engine MergeTree()
order by id
Al ingresar una declaración, Bytebase mostrará un cuadro emergente para ayudar a los usuarios a completar el SQL, pero la sintaxis SQL de ClickHouse no es SQL estándar, por lo que algunos tipos de datos y tipos de motores de tablas aún no se pueden solicitar correctamente.
Finalmente haga clic en Crear, la página exitosa es la siguiente:
La creación y modificación de tablas en Bytebase se clasifican como operaciones de cambio. Puede ver que habrá un botón de resolución en la esquina superior derecha después de ejecutar SQL. Al hacer clic en resolver aparecerá un cuadro de aviso, que puede usarse para ingresar algunos comentarios. En este punto, la operación de creación o modificación de una tabla se considera completa.
7. Ver historial de cambios
Puede ver todas las operaciones en la instancia viendo el historial de cambios, haciendo clic en el menú de la base de datos y seleccionando la base de datos que desea ver:
8. Ejecutar SQL
Bytebase también proporciona una página amigable de ejecución de SQL:
Puede ejecutar declaraciones SQL en la página. Si desea ejecutar la declaración de inserción como en la imagen de arriba, necesita tener privilegios de administrador. La imagen de arriba es una vista con privilegios de administrador. Los usuarios comunes solo pueden ejecutar select. Las vistas de ordinario los usuarios son los siguientes:
Hasta ahora, se han introducido las funciones básicas de Bytebase, de hecho, Bytebase todavía tiene muchas funciones y diseños detallados por explorar más a fondo.