windown11系统测试TiDB数据库

104 阅读10分钟

TiDB 主要是为 Linux/Unix 系统设计的。需要先安装 Docker Desktop for Windows,并确认 Docker 已经正常运行,在终端窗口中可以正常执行 docker 命令。

docker安装

参考Windows11操作系统下安装、使用Docker保姆级教程 安装docker会进行多次电脑重启,请确保环境可以进行重启操作。

docker中安装TiDB

Docker 安装 TiDB 的过程可以概括为以下步骤:

  1. 首先,安装 Docker。你可以选择相应的命令来安装,依据你的操作系统的不同而变更。以 Ubuntu 为例,你可以运行以下命令安装 Docker:
    sudo apt-get update
    sudo apt-get install docker.io
    
  2. 之后,你需要拉取 TiDB 的 docker 镜像。在命令行中运行以下指令:
    docker pull pingcap/tidb:latest
    
  3. 在成功拉取镜像后,你可以运行以下命令来启动 TiDB:
    docker run --name tidb-server -d -p 4000:4000 pingcap/tidb:latest
    

这条命令将创建并运行一个名为 tidb-server 的容器,并将 4000 端口映射至宿主机的 4000 端口。 4. 你可以使用以下命令验证 TiDB 是否成功运行: mysql -h 127.0.0.1 -P 4000 -u root 如果你看到了 MySQL 的命令行界面,那么恭喜你,你已经成功运行了 TiDB!

无法拉取TiDB 的 docker 镜像

//命令窗口提示
latest: Pulling from pingcap/tidb
no matching manifest for windows/amd64 10.0.22631 in the manifest list entries

需要将 Docker 切换到 Linux 容器模式下运行,然后再尝试拉取。

  • 在 Windows 系统托盘中找到并点击右键 Docker Desktop 图标。
  • 在弹出的菜单中,点击 “Switch to Linux containers…”
  • 等待 Docker Desktop 重启并切换到 Linux 模式后,再尝试运行拉取镜像的命令,应该就能成功了。

navicat连接TiDB数据库

链接 TiDB 数据库通过 Navicat,可以按照以下步骤进行:

  1. 打开 Navicat,点击左上角的 "连接" 或 "新建连接"。
  2. 在弹出的窗口中,选择 "MySQL"。
  3. 在新的窗口中填入相关信息:
    • 连接名:命名。
    • 主机名/IP 地址:如果你的 TiDB 在本地运行,则填写 "127.0.0.1";如果在服务器上,则填写服务器的 IP 地址。
    • 端口:TiDB 默认端口为 "4000",除非你有特殊修改,否则填写 "4000"。
    • 用户名:如果没有特别设置,就填写 "root"。
    • 密码:TiDB 的 root 用户默认无密码,如果你设置了密码,就填入你的密码。
  4. 点击 "测试连接",如果显示 "连接成功",那么你就成功连接到 TiDB 数据库了。
  5. 点击 "确定",保存你的连接设置。 就这样,你应该已经通过 Navicat 成功连接到 TiDB 数据库了。

使用navicat将mysql数据迁移到TiDB

方式一

  1. 点击navicat上方工具选项,选中数据传输。
  2. 源选择mysql数据库,目标选择TiDB数据库。之后按照提示正常操作即可。 使用这种方式需注意数据库字符编码,目前确认能正常迁移的只有TiDB具备的编码格式.

方式二

  1. 安装并设置 Navicat: Navicat 是一个易用的数据库管理员,它允许你连接到 MySQL 和 TiDB 数据库,使你可以在一个应用程序中同时管理这两个数据库。
  2. 在 MySQL 中备份你的数据: 使用 Navicat 的数据转储功能,可以在 MySQL 中创建一个关于你所有数据库结构和数据的备份文件。
  3. 建立连接到 TiDB: 在 Navicat 中,你需要创建一个新的连接到你的 TiDB 数据库。你会需要知道你的 TiDB 的主机名、端口、用户名和密码。
  4. 导入 MySQL 数据到 TiDB: 当你已经创建了一个连接到你的 TiDB 数据库,你可以使用 Navicat 的数据传输向导来从 MySQL 中导入你的数据。

警告: 尽管 Navicat 可以连接并管理 TiDB,但是并不完全支持所有 TiDB 的特性。在进行数据迁移之前,你应该查看 Navicat 关于 TiDB 的文档和资源来理解它的限制和可能的问题。 最后,虽然 Navicat 是一个流行的工具,但对于大规模的数据库迁移,更推荐使用 TiDB 官方建议的工具,如 TiDB Lightning 以及 Dumpling 进行操作,特别是当涉及到大数据量迁移时,它们可以提供更好的效率和稳定性。

原mysql项目直接使用TiDB数据库

使用若依系统进行测试,将若依原始mysql数据库迁移到TiDB数据库后,直接在application.yml配置为TIDB数据库可正常使用功能,暂未发现不兼容现象。

url: jdbc:mysql://127.0.0.1:4000/数据库?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2B8&allowMultiQueries=true&useSSL=false
user: root
password:

TiDB数据库与mysql数据库那些不同

