我的docker随笔42:TiDB数据库部署

这篇具有很好参考价值的文章主要介绍了我的docker随笔42:TiDB数据库部署。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文介绍 TiDB 数据库的容器化部署。

起因

前段时间,国产化替换提上了日程,有关部门(这个真的是某部门)作为领导身份介入,因此,需启动相应的事情,但最近似乎没有什么动静。因为身份问题,只好私下做一些力所能及的事。

数据库方面,有同事已经对接上达梦,当前只是安装了达梦数据库,加了技术群,然后就没有然后了。因为一些原因,没有对此研究很深,恰好看到 TiDB,高度兼容 MySQL,在 github 上是开源的,而且是用 golang 写的,天然有好感,于是花点时间接触。

既然是国产化,操作系统也要考虑国产的,当然还是 Linux 操作系统,硬件芯片则必须是 arm64(aarch64)的。奇怪的是,在网上搜索资料, arm 平台的实践很少,docker 镜像又没有更新,即使在 arm64 平台的系统上拉取镜像,却还是 x86 架构的,或者无法运行。无奈,只能自己从头开始了。

一般地,TiDB 都是使用集群方式部署,作为起步,使用非集群方式,即将其作为 MySQL 的简单替换。

本文介绍的内容有:下载 TiDB 源码,编译,打包镜像,程序测试。

初识TiDB

本节介绍一些基础知识。

  • TiDB 项目地址:https://github.com/pingcap。文档中心:https://docs.pingcap.com/zh/tidb/stable。

  • TiDB 高度兼容 MySQL 5.7 协议、MySQL 5.7 常用的功能及语法。

  • TiDB 有2个版本,长期支持版本 (Long-Term Support Releases, LTS) 、开发里程碑版本 (Development Milestone Releases, DMR) 。前者约每六个月发布一次,后者约每两个月发布一次。

  • 标识符长度最长为 64 字符。如数据库名、表名、字段名等。

  • 单个表的列数据最大限制为1017,最大可调至 4096。

环境准备

由于要编译,因此需安装 docker 以及 golang。本文所用的版本如下:

# docker -v
Docker version 20.10.3, build 48d30b5
# go version
go version go1.20.2 linux/arm64

golang 环境变量配置:

export PATH=$PATH:/usr/local/go/bin
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
export GOPROXY=https://goproxy.io,direct

服务端部署

下载镜像(失败)

下载官方镜像:

# docker pull pingcap/pd-arm64
Using default tag: latest
Error response from daemon: manifest for pingcap/pd-arm64:latest not found: manifest unknown: manifest unknown

注:笔者没有找到官方可用的镜像。

源码编译

下载源码,本文所用版本:tidb-server v6.5.2。下载文件为tidb-6.5.2.tar.gz

将压缩包上传到服务器,解压,进入工程目录,下载依赖包:

# go mod vendor

编译:

# make server
fatal: 不是一个 git 仓库(或者任何父目录):.git
...
CGO_ENABLED=1 GO111MODULE=on go build  -tags codes  -ldflags '-X "github.com/pingcap/tidb/parser/mysql.TiDBReleaseVersion=" -X "github.com/pingcap/tidb/util/versioninfo.TiDBBuildTS=2023-05-28 07:42:53" -X "github.com/pingcap/tidb/util/versioninfo.TiDBGitHash=" -X "github.com/pingcap/tidb/util/versioninfo.TiDBGitBranch=" -X "github.com/pingcap/tidb/util/versioninfo.TiDBEdition=Community" ' -o bin/tidb-server ./tidb-server
Build TiDB Server successfully!

注:可能为了国际化,写入的编译时间戳使用UTC时间。

tidb-server使用

编译成功后,在bin目录下有tidb-server,即为服务程序。可参考-h查看使用帮助。

./bin/tidb-server -h

简单的选项,列举如下:

-P 指定端口,默认4000
-config 指定配置文件
-log-file 指定日志文件,可带目录,不存在则自动创建
-path 数据存储目录,默认为/tmp/tidb

注:配置文件可参考 https://kgithub.com/pingcap/tidb-docker-compose/blob/master/config/tidb.toml

