网站首页 > 文章中心 > 其它

关于tidb使用go语言的信息

作者:小编 更新时间:2023-10-04 11:34:07 浏览量:435人看过

在 ARM64 上面运行 TiDB

用 Go 编译 TiDB 和 PD 比较容易,中途遇到了一个 TiDB 的编译问题,只需要升级下 vendor 就解决了.

在每台测试机器上面,启动一个 PD,一个 TiKV,使用的是默认配置,然后 go-ycsb 使用 100 并发,导入 1 百万数据,操作次数 1 百万,batch size 为 0.

结果如下:

所以后面我们要考虑的事情就是如何让 ARM 能更好的处理网络消息.

tidb使用坑记录

①.、对硬盘要求很高,没上SSD硬盘的不建议使用

解决方案:set @@session.tidb_batch_delete=1;?

解决方案:set @@session.tidb_batch_insert=1;?

delete from 表名 表别名?where?表别名.col = '1' ?会报错

TiDB 基础操作集

①.、测试环境推荐配置

同时需要注意 inventory.ini 及 ansible/conf/tikv.yml 的相关配置.

①.、操作系统版本要求

中控机:

监控机(grafana):

ansible-playbook bootstrap.yml --extra-vars "dev_mode=True"

加上 dev_mode=True 可以在部署时,绕过系统磁盘相关的 benchmark

systemctl status firewalld

systemctl status chronyd/ntpd

参数在 ansible/conf/目录下,tidb.yml,tikv.yml,常见的可能需要调整的参数

tidb.yml:

level:日志级别,默认 info,可以视情况调整为 debug 或 error

tikv.yml:

sync-log:raft-log sync配置,默认值true,对于磁盘 io 消耗较高,测试/非金融生产环境建议设置为 false

多实例情况下,需要修改?

readpool:

coprocessor:

high-concurrency

normal-concurrency

low-concurrency

raftstore:

?capacity

磁盘总容量 / TiKV 实例数量,例如 "100GB"

修改完后,可以使用下面命令验证

cat tidb-ansible/conf/tikv.yml |grep -Ev "^$|#"

无误后执行?

ansible-playbook rolling_update.yml --tags=tidb/tikv

滚动升级,tags 可选

①.、从 MySQL 迁移

TiDB 兼容 MySQL 语法,小数据量建议直接使用 mysqldump、mydumper 来全量导出数据,再通过 source、myloader 的方式导入 TiDB.

详情请参考: 使用-mydumper-loader-全量导入数据

目前有几种方式可以参考

使用 OGG 做全量◆增量同步

使用 Navicat Premium 版的 data transfer 功能,支持从 Oracle/SqlServer 迁移全量数据至 TiDB

通过 kafka 等消息队列工具,解析 OGG 的日志,开发写入 TiDB/MySQL 的工具

目前我们也在积极跟专业的数据异构平台合作,争取能够尽快在更多的数据迁移工具中兼容 TiDB 数据源.

①.、启动集群

ansible-playbook start.yml --tags=tidb/tikv/pd

在正确的 ansible 目录下,确保 inventory.ini 里的配置正确,tags 可选

ansible-playbook stop.yml --tags=tidb/tikv/pd

ansible-playbook stop.yml --tags=tidb/tikv/pd -l IP

-l 后面接 inventory.ini 配置的IP 或别名

TiDB 兼容 MySQL 协议,所有连接 MySQL 的方式都适用于TiDB

常见的图形化界面工具,navicat 等都可以直接访问 tidb

SQL 语法基本兼容 MySQL,某些不兼容的场景见: 与-mysql-兼容性对比

可以通过修改 tidb-ansible/conf/tidb.yml 配置文件,然后执行

select tidb_version();

Git Branch: HEAD

Race Enabled: false

Check Table Before Drop: false

全量备份可以采用 mydumper,增量备份需要开启 binlog,实时恢复采用商业版工具 reparo.

在 ansible 的配置文件 inventory.ini 里,有一个监控服务器的配置

[monitoring_servers]

deploy 的时候会默认在这个配置服务器上部署 grafana 组件,通过

admin/admin? 访问

具体一些常见的监控指标,请参考:

set @@tidb_distsql_scan_concurrency=100;

