什么是PolarDB?
PolarDB是阿里巴巴自主研发的云原生数据库产品,基于PostgreSQL、MySQL和Oracle三种引擎构建。PolarDB采用存储计算分离架构,具有高性能、高扩展性和高可用性等特点。
PolarDB开源版是阿里云在2021年开源的云原生数据库,具有以下特点:
- 计算与存储分离架构
- 共享存储设计
- 快速弹性扩展
- 高可用性保障
- 100%兼容PostgreSQL/MySQL
环境准备
在开始使用PolarDB前,请确保你的系统满足以下要求:
- Linux操作系统(推荐CentOS 7+或Ubuntu 18.04+)
- 至少4核CPU
- 8GB以上内存
- 50GB以上磁盘空间
- Docker环境(可选)
安装PolarDB
方法一:使用Docker快速部署
bash
# 拉取PolarDB-PG镜像docker pull polardb/polardb_pg_local_instance:single # 运行容器docker run -it --cap-add=SYS_PTRACE --privileged=true --name polardb_pg_single \ -d polardb/polardb_pg_local_instance:single # 进入容器docker exec -it polardb_pg_single bash # 启动数据库su postgres pg_ctl start
方法二:源码编译安装
bash
# 克隆PolarDB源码git clone https://github.com/ApsaraDB/PolarDB-for-PostgreSQL.git# 安装依赖sudo yum install -y gcc gcc-c++ readline-devel zlib-devel flex bison # 编译安装cd PolarDB-for-PostgreSQL ./build.sh
基本使用
连接数据库
bash
# 使用psql连接psql -h 127.0.0.1 -p 5432 -U postgres
创建数据库
sql
CREATE DATABASE testdb;
创建表
sql
CREATE TABLE users ( id SERIAL PRIMARY KEY, name VARCHAR(100), email VARCHAR(100) UNIQUE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
插入数据
sql
INSERT INTO users (name, email) VALUES ('张三', 'zhangsan@example.com');INSERT INTO users (name, email) VALUES ('李四', 'lisi@example.com');
查询数据
sql
SELECT * FROM users;
高级特性
1. 计算节点扩展
PolarDB支持动态添加计算节点:
bash
# 添加只读节点ALTER SYSTEM ADD READONLY NODE 'node2' WITH ( HOST = '192.168.1.2', PORT = 5432 );
2. 存储自动扩容
PolarDB存储空间会自动扩容,无需人工干预。
3. 并行查询
sql
-- 启用并行查询SET max_parallel_workers = 8;SET max_parallel_workers_per_gather = 4; -- 执行并行查询EXPLAIN ANALYZE SELECT * FROM large_table WHERE condition = 'value';
4. 全局索引
sql
-- 创建全局索引CREATE GLOBAL INDEX idx_name ON users (name);
性能优化建议
- 合理设置共享内存参数:
- sql
ALTER SYSTEM SET shared_buffers = '8GB';
- 优化WAL配置:
- sql
ALTER SYSTEM SET wal_level = 'replica';ALTER SYSTEM SET synchronous_commit = 'off';
- 使用连接池:
- 推荐使用PgBouncer管理连接
- 定期维护:
- sql
VACUUM ANALYZE;
监控与维护
查看集群状态
sql
SELECT * FROM polar_cluster_status;
监控性能
sql
-- 查看活跃查询SELECT * FROM pg_stat_activity; -- 查看表统计信息SELECT * FROM pg_stat_user_tables;
常见问题解决
- 连接数不足:
- sql
ALTER SYSTEM SET max_connections = 500;
- 内存不足:
- sql
ALTER SYSTEM SET work_mem = '64MB';ALTER SYSTEM SET maintenance_work_mem = '256MB';
- 存储空间不足:
- PolarDB会自动扩容,但需要确保底层存储系统有足够空间
总结
PolarDB开源版作为一款云原生数据库,结合了传统关系型数据库的稳定性和云计算的弹性优势。通过本教程,你已经学会了PolarDB的基本安装、配置和使用方法。在实际生产环境中,建议参考官方文档根据具体业务需求进行更详细的配置和优化。