
yugabytedb/yugabyteYugabyteDB 是一款高性能、云原生分布式SQL数据库,旨在支持所有PostgreSQL特性。它最适合云原生OLTP(即实时、业务关键)应用,这类应用需要绝对的数据正确性,且至少满足以下一项需求:可扩展性、高故障容忍能力、全球分布式部署。
Yugabyte SQL(简称YSQL)复用PostgreSQL的查询层(类似Amazon Aurora PostgreSQL),支持其大部分特性,包括数据类型、查询、表达式、运算符与函数、存储过程、触发器、扩展等。YSQL支持的特性详情。
事务设计基于Google Spanner架构,通过Raft共识实现写操作的强一致性复制,使用混合逻辑时钟(hybrid logical clocks)支持集群级分布式ACID事务。支持快照隔离(Snapshot)和可序列化隔离(Serializable)级别。默认情况下读操作(查询)具有强一致性,可动态调整为从副本读取。
YugabyteDB原生支持故障转移和自动修复,能有效应对常见故障。可配置为自动容忍磁盘、节点、可用区、区域及云服务商级别的故障。典型部署(单区域多可用区)下,RPO为0(故障时无数据丢失),RTO为3秒(故障节点数据3秒内恢复可用)。
为提升IOPS或数据存储容量,扩展YugabyteDB集群只需添加节点,操作简单高效。
可部署于公有云及Kubernetes环境,支持跨多故障域(多可用区、多区域、多云)部署。支持xCluster异步复制,包括单向主从和双向多主配置,适用于双区域部署。同时支持只读副本,以低延迟提供(非实时)数据服务。
查询层具备可扩展性,当前支持两种分布式SQL API:
基于Apache 2.0许可证完全开源,开源版本包含企业级特性:分布式备份、静态数据加密、传输中TLS加密、变更数据捕获(CDC)、只读副本等。
单节点本地部署:
bashdocker run -d --name yugabyte \ -p 5433:5433 -p 7000:7000 -p 9000:9000 -p 9042:9042 \ yugabytedb/yugabyte:latest \ bin/yugabyted start --daemon=false --ui=true
多节点集群部署(使用docker-compose):
yamlversion: '3' services: yb-master-1: image: yugabytedb/yugabyte:latest command: > bin/yb-master --master_addresses=yb-master-1:7100,yb-master-2:7100,yb-master-3:7100 --rpc_bind_addresses=yb-master-1:7100 --fs_data_dirs=/mnt/disk0 ports: - "7000:7000" volumes: - yb-master-1-data:/mnt/disk0 yb-master-2: image: yugabytedb/yugabyte:latest command: > bin/yb-master --master_addresses=yb-master-1:7100,yb-master-2:7100,yb-master-3:7100 --rpc_bind_addresses=yb-master-2:7100 --fs_data_dirs=/mnt/disk0 volumes: - yb-master-2-data:/mnt/disk0 yb-master-3: image: yugabytedb/yugabyte:latest command: > bin/yb-master --master_addresses=yb-master-1:7100,yb-master-2:7100,yb-master-3:7100 --rpc_bind_addresses=yb-master-3:7100 --fs_data_dirs=/mnt/disk0 volumes: - yb-master-3-data:/mnt/disk0 yb-tserver-1: image: yugabytedb/yugabyte:latest command: > bin/yb-tserver --tserver_master_addrs=yb-master-1:7100,yb-master-2:7100,yb-master-3:7100 --rpc_bind_addresses=yb-tserver-1:9100 --ysql_bind_address=yb-tserver-1:5433 --ycql_bind_address=yb-tserver-1:9042 --fs_data_dirs=/mnt/disk0 ports: - "5433:5433" - "9042:9042" volumes: - yb-tserver-1-data:/mnt/disk0 depends_on: - yb-master-1 - yb-master-2 - yb-master-3 volumes: yb-master-1-data: yb-master-2-data: yb-master-3-data: yb-tserver-1-data:
通过YSQL连接(兼容PostgreSQL客户端):
bashdocker exec -it yugabyte bin/ysqlsh -h localhost -U yugabyte -d yugabyte
通过YCQL连接:
bashdocker exec -it yugabyte bin/ycqlsh localhost 9042
sql-- 创建表 CREATE TABLE users ( id SERIAL PRIMARY KEY, name VARCHAR(50) NOT NULL, email VARCHAR(100) UNIQUE NOT NULL ); -- 插入数据 INSERT INTO users (name, email) VALUES ('Alice', '***'); -- 查询数据 SELECT * FROM users;
YugabyteDB支持多种语言及客户端驱动,以下为常用语言与驱动对照表:
| 语言 | ORM | YSQL驱动 | YCQL驱动 |
|---|---|---|---|
| Java | Spring/Hibernate | PostgreSQL JDBC | cassandra-driver-core-yb |
| Go | Gorm | pq | gocql |
| NodeJS | Sequelize | pg | cassandra-driver |
| Python | SQLAlchemy | psycopg2 | yb-cassandra-driver |
| Ruby | ActiveRecord | pg | yugabyte-ycql-driver |
| C# | EntityFramework | npgsql | CassandraCSharpDriver |
| C++ | - | libpqxx | cassandra-cpp-driver |
| C | - | libpq | - |
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务