analyze table xxx index xxx;

修改上面三个参数可以提升 scan 效率.

具体统计信息相关,请参考: 统计信息简介

①.、Transaction too large

TiDB 对于事务有限制,简单来说以下几点:

KV entry 的总大小不超过 100MB

如果是批量 insert 或delete,建议先修改

set tidb_batch_insert = 1;?

set?tidb_batch_delete = 1;

再执行 SQL.

如果是批量 update,建议采用 limit 循环的方式执行.

GC Life Time?间隔时间过短,长事务本应读到的数据可能被清理了,可使用如下命令增加?GC Life Time?:

log 中是否有 panic

dmesg 中是否有 oom,命令:?dmesg -T | grep -i oom

长时间没有访问,也会收到这个报错,一般是 tcp 超时导致的,tcp 长时间不用, 会被操作系统 kill.

tidb数据库和mysql的区别

tidb数据库和mysql的区别为:开发公司不同、事务更新机制不同、事务方式不同.

第一段:开发公司不同

①.、tidb数据库:tidb数据库是北京的创业公司PingCAP的产品.

第二段:事务更新机制不同

①.、tidb数据库:tidb数据库采用乐观锁机制来保证事务更新的一致性和持久性.

第三段:事务方式不同

①.、tidb数据库:tidb数据库使用的是扁平事务.

Go语言的应用

Go语言在云计算、大数据、微服务、高并发领域应用应用非常广泛.BAT大厂正在把Go作为新项目开发的首选语言.

Go语言应用范围:

①.、服务端开发:以前你使用C或者C◆◆做的那些事情,用Go来做很合适,例如日志处理、文件系统、监控系统等;

国内重要的 Go 语言项目:TiDB 3.0 GA,稳定性和性能大幅提升

TiDB 是 PingCAP 自主研发的开源分布式关系型数据库,具备商业级数据库的数据可靠性,可用性,安全性等特性,支持在线弹性水平扩展,兼容 MySQL 协议及生态,创新性实现 OLTP 及 OLAP 融合.

① 优化 Raft 副本之间的心跳机制,按照 Region 的活跃程度调整心跳频率,减小冷数据对集群的负担.

① 新增 Fast Analyze 功能,提升收集统计信息的速度,降低集群资源的消耗及对业务的影响.

① OLTP

① TiDB 持续优化 SQL 执行器,包括:优化 NOT EXISTS 子查询转化为 Anti Semi Join,优化多表 Join 时 Join 顺序选择等.

① 提升 SQL 转化成 KV Pairs 的性能,减少不必要的开销.

RBAC(Role-Based Access Control,基于角色的权限访问控制) 是商业系统中最常见的权限管理技术之一,通过 RBAC 思想可以构建最简单"用户-角色-权限"的访问权限控制模型.RBAC 中用户与角色关联,权限与角色关联,角色与权限之间一般是多对多的关系,用户通过成为什么样的角色获取该角色所拥有的权限,达到简化权限管理的目的,通过此版本的迭代 RBAC 功能开发完成.

IP 白名单功能(企业版特性) :TiDB 提供基于 IP 白名单实现网络安全访问控制,用户可根据实际情况配置相关的访问策略.

Audit log 功能(企业版特性) :Audit log 记录用户对数据库所执行的操作,通过记录 Audit log 用户可以对数据库进行故障分析,行为分析,安全审计等,帮助用户获取数据执行情况.

加密存储(企业版特性) :TiDB 利用 RocksDB 自身加密功能,实现加密存储的功能,保证所有写入到磁盘的数据都经过加密,降低数据泄露的风险.

完善权限语句的权限检查 ,新增 ANALYZE,USE,SET GLOBAL,SHOW PROCESSLIST 语句权限检查.

未来我们会继续投入到系统稳定性,易用性,性能,弹性扩展方面,向用户提供极致的弹性伸缩能力,极致的性能体验,极致的用户体验.

弹性扩展方面,PD 将提供弹性扩展所需的元信息供外部系统调用,外部系统可根据元信息及负载情况动态伸缩集群规模,达成节省成本的目标.

以上就是土嘎嘎小编为大家整理的关于tidb使用go语言的信息相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章