Mysql篇

作者: 公瑾丶醉 | 来源:发表于2017-04-12 17:12 被阅读0次

    1.数据删除
    背景:服务器是虚拟机,硬盘只有50G,数据库中error表,60万的报警数据,已经达到50G,导致磁盘已满。也未打算进行数据归档,需要删除表中部分无用的数据。遇到的问题和解决办法.

    • 死锁现象
      通过mysql show processlist检查mysql死锁的方法
      SUPER权限,则可以看到全部的线程;否则只能看到自己发起的线程
      注:MySQL帐户运行的线程、Kill掉死锁的进程
    • 删除数据太慢
      在考虑删除部分数据时,开始考虑直接用delete from tablename where (符合的条件),那么如何来删除呢?
      当时首先采取编写php脚本的方法,通过浏览器执行,结果出现超时终止程序。因为php默认脚本执行超时是30秒,php.ini中的max_execution_time变量指定,服务器会在30秒强行终止正在执行的程序。
    • 为了解决超时问题,可以通过修改php.ini的脚本执行时间限制的方法,也可以通过用php的函数取消脚本时间限制,当然还有其他的方法.我采取了用Set_time_limit(0)来解决超时的问题。
      注:set_time_limit用来设置脚本的超时时间,此函数规定从该句运行是起程序必须在指定的秒数内运行结束,超时则程序出错退出
      秒数为0时,表示该脚本没有时间限制
    • 其实我们完全用命令行去运行php脚本就可以解决php执行超时的问题。再后来直接通过mysql后台执行sql语句就行,没有必要写php脚本。
      但是问题又出现了,sql语句执行相当缓慢,删除1万条数据(数据里面包含大量的详细报警信息,所以数据很大)需要1个小时。
      当然不是索引的问题,不过最终还是找到了解决办法,在where指定id段范围,sql执行起来就会相当的快。
      2. Mysql服务启动
      背景:服务器本身自带mysql数据库,sa人员安装了新的mysql数据库,启动的数据库时,该如何启动指定的mysql。
      当时启动mysql服务,只知道要通过etc/init.d/mysql start,通过和dba沟通,才知道不管启动的那个mysql,其实都是指向一个库的。所以如果跟mysql版本没有多大关系的时候启动那个都没有关系,他们共用一个my.cnf配置文件。
      /mysqld_safe --defaults-file=/etc/my.cnf --user=root &
        除了去对应的目录下去启动mysql服务,我们还可以怎么启动指定的mysql服务?
      mysql/share/mysql.server拷贝到etc/init.d目录下即可。原来我们启动的服务其实就是mysql/share/mysql.server,只不过默认在etc/init.d下存在一个mysql.server的别名mysql。
      3. Mysql运行
        Mysql -u root -p时,出现如下错误:
      ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

    Mysql.sock是mysql主机和客户机在同一host(物理服务器)上的时候,使用unix domain socket作为通讯协议的载体,它比tcp快.通常遇到上述问题是由于mysql服务没有运行起来

    4. Mysql导数据
      由于sql文件大于4G,在linux用unzip命令解压zip压缩包是不成功的,需要用7zip软件,命令格式:7z e filename
      大数据导入:mysql>source 相关路径/filename.sql文件即可
    无法登陆系统,登录系统时,返回信息报错信息如下:

    Mysqld connot connect to MySql 4.1+using the old insecure authentication
    解决方法:
    mysql> set old_passwords=0;
    mysql> update user set password=password("123") where user='root'; mysql> flush privileges; 
    mysql> exit;
    

    相关文章

      网友评论

        本文标题:Mysql篇

        本文链接:https://www.haomeiwen.com/subject/dzimattx.html