在《python 统计MySQL表信息》这篇博客中,链接如下:

https://www.cnblogs.com/xiao987334176/p/9901692.html

 

已经统计出来了一个MySQL服务器的所有表信息,但是还不够,还缺2个列。分别是备注和是否使用

库名 表名 表说明 建表语句 备注 是否使用
db1 users 用户表 CREATE TABLE `users` (...)  
  log2   CREATE TABLE `log2` (...) 废弃

 

 

 

 

注意:前4列,我用python统计出来了,那么后2列,怎么办呢?

作为一名运维人员,你是不知道线上每个表的使用情况的,但是开发人员是知道的。所以最后2列,扔给开发去填写。

千万不要自作主张的去写,否则,你懂的...

 

OK,历经2天的时间,表终于整理完了。大概有1万条记录!

领导需要将不使用的表,全部删除掉。但是有一个前提:删除之前,一定要做备份。

 

二、MySQL表备份问题

怎么备份呢?有2个方案

1. 使用mysqldump 备份单个表,也就是要删除的表

2. 使用xtraBackup备份mysql

 

那么这2个方案,该如何选择呢?如果你不知道怎么选的时候,可以先用排除法!

mysqldump

先来看第一种方案,使用mysqldump 备份单表

mysqldump -h主机ip -u用户名 -p密码 数据库名 表名> 文件位置.sql

 

注意:对于千万级别以上的表,这个sql文件会非常的大。有办法缩小吗?有,使用gzip

 

gzip

mysqldump 备份并压缩sql文件

mysqldump -h主机ip -u用户名 -p密码(也可不输入) 数据库名 表名  | gzip > 压缩后文件位置.sql.gz

 

mysql直接用压缩文件恢复

gunzip < backupfile.sql.gz | mysql -u用户名 -p密码(也可不输入) 数据库名

 

一个16M的sql文件,使用gzip之后,可以压缩到2.2M。但是我们要知道,备份千万级别的表,非常耗时。

它需要一行行读取,并写入到备份文件中。这还只是单表的情况下,几千张表,就无法想象了!

所以不予采用

 

xtraBackup

具体使用方法,请参考以下链接:

http://blog.51cto.com/xiao987334176/1693176

 

它是基于文件式的备份,MySQL的数据库的信息,都写在文件中,那么我使用xtraBackup拷贝文件,比用mysqldump 一行行读取快多了!

所以,准予采用!

 

三、编写python 删除脚本

在贴完整代码之前,先来说几个小的知识点,有助于理解代码。

pymysql执行mysql命令

 这是一个查看所有数据库的

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pymysql

class MysqlHelp(object):
    def __init__(self):
        self.username = "root"
        self.password = ""
        self.host = "localhost"
        self.port = 3306  # 注意,必须是数字

    def connect(self):  # 连接mysql
        conn = pymysql.connect(
            host=self.host,  # mysql ip地址
            user=self.username,
            passwd=self.password,
            port=self.port  # mysql 端口号,注意:必须是int类型
        )
        return conn

    def command(self,sql):
        cur = self.connect().cursor()  # 创建mysql游标
        cur.execute(sql)
        ret = cur.fetchall()  # 执行结果
        return ret

all_database = MysqlHelp().command('show databases')
print(all_database)
View Code

相关文章:

  • 2021-11-30
  • 2021-12-03
  • 2021-08-07
  • 2021-11-30
  • 2021-11-11
  • 2021-11-04
  • 2022-12-23
猜你喜欢
  • 2021-12-06
  • 2021-06-28
  • 2022-12-23
  • 2021-08-01
  • 2022-12-23
  • 2021-11-07
相关资源
相似解决方案