阿里数据库文件存储(DBFS,Database File Storage)是一种将数据库文件存储在云上的服务,它允许用户将数据库的数据文件(如数据文件、日志文件等)直接存储在阿里云的对象存储(OSS)上,从而提供更高的可扩展性、可靠性和成本效益。
相比于其他云存储产品,DBFS的优势如下:
对比项 | DBFS | 云盘 | 共享云盘 | NAS |
高性能 | 支持原子写、用户态、数据库关键IO加速等。为数据库基于云端存储构建的最佳解决方案,性能高于其单纯基于云盘构建。 | 一般基于ext4构建,不支持原子写、不支持数据库关键IO加速。内核态数据拷贝影响性能。 | 需要安装第三方商业集群文件系统后才能使用,需要购买商业license。例如:Veritas CFS、Oracle ACFS、OCFS2等。不支持原子写、不支持数据库关键IO加速。内核态数据拷贝影响性能。 | 通用型文件存储。内核态客户端,不支持原子写、不支持数据库关键IO加速。针对非数据库场景而设计。 |
存储容量 | 最大容量256TB。在线扩容友好。 | 最大容量32TB。需要上层文件系统支持在线扩容。目前ext4等文件系统在线扩容时会有不同程度的IO hang。(IO hang是指在系统运行过程中,因某些IO耗时过长而引起的系统不稳定甚至宕机) | 最大容量32TB。需要上层集群文件系统进行扩容,扩容复杂,扩容周期长,不支持在线扩容。 | 最大容量1PB。 |
易用性 | 兼容POSIX文件接口,部署简单,挂载即用。 | 需要手工格式化成ext4等内核态文件系统。 | 上层集群文件系统构建复杂,需资深专家部署和测试。交付周期长,成本高。 | 客户端挂载。支持在线扩容。 |
共享读写 | 共享高并发读写、IO级数据一致性、线性扩展等。 | 不支持。 | 支持。但需要部署上层第三方商业集群文件系统后,才可使用。 | 支持。但不支持对同一个文件的高并发读写以及IO级的数据一致性保护。 |
协议支持 | POSIX文件接口,提供与本地文件系统一样的访问方式。 | 块接口。 | 块接口。 | NFS、SMB协议等。不支持部分POSIX语义。非数据库引擎专用协议。 |
以下是开发者如何使用阿里数据库文件存储(DBFS)的详细步骤和代码实现:
前提条件
- 阿里云账号:确保你有一个有效的阿里云账号。
- 阿里云OSS:已经创建了一个OSS Bucket。
- 阿里云DBFS:已经开通了DBFS服务,并创建了DBFS实例。
- 数据库实例:已经有一个数据库实例(如MySQL、PostgreSQL等),并希望将其文件存储迁移到DBFS。
步骤一:开通并配置DBFS
- 登录阿里云首页,在产品标签处找到数据库文件存储DBFS。
- 点击产品控制台,登录产品控制台。
- 开通DBFS服务:在控制台中搜索“数据库文件存储DBFS”,并按照提示开通服务。
- 创建DBFS实例:
开通服务后,点击“创建数据库文件系统”按钮,进入创建页面。
填写以下信息:
- 地域:选择数据库文件存储实例所在的物理位置。
- 可用区:选择数据库文件存储实例所在的可用区。
- 版本类型:选择标准版或企业版。企业版DBFS支持共享挂载给多台ECS使用。
- 实例规格:根据实际需求选择实例规格,具体规格说明可参考阿里云官方文档。
- 使用场景:选择使用数据库文件存储的应用场景。
- 性能等级:容量越大,可供选择的性能级别越高。一般来说,460GB以上可选PL2性能等级,1260GB以上可选PL3性能等级。性能级别越高,相应的费用也越高。
- 存储加密:建议开启存储加密,以最大限度保护数据安全。开启后,您的业务和应用程序无需做额外的改动。
- 条带化:选择是否使能RAID0条带化。使能后可获得更大的容量和更高的性能,默认条带宽度为8。目前仅企业版支持此功能。
- 购买容量:申请的最大可支持的存储容量,可按需在线扩容。
填写完成后,点击“立即购买”按钮,提交创建申请。
步骤二:挂载DBFS到数据库实例
- 获取挂载信息:在DBFS实例详情页面,获取挂载所需的访问密钥、Bucket名称、挂载路径等信息。
- 登录数据库实例:使用SSH或其他方式登录到你的数据库实例。
- 安装并配置DBFS客户端:
- 根据数据库类型,下载并安装相应的DBFS客户端。
- 配置DBFS客户端,使其能够访问OSS。
步骤三:配置数据库使用DBFS
- 修改数据库配置文件:
- 找到数据库的配置文件(如MySQL的
my.cnf
,PostgreSQL的postgresql.conf
)。 - 修改数据目录(datadir)或其他相关文件目录,指向DBFS挂载的路径。
- 重启数据库服务:
- 重启数据库服务以使配置生效。
步骤四:代码实现(示例)
以下是一个简单的示例,展示如何在MySQL中使用DBFS。假设你已经完成了上述所有配置步骤。
1. 安装DBFS客户端(假设为MySQL)
通常,DBFS客户端的安装和配置由阿里云提供,具体步骤可以参考阿里云官方文档。这里假设你已经安装并配置好了DBFS客户端。
2. 修改MySQL配置文件
找到MySQL的配置文件my.cnf
,并修改数据目录:
ini复制代码 [mysqld] datadir=/mnt/dbfs/mysql_data # 指向DBFS挂载的路径
3. 重启MySQL服务
bash复制代码 sudo systemctl restart mysqld
4. 验证DBFS是否生效
登录MySQL,并检查数据文件是否存储在DBFS挂载的路径上:
bash复制代码 mysql -u root -p SHOW VARIABLES LIKE 'datadir'; # 确认数据目录
然后,你可以在OSS控制台中查看相应的Bucket,确认数据文件是否已经上传到OSS。
注意事项
- 权限管理:确保数据库实例有权限访问OSS Bucket。可以使用阿里云的身份与访问管理(RAM)服务来管理用户身份和资源访问权限。
- 备份与恢复:定期备份数据库数据,以防数据丢失。提供了自动备份和手动备份的选项,您可以根据需求选择合适的备份策略。
- 性能监控:监控DBFS的性能,确保数据库运行正常。可以根据业务需求调整DBFS的性能参数,如吞吐量、IOPS等。
总结
通过以上步骤,开发者可以将数据库文件存储迁移到阿里数据库文件存储(DBFS)上,从而享受云存储带来的诸多优势。具体实现过程中,需要根据数据库类型和阿里云提供的文档进行详细的配置和调试。