背景

nikeodong之前做了项目的数据库主从,在全备的过程发现数据库是越来越大了;最后发现是资源不释放的问题。

目的

为了解决mysql资源不释放的问题。

步骤

1、vim /etc/my.cnf,关闭log_bin日志。

2、导出数据库sql:time mysqldump -q -uroot -p'dpENoKNhG#y0w4sK' --max_allowed_packet=128M --net_buffer_length=16M -e --all-databases > XXXX.sql

3、删除mysql的data日志

  1. 通过命令:show variables like 'datadir',找到data目录
  2. 或者通过vim /etc/my.cnf-->找到里面的datadir的值,找到data目录

4、重新导入表空间:mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/home/data/mysql --default-storage-engine=INNODB&

5、重新开启lob_bin日志

注意:在执行第二步的时候可能会报错

报错:Error: Table "mysql"."innodb_index_stats" not found。如下是解决方法

  1. 显示有几个系统表不存在.
  2. innodb_table_stats
  3. innodb_index_stats
  4. 或者
  5. slave_master_info
  6. slave_relay_log_info
  7. slave_worker_info
  8. 这是因为数据库初始化的时候,dba可能删除过ibdata1文件
  9. 虽然重启之后,数据库会自动创建一个ibdata1文件,因为是innodb引擎,所以不能访问了.
  10. 解决的方法如下:
  11. 删除上述系统表
  12. drop table mysql.innodb_index_stats;
  13. drop table mysql.innodb_table_stats;
  14. drop table mysql.slave_master_info;
  15. drop table mysql.slave_relay_log_info;
  16. drop table mysql.slave_worker_info;
  17. 删除相关的.frm .ibd文件
  18. rm -rf innodb_index_stats*
  19. rm -rf innodb_table_stats*
  20. rm -rf slave_master_info*
  21. rm -rf slave_relay_log_info*
  22. rm -rf slave_worker_info*
  23. 重新创建上述系统表
  24. CREATE TABLE `innodb_index_stats` (
  25. `database_name` varchar(64) COLLATE utf8_bin NOT NULL,
  26. `table_name` varchar(64) COLLATE utf8_bin NOT NULL,
  27. `index_name` varchar(64) COLLATE utf8_bin NOT NULL,
  28. `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  29. `stat_name` varchar(64) COLLATE utf8_bin NOT NULL,
  30. `stat_value` bigint(20) unsigned NOT NULL,
  31. `sample_size` bigint(20) unsigned DEFAULT NULL,
  32. `stat_description` varchar(1024) COLLATE utf8_bin NOT NULL,
  33. PRIMARY KEY (`database_name`,`table_name`,`index_name`,`stat_name`)
  34. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin STATS_PERSISTENT=0;
  35. CREATE TABLE `innodb_table_stats` (
  36. `database_name` varchar(64) COLLATE utf8_bin NOT NULL,
  37. `table_name` varchar(64) COLLATE utf8_bin NOT NULL,
  38. `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  39. `n_rows` bigint(20) unsigned NOT NULL,
  40. `clustered_index_size` bigint(20) unsigned NOT NULL,
  41. `sum_of_other_index_sizes` bigint(20) unsigned NOT NULL,
  42. PRIMARY KEY (`database_name`,`table_name`)
  43. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin STATS_PERSISTENT=0;
  44. CREATE TABLE `slave_master_info` (
  45. `Number_of_lines` int(10) unsigned NOT NULL COMMENT 'Number of lines in the file.',
  46. `Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the master binary log currently being read from the master.',
  47. `Master_log_pos` bigint(20) unsigned NOT NULL COMMENT 'The master log position of the last read event.',
  48. `Host` char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT 'The host name of the master.',
  49. `User_name` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The user name used to connect to the master.',
  50. `User_password` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The password used to connect to the master.',
  51. `Port` int(10) unsigned NOT NULL COMMENT 'The network port used to connect to the master.',
  52. `Connect_retry` int(10) unsigned NOT NULL COMMENT 'The period (in seconds) that the slave will wait before trying to reconnect to the master.',
  53. `Enabled_ssl` tinyint(1) NOT NULL COMMENT 'Indicates whether the server supports SSL connections.',
  54. `Ssl_ca` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The file used for the Certificate Authority (CA) certificate.',
  55. `Ssl_capath` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The path to the Certificate Authority (CA) certificates.',
  56. `Ssl_cert` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The name of the SSL certificate file.',
  57. `Ssl_cipher` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The name of the cipher in use for the SSL connection.',
  58. `Ssl_key` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The name of the SSL key file.',
  59. `Ssl_verify_server_cert` tinyint(1) NOT NULL COMMENT 'Whether to verify the server certificate.',
  60. `Heartbeat` float NOT NULL,
  61. `Bind` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'Displays which interface is employed when connecting to the MySQL server',
  62. `Ignored_server_ids` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The number of server IDs to be ignored, followed by the actual server IDs',
  63. `Uuid` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The master server uuid.',
  64. `Retry_count` bigint(20) unsigned NOT NULL COMMENT 'Number of reconnect attempts, to the master, before giving up.',
  65. `Ssl_crl` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The file used for the Certificate Revocation List (CRL)',
  66. `Ssl_crlpath` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The path used for Certificate Revocation List (CRL) files',
  67. `Enabled_auto_position` tinyint(1) NOT NULL COMMENT 'Indicates whether GTIDs will be used to retrieve events from the master.',
  68. PRIMARY KEY (`Host`,`Port`)
  69. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Master Information';
  70. CREATE TABLE `slave_relay_log_info` (
  71. `Number_of_lines` int(10) unsigned NOT NULL COMMENT 'Number of lines in the file or rows in the table. Used to version table definitions.',
  72. `Relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the current relay log file.',
  73. `Relay_log_pos` bigint(20) unsigned NOT NULL COMMENT 'The relay log position of the last executed event.',
  74. `Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the master binary log file from which the events in the relay log file were read.',
  75. `Master_log_pos` bigint(20) unsigned NOT NULL COMMENT 'The master log position of the last executed event.',
  76. `Sql_delay` int(11) NOT NULL COMMENT 'The number of seconds that the slave must lag behind the master.',
  77. `Number_of_workers` int(10) unsigned NOT NULL,
  78. `Id` int(10) unsigned NOT NULL COMMENT 'Internal Id that uniquely identifies this record.',
  79. PRIMARY KEY (`Id`)
  80. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Relay Log Information';
  81. CREATE TABLE `slave_worker_info` (
  82. `Id` int(10) unsigned NOT NULL,
  83. `Relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  84. `Relay_log_pos` bigint(20) unsigned NOT NULL,
  85. `Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  86. `Master_log_pos` bigint(20) unsigned NOT NULL,
  87. `Checkpoint_relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  88. `Checkpoint_relay_log_pos` bigint(20) unsigned NOT NULL,
  89. `Checkpoint_master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  90. `Checkpoint_master_log_pos` bigint(20) unsigned NOT NULL,
  91. `Checkpoint_seqno` int(10) unsigned NOT NULL,
  92. `Checkpoint_group_size` int(10) unsigned NOT NULL,
  93. `Checkpoint_group_bitmap` blob NOT NULL,
  94. PRIMARY KEY (`Id`)
  95. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Worker Information';

在执行删除表的时候报错也没关系,一直从头走到尾就好。

完成之后查看一下大小

du -sh /var/lib/mysql 看看数据库是否瘦身成功

数据库--释放mysql数据库资源的更多相关文章

  1. Oracle,SQL Server 数据库较MySql数据库,Sql语句差异

    原文:Oracle,SQL Server 数据库较MySql数据库,Sql语句差异 Oracle,SQL Server 数据库较MySql数据库,Sql语句差异 1.关系型数据库 百度百科 关系数据库 ...

  2. SQL Server数据库和MySQL数据库有什么区别?

    SQL Server数据库和MySQL数据库有什么区别呢?详细很多初入IT行业的朋友对于SQL Server数据库和MySQL数据库经常搞混,认为这两种数据库是同一种,其实不然,今天我们来分析一下这两 ...

  3. postgresql数据库和mysql数据库的对比分析

    1.Posgresql是进程模式,多进程,单线程,类似的还有Oracle.而MYSQL采用的是线程模式,单进程,多线程,对此,大家在运行数据库的时候可以查看任务管理器,SQL Server也是如此. ...

  4. Oracle数据库和MySQL数据库的不同之处

    1.体积不同. Oracle它体积比较庞大,一般是用来开发大型应用(例如分布式)的.而MySQL的体积相对来说比较小,较之Oracle更容易安装.维护以及管理,操作也简单,最重要的是它是三个中唯一一个 ...

  5. 数据库分页--MySQL数据库

    关于实现MySQL分页的最简单的方法就是利用mysql数据库的limit函数:limit [offset,] rows SELECT * FROM 表名称 LIMIT M,N limit 子句可以被用 ...

  6. sqlserver数据库导入Mysql数据库问题

    近来遇到一个问题,之前的项目用的是SQLServer数据库,但是现在要换成MySQL数据库,所有整理了一些数据导入的步骤,供需要的人参考! 第一步: 第二步: 第三步: 第四步: 第五步: 第六步: ...

  7. Django中把SQLite数据库转换为Mysql数据库的配置方法

    我们在学习和开发Django的时候,一般是使用SQLite作为数据库.在正式讲网站部署上线是用MySQL数据库比较多.MySQL支持高并发的访问,而且相对于SQLite,MySQL性能更好.下面讲讲如 ...

  8. Python数据库(二)-Mysql数据库插入数据

    通过python连接mysql数据库,并插入数据 # -*- coding:utf-8 -*- __author__ = "MuT6 Sch01aR" import pymysql ...

  9. Python数据库(一)-Mysql数据库的连接

    首先需要安装pymysql模块 然后用pymysql连接mysql并执行命令来查看数据 连接mysql数据库后需要创建游标来执行SQL语句 # -*- coding:utf-8 -*- __autho ...

随机推荐

  1. 1、在eclipse中导入Java的jar包方法---JDBC【图文说明】

    1.Eclipse环境下jar包导入 在Eclipse环境下编写Java程序,常常会借用到各种jar包.如:连接数据库时,导入jar包是必须的.导入方法如下: 1.打开eclipse,右击要导入jar ...

  2. Linux与mv命令结合,移动文件至指定目录

    转自:http://blog.csdn.net/hardwin/article/details/7711635 把当前目录下面的file(不包括目录),移动到/opt/shell find  .  - ...

  3. CCNP第一课:默认路由(路由黑洞,路由终结)

    一:功能实现 R1的环回口由R3控制下放,下放之后R4才可以ping通 代码: R1: 只需要一条静态路由,能回包就行了 ip route 20.1.1.0 255.255.255.0 10.1.1. ...

  4. 一个html页面传入参数到另一个html页面用js获取方法

    没错使用以下函数就能够完整的获取到路径里的你想要的参数:function getURLParameter(name) { return decodeURIComponent((new RegExp(' ...

  5. 小K的H5之旅-HTML的基本结构与基本标签

    一.什么是HTML HTML是超文本标签语言,即网页的源码.而浏览器就是翻译解释HTML源码的工具. 二.HTML文档的结构 HTML文档主要包括三大部分:文档声明部分.<head>头部部 ...

  6. mybatis中$和#java代码演示

    MyBatis mapper文件中的变量引用方式#{}与${}的差别 内容来源:http://blog.csdn.net/szwangdf/article/details/26714603 默认情况下 ...

  7. Spring框架之IOC(控制反转)

    [TOC] 第一章Spring框架简介 IOC(控制反转)和AOP(面向方面编程)作为Spring框架的两个核心,很好地实现了解耦合.所以,简单来说,Spring是一个轻量级的控制反转(IoC)和面向 ...

  8. SQL构架(转)

    在一次的实际工作中碰到以下情况,在 SQL SERVER 2008中,新建了一个新用户去访问几张由其他用户创建的表,但是无法进行查询,提示“对象名'CustomEntry' 无效.”.当带上了架构名称 ...

  9. Blend在WPF开发过程中的作用

    WPF开发时,用VS2012就足够了,因为里面的确有控件拖放编辑和便利的带输入自动完成的xaml编辑器. 但是在需要改变某些控件的样式时,特别是style和template是,看网上搜到的教程,洋洋洒 ...

  10. 解决其他浏览器没有propertychange事件

    监听实现: /** * Listener.js * 此类用于解决非ie下,通过js改变input的值时, * 无法触发其事件的问题(如:onpropertychange, oninput, oncha ...