0
1
0
0
专栏/.../

TiDB 黑科技工具集之 dbops

 Jayjlchen  发表于  2025-06-15

一、背景

TiDB 兼容 MySQL,实际项目中常常需要做各类测试工作:

  • 测试将 MySQL 迁移到 TiDB
  • 测试 DM ,需要部署上游 MySQL

手动部署 MySQL 操作繁琐、易出错,dbops 提供了一套专注于部署 MySQL 的自动化脚本工具,简化整个流程。

二、环境需求

  • Linux x86_64 系统
  • SSH 可直连目标主机,并具备 root 或 sudo 权限
  • Python 3

三、软件下载安装

下载 dbops 二进制包,并解压到 /usr/local/

dbops_version="1.11.20250429"
wget https://gitee.com/fanderchan/dbops/releases/download/dbops.${dbops_version}/dbops.${dbops_version}-Linux-x86_64.tar.gz
tar -zxvf dbops.${dbops_version}-Linux-x86_64.tar.gz -C /usr/local/

四、Ansible 安装与初始化

dbops 内置了 portable Ansible 以保证兼容性:

cd /usr/local/dbops/portable-ansible-v0.5.0-py3
sh setup_portable_ansible.sh
source ~/.bashrc
ansible --version

五、dbops 配置

编辑主机清单 hosts.ini,指定目标 MySQL 节点:

vi /usr/local/dbops/mysql_ansible/inventory/hosts.ini

[dbops_mysql]
172.16.201.42 ansible_user=root ansible_ssh_pass='root密码'

若需要自定义 MySQL 版本、监听端口等参数,可修改 common_config.yml

vi /usr/local/dbops/mysql_ansible/playbooks/common_config.yml

mysql_version: "8.0.24"
mysql_port: 3308
...
server_specs: "1c1g"
...

可选:突破版本限制

dbops.1.11.20250429 版本仅支持部署 MySQL 8.0.28+,为了突破这个限制,需修改:

vi /usr/local/dbops/mysql_ansible/playbooks/pre_tasks/validate_common_config_setting.yml

修改 8.0.28 -> 8.0.24

修改模板默认值,注释低版本不兼容的参数:

vi /usr/local/dbops/mysql_ansible/roles/mysql_server/templates/8.0/my.cnf.j2

#performance_schema_consumer_events_statements_cpu
#terminology_use_previous=BEFORE_8_0_26

六、一键部署

dbops 不仅仅支持部署单机 MySQL,其他的部署操作,请查看作者的官方文档。

  • single_node.yml 部署单实例 MySQL
  • master_slave.yml 部署主从架构 MySQL
  • mha.yml 部署 MHA 架构 MySQL
  • mgr.yml 部署 MGR 架构 MySQL

切换到 playbooks 目录,执行单节点部署:

cd /usr/local/dbops/mysql_ansible/playbooks
ansible-playbook single_node.yml

部署输出信息中,没有 failed 即部署成功。

七、登录与验证

切换到 mysql 用户,并使用 dbops 提供的快捷命令登录:

[root@vm172-16-201-42 playbooks]# su mysql
[mysql@vm172-16-201-42 playbooks]$ db3308
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.24 MySQL Community Server - GPL

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

(vm172-16-201-42:3308)admin@localhost-16:51:49 [(none)]>

八、后话

已给 dbops 作者提 issue ,已在 dbops.1.12.20250529 版本支持 MySQL 8.0.21 ~ 8.0.27 的部署支持。

0
1
0
0

版权声明:本文为 TiDB 社区用户原创文章,遵循 CC BY-NC-SA 4.0 版权协议,转载请附上原文出处链接和本声明。

评论
暂无评论