制作镜像

主要参考官方的Dockerfile,由于是手工编译,因此直接拷贝最终的二进制文件即可,完整内容如下:

# cat Dockerfile-arm 
FROM rockylinux:9-minimal

COPY tidb-server /tidb-server

WORKDIR /
EXPOSE 4000 
ENTRYPOINT ["/tidb-server"]

容器启动脚本

docker-compose.yaml文件:

# cat docker-compose.yaml 
version: '3.8'

services:
  tidb:
    image: "arm64v8/tidb:6.5.2" 
    container_name: tidb
    hostname: tidb
    restart: always
    #command: "sh ./myrun-arm.sh"
    command:
      - --config=/tidb.toml
      - --log-file=/logs/tidb.log
    volumes:
      - ./config/tidb.toml:/tidb.toml:ro
      - ./logs:/logs
      - ./tidb_data:/data/tidb
      - /usr/bin/qemu-aarch64-static:/usr/bin/qemu-aarch64-static
    environment:
      - AA=aa
    ports:
      - "4000:4000"
      - "10080:10080"
    networks:
      - my-net

networks:
  my-net:
    name: "my-tidb"
    driver: bridge

文件说明:

  • 使用command指定程序启动的选项,
  • 将配置文件、日志目录、数据目录挂载到宿主机。
  • 由于在一台x86服务上测试,因为挂载了qemu-aarch64-static程序。
  • 导出2个端口,目前只使用4000。

启动:

docker-compose up -d

客户端使用

客户端使用mysql命令行、Navicat等图形化工具,可以正常连接、使用。

Mysql测试

启动容器。

也可以直接运行数据库服务程序,作为测试,可不加参数,如下:

./bin/tidb-server

创建用户及修改root密码

默认情况下,tidb没有设置密码,可连接数据库自行添加,示例:

mysql -h 127.0.0.1 -P 4000 
use mysql;

# 创建latelee用户
CREATE USER 'latelee'@'%' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'latelee'@'%' WITH GRANT OPTION;

# 修改root密码
ALTER USER 'root' IDENTIFIED BY '123456';

小结

限于能力,本文仅将tidb作为普通的数据库程序使用,而像集群,可能要到后续才能研究,因为当务之急是替换掉mysql

mysql容器启动时,可以指定账号信息,也可指定初始化mysql脚本。后续有时间参考官方文档,将该机制迁移到tidb中。

出错处理

本节列出一些错误信息记录。

TiDB 没有完全支持 mysql 数据库的所有字符集,测试发现如下错误:

ERROR 1115 (42000) at line 227 in file: 'mysql/sql/mytest.sql': Unknown character set: 'utf8mb3'
ERROR 1146 (42S02) at line 245 in file: 'mysql/sql/mytest.sql': Table 'testdb.userinfo' doesn't exist

解决方法:文章来源地址https://www.toymoban.com/news/detail-657187.html

将 utf8mb3 改为 utf8mb4,utf8mb3_general_ci 改为 utf8mb4_general_ci

