一、删除binlog日志
问题触发点是mysql的服务器容量不够,数据量不大,却占用了不少容量,查询出来是因为binlog问题,删除一些比较老的日志即可。
首先登录mysql
1、查看当前日志:
show binary logs;
2、删除某个日志之前的执行下面sql:
purge binary logs to 'mysql-bin.000016';
3、再查看日志已删除,并且硬盘空间已释放。
二、主从,从库不生成binlog日志文件
参考文章:https://blog.csdn.net/huangzx3/article/details/113860173
主要是参考上面的文章,大家可以直接看上面的帖子
主 --> 备1 -- >备2
备1不生成binlog文件,尽管show master status;等所有状态都没有问题。
需要添加:log-slave-updates = ON
重启数据库。
三、解决MySql Waiting for table metadata lock
在处理一些特殊的导出任务,直接本地连接数据导出。导出时发现某张表缺少字段。写好添加字段的sql,但是在执行时该语句却一直卡在:Waiting for table metadata lock。
使用show processinglist,发现也没有什么语句在执行。
百思不解。
最后是因为本地的程序在debug,资源没有释放导致的。将本地的debug程序关掉,瞬间执行完毕。
所以说遇事要细心,很多东西都是细节决定的。
四、忘记root密码后,重置root密码
1、登录安排mysql的服务器找到my.cnf,在[mysqld]下面添加:skip-grant-tables
2、重启mysql:systemctl restart mysqld
3、登录进mysql:mysql -uroot -p mysql,会提示输入密码,直接回车。
4、进后先刷新一下权限,要不然后会报错:ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
5、执行:
flush privileges;
alter user 'root'@'localhost' identified by '123456';
flush privileges;
6、修改my.cnf,将skip-grant-tables去掉,重启mysql。修改成功。