MySQL管理工具MySQL Utilities — mysqlmetagrep实际应用(37)

默北 MySQLMySQL管理工具MySQL Utilities — mysqlmetagrep实际应用(37)已关闭评论7,610字数 1430阅读4分46秒阅读模式

假设你管理着一堆的数据库服务器,数千的数据库对象。需要查找出某个对象,可能只知道某一部分等等,也可能需要检查下是否存在。无论如何,通过搜索所有的数据库对象来匹配某个模式将需要很长的时间。幸运的是,我们可以使用mysqlmetagrep 工具来完成这项任务。

实例

查找包含‘cost’的所有对象。文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlmetagrep-practical-application/

shell> mysqlmetagrep --server=root:root@localhost --body --pattern='%cost%'
+------------------------+--------------+--------------+----------+-------------+------------------+
| Connection             | Object Type  | Object Name  | Database | Field Type  | Matches          |
+------------------------+--------------+--------------+----------+-------------+------------------+
| root:*@localhost:3306  | FUNCTION     | adjust_cost  | griots   | ROUTINE     | adjust_cost      |
| root:*@localhost:3306  | TABLE        | supplies     | griots   | COLUMN      | cost             |
| root:*@localhost:3306  | TABLE        | film         | sakila   | COLUMN      | replacement_cost |
+------------------------+--------------+--------------+-----------------+-------------+-------------+
shell> mysql -uroot -proot -e "SHOW CREATE FUNCTION griots.adjust_cost \G"
*************************** 1. row ***************************
            Function: adjust_cost
            sql_mode: 
     Create Function: CREATE DEFINER=`root`@`localhost` FUNCTION `adjust_cost`(cost double) 
     RETURNS double DETERMINISTIC
return cost * 1.10
character_set_client: latin1
collation_connection: latin1_swedish_ci
  Database Collation: latin1_swedish_ci

在这个实例中,我们使用到数据库模式'%cost%'来查找所有符合‘cost’的对象。同时,使用--body选项来查找存储对象和函数。文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlmetagrep-practical-application/

我们查找到一个函数adjust_cost,通过SHOW CREATE FUNCTION命令来查看函数体。因此,不仅仅可以查找对象名称包含cost,也可以查找任何逻辑里面可能包含cost。文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlmetagrep-practical-application/

权限

用户必须有对mysql数据库的SELECT权限。文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlmetagrep-practical-application/

小技巧

如果使用正则表达式,可以指定--regexp选项来使用正则表达式,而不是数据库模式。如上面的例子可以写成:--pattern='^.*cost.*' --basic-regex。文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlmetagrep-practical-application/ 文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlmetagrep-practical-application/

weinxin
我的微信
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~
默北
  • 本文由 发表于 31/03/2015 01:00:16
  • 转载请务必保留本文链接:https://www.ttlsa.com/mysql/mysqlmetagrep-practical-application/