到了这里,关于我的docker随笔42:TiDB数据库部署的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • TiDB数据库从入门到精通系列之六:使用 TiCDC 将 TiDB 的数据同步到 Apache Kafka

    快速搭建 TiCDC 集群、Kafka 集群和 Flink 集群 创建 changefeed,将 TiDB 增量数据输出至 Kafka 使用 go-tpc 写入数据到上游 TiDB 使用 Kafka console consumer 观察数据被写入到指定的 Topic (可选)配置 Flink 集群消费 Kafka 内数据 部署包含 TiCDC 的 TiDB 集群 在实验或测试环境中,可以使用 TiU

    2024年02月12日
    浏览(54)
  • Docker 部署 MongoDB 数据库

    https://www.mongodb.com/zh-cn 缩主机上创建 mongo/configdb/mongod.conf https://hub.docker.com/_/mongo 指定服务执行器与缓存大小 https://hub.docker.com/_/mongo-express 查看默认登录账号密码 注意: 默认登录账号密码是 admin/pass ,docker配置中已经将登录账号密码设置为 admin/123456 http://localhost:8081/ http:/

    2024年04月27日
    浏览(32)
  • 分布式数据库(DorisDB、Clickhouse、TiDB)调研

    B站视频:DorisDB VS ClickHouse OLAP PK 1.1 DorisDB 场量:线上数据应用 访问官方网站 DorisDB企业版文档 单表/多表查询,DorisDB总体时间最短 单表查询:DorisDB最快次数最多,ClickHouse次之 多表查询:DorisDB所有执行均最快 DorisDB多表关联效率好 支持各种主流分布式Join,不仅支持大宽表模

    2024年02月06日
    浏览(43)
  • 【NewSQL】-- 分布式数据库 TiDB 和 CockroachDB

          国产骄傲。从2015年开始,至今已8年,当前最新版本是7.5.x。TiDB 开源分布式 NewSQL 关系型数据库 是新一代开源分布式 NewSQL 数据库,模型受 Google Spanner / F1 论文的启发,实现了自动的水平伸缩,强一致性的分布式事务,基于 Raft 算法的多副本复制等重要 NewSQL 特性。  

    2024年01月21日
    浏览(57)
  • 【产品兼容认证】WhaleStudio 成功兼容TiDB数据库软件

    北京,2023年12月27日 - 平凯星辰(北京)科技有限公司(以下简称平凯星辰)旗下的 TiDB 产品与白鲸开源的 WhaleStudio 已成功完成产品兼容性认证。这一重要合作旨在为全球客户提供更大的价值。 WhaleStudio 是一款由 Apache DolphinScheduler 和 SeaTunnel 核心团队打造的商业版高性能分布

    2024年01月24日
    浏览(40)
  • 使用docker部署postgreSQL数据库

    随着docker的广泛应用,为了提供便利的管理,PostgreSQL数据库也支持docker的安装方式。下面详细介绍docker安装PostgreSQL数据库的方法。 1、查看下载数据库镜像命令 访问dockerhub官网:https://registry.hub.docker.com/ 地址,下载指定版本的postgresql数据库。 2、执行下载命令 在安装有doc

    2024年02月11日
    浏览(54)
  • Docker部署Mysql数据库详解

    目录   1. Docker部署Mysql 1.1 Mysql容器 1.1.1 创建Mysql容器 1.1.2 进入Mysql容器并登录Mysql 1.1.3 持久化数据  1.2 远程登录Mysql 1.2.1 修改root加密方式 1.2.2 在容器启动时配置加密方式为mysql_native_password  1.3 Mysql编码 1.3.1 Mysql编码问题  1.3.2 Mysql编码问题解决办法 送书活动   Docker是一种

    2024年02月13日
    浏览(42)
  • 使用docker部署pg数据库

    使用 Docker 部署 PostgreSQL 数据库是一种常见的做法,它提供了方便、可移植和可重复的方式来运行数据库。下面是一个简单的示例,用于在 Docker 中部署 PostgreSQL 数据库: 首先,确保您已经安装了 Docker 并正确配置了 Docker 环境。 打开终端或命令提示符,并执行以下命令来下载

    2024年02月10日
    浏览(47)
  • 负载均衡–HAProxy安装及搭建tidb数据库负载服务

    作为一名开发人员,随着经验的增加和技术的沉淀,需要提高自己架构方面的知识,同时对于一个企业来说,搭建一套高可用、高性能的技术架构,对于公司的业务开展和提高服务的性能也是大有裨益的。本文重点从软件安装和搭建tidb负载均衡数据库服务介绍下HAProxy的使用

    2024年02月13日
    浏览(39)
  • 基于docker容器部署MySQL数据库

    一,概要.... 2 二,环境准备.... 3 2.1,docker部署.... 3 三,使用docker部署mysql 6 3.1、创建数据存放目录.... 6 3.2、创建bridge网络并指定IP区间.... 6 3.3、Docker安装MySQL. 6 3.4、自定义配置.... 7 四,MySQL简单的配置.... 9 4.1、在容器 mysql 中开启一个交互模式的终端.... 9 4.2、mysql登录....

    2024年02月04日
    浏览(71)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包