TiDB 和 MySQL 都是关系型数据库,但是它们在架构和功能上存在一些关键的区别:

  1. 架构:TiDB 使用分布式架构,能够提供海量数据存储和计算能力。On the other hand, MySQL 采用单机架构,会在大数据场景下遇到一些挑战。
  2. 横向扩展:TiDB 提供了自动的弹性扩展能力,可以根据业务量动态调整计算和存储资源,节省了手动扩展的成本。然而,MySQL 在扩展上需要人工干预,如分库分表、读写分离等。
  3. 事务支持:TiDB 支持分布式事务,以及与 MySQL 相似的语法,令迁移到 TiDB 变得更简单。而 MySQL 支持单机事务。
  4. 数据一致性:TiDB 使用 Raft 一致性协议保证数据一致,即使发生故障,也能确保数据一致性。相比之下,MySQL 在数据库集群环境中,可能需要额外的手段来保证数据一致性。
  5. SQL 兼容性:TiDB 目标是与 MySQL 协议、语法 100% 兼容,绝大部分情况下可以无缝替换 MySQL。然而,并非所有 MySQL 的特性 TiDB 都完全支持。 综上所述,MySQL 更适用于单机小型应用,而 TiDB 更适合在需要大规模读写能力和弹性扩展场景的应用下使用。两者具体的使用则需要根据实际的业务需求和场景来决定。

TiDB数据库与mysql数据库有那些语法不同

虽然 TiDB 的目标是要尽可能的与 MySQL 语法保持兼容,但是由于 TiDB 是基于分布式架构,所以仍存在一些与 MySQL 不同的语法特性。以下列出了一些主要的不同点:

  1. 存储引擎:MySQL 支持多种存储引擎,如 InnoDB,MyISAM,Memory等。每种存储引擎都有自身的特性,特定的用途和限制。然而,TiDB 只支持一种存储引擎,也就是 TiKV
  2. 优化器提示:虽然 TiDB 也实现了优化器提示,但并未完全仿照 MySQL。一些 MySQL 中的优化器提示在 TiDB 中可能并不适用。
  3. 分区表:TiDB 在分区表支持上有一些限制,例如不支持 HASH 分区等。
  4. 字符集:关于字符集,MySQL 支持很多种,而 TiDB 只支持 utf8 和 utf8mb4。
  5. 全文索引:TiDB 不支持全文索引,而 MySQL 支持。
  6. 一些特定的 SQL 模式和变量:TiDB 并不全面支持所有的 MySQL sql_mode值。建议在对 TiDB 进行配置时,确保与 MySQL 的 sql_mode 设置相同,以确保兼容性。
  7. 触发器、存储过程和函数:TiDB 的支持比 MySQL 有限。
  8. 外键:TiDB 实际上并不真正支持外键。 这些都是部分的语法差异,因此在考虑从 MySQL 到 TiDB 的迁移时,需要仔细考虑这些因素。在尝试迁移之前,建议进行充分的兼容性测试,并就结果与 TiDB 开发组织进行讨论。

mysql和TiDB在相同配置下数据量逐渐增加性能的对比

针对MySQL和TiDB在相同配置下数据量逐渐增加时的性能对比,根据目前所掌握的信息来看:

  1. 在数据量较轻的情况下,由于需要考虑TiDB内部的通信成本,其优势可能不如MySQL明显。
  2. 当数据规模增大时,TiDB的优势就开始显现。这主要是因为TiDB采用了自研的分布式SQL优化器,这使得在大数据量的情况下,TiDB相较于MySQL性能更优。
  3. 让我们来看一下大数据量场景下的对比,TiDB在除了简单写入应用以外的其他场景的表现,几乎全面优于单机MySQL。这表明TiDB更适合用于单表数据量达到千万量级以上的应用。在单表数据量低于千万的小数据量应用中,使用MySQL可能更为经济,运行更高效。 所以,整体来说,随着数据规模的增大,TiDB的性能优势就越明显,尤其在处理单表数据量巨大的情况时。但在初期或数据规模小的时候,MySQL的性能可能会优于TiDB。

参考博客:

TiDB 5.0 VS MySQL 8.0 性能对比测试 TIDB和MySQL性能对比 TiDB 社区

扩展

Switch to Linux containers…位置

"Switch to Linux containers..."的选项通常在Docker Desktop的系统托盘图标的菜单中。下面是具体操作步骤:

  1. 首先,找到你的系统托盘,位于屏幕右下角(对于大部分Windows用户),你会看到一些图标,这些是正在运行的后台程序。
  2. 在这些图标中找到Docker Desktop的图标,它看起来像一个鲸鱼。
  3. 然后,单击Docker Desktop图标。这将弹出一个菜单。
  4. 在这个菜单中,找到并点击 "Switch to Linux containers..."选项(如果你当前在Windows容器模式下,这个选项应该是可见的)。点击它,Docker就会开始将自身切换到Linux容器模式。

TiKV

TiKV 是一个去中心化的键值存储系统,由 Rust 高性能系统语言编写,是 TiDB 数据库引擎的基础组件之一。以下是关于它的一些主要特性:

  1. 负载均衡:TiKV 使用了滚动哈希和分布式一致性算法(Raft)完成数据之间的负载均衡,有效防止热点问题。
  2. 强一致性:TiKV 使用 Raft 协议确保分布式系统的强一致性,每个数据都有多个副本,确保数据的一致性和高可用性。
  3. 隔离级别:支持隔离级别为『快照隔离』和『读已提交』。
  4. 数据分割:TiKV 自动将数据分割成小块(默认 96MB),并且可以自动迁移,这对于大规模数据处理十分重要。
  5. 可扩展性:你可以通过添加更多的机器扩展 TiKV 的存储和处理能力,TiKV 会自动完成数据的重新分配。
  6. 尽管是一个分布式数据库,TiKV 保持了线性一致性,这意味着你可以像使用单机数据库一样使用它,不需要编写复杂的分布式一致性控制代码。 这些都是 TiKV 的一些主要特性,它再分布式环境中提供了一个强大,稳定,一致性和高可用性的存储解决方案。