MySQL 工具
常见的工具
- UI 操作工具
- DBeaver 是一款免费的跨平台数据库工具,适用于开发人员、数据库管理员、分析师以及所有从事数据工作的人员
- MYSQL SQL 审核工具
- Liquibase 数据库版本管理工具
- bytebase 在用户与数据库之间的中间件
- 它是数据库 DevOps 的 GitLab/GitHub,专为开发人员、DBA 和平台工程师打造
- Percona Toolkit
- alibaba/canal 阿里巴巴 MySQL binlog 增量订阅&消费组件
- 数据库镜像
- 数据库实时备份
- 索引构建和实时维护(拆分异构索引、倒排索引等)
- 业务 cache 刷新
- 带业务逻辑的增量数据处理
SQL demo
- 请用 sql 语句实现语文、数学、英语成绩的优良差
select stuName as 姓名,
(case when math>80 then '优' when
math<60 then '差' when math<=80 and
math>=60 then '良' end) as 数学,
(case when english>80 then '优' when
english<60 then '差' when english<=80
and english>=60 then '良' end) as 英语,
(case when chinese>80 then '优' when
chinese<60 then '差' when chinese<=80
and chinese>=60 then '良' end) as 语文
from stu_tab
pt
pt-online-schema-change
- 更改表而不锁表,参考
- OPTIMIZE TABLE 对常规和分区 InnoDB 表使用在线 DDL,从而减少并发 DML 操作的停机时间。 OPTIMIZE TABLE 触发的表重建就地完成。仅在操作的准备阶段和提交阶段短暂采用独占表锁。在准备阶段,元数据将被更新并创建中间表。在提交阶段,表元数据更改被提交。MySQL 5.7 之后的版本支持,参考
pt-online-schema-change --alter "ADD COLUMN c1 INT" D=sakila,t=actor
pt-online-schema-change --alter "ENGINE=InnoDB" D=sakila,t=actor
# 添加列
pt-online-schema-change --socket=/var/lib/mysql/mysql.sock --user=root --password=**** D=dbname,t=tbname --alter "add column c1 int " --recursion-method=none --no-check-replication-filters --alter-foreign-keys-method auto --print --execute
# 删除列
pt-online-schema-change --socket=/var/lib/mysql/mysql.sock --user=root --password=**** D=dbname,t=tbname --alter "drop column c1 " --recursion-method=none --no-check-replication-filters --alter-foreign-keys-method auto --print --execute
# 修改列数据类型
pt-online-schema-change --socket=/var/lib/mysql/mysql.sock --user=root --password=**** D=dbname,t=tbname --alter "modify column age varchar(10)" --recursion-method=none --no-check-replication-filters --alter-foreign-keys-method auto --print --execute
# 加大列长度
pt-online-schema-change --socket=/var/lib/mysql/mysql.sock --user=root --password=**** D=dbname,t=tbname --alter "modify column age varchar(100)" --recursion-method=none --no-check-replication-filters --alter-foreign-keys-method auto --print --execute
# 创建索引
pt-online-schema-change --socket=/var/lib/mysql/mysql.sock --user=root --password=**** D=dbname,t=tbname --alter "ADD INDEX IX_AGE(AGE)" --recursion-method=none --no-check-replication-filters --alter-foreign-keys-method auto --print --execute
# 删除索引
pt-online-schema-change --socket=/var/lib/mysql/mysql.sock --user=root --password=**** D=dbname,t=tbname --alter "DROP INDEX IX_AGE" --recursion-method=none --no-check-replication-filters --alter-foreign-keys-method auto --print --execute
# 设置默认值
pt-online-schema-change --socket=/var/lib/mysql/mysql.sock --user=root --password=**** D=dbname,t=tbname --alter "ALTER column age SET DEFAULT 100" --recursion-method=none --no-check-replication-filters --alter-foreign-keys-method auto --print --execute
# 检查从库同步
pt-online-schema-change -P3306 --user=root --password=**** D=dbname,t=tbname --max-lag=1 --check-interval=10 --check-slave-lag=h=192.168.1.12,u=root,p=****,P=3306 --alter "ADD hobby varchar(100) NOT NULL DEFAULT 'sleep' " --recursion-method --alter-foreign-keys-method auto --print --execute