zoukankan      html  css  js  c++  java
  • MySQL DBA 管理常用命令

    一:在Linux下管理MySQL数据库的时候总有一些很紧急的情况,发现数据库突然变得压力很大了,那么作为一个DBA,也许需要一些常用的手段或者说命令去分析问题出现在哪里,然后解决:

        数据库突然产生压力时查看正在查询的SQL:(如果这里内容太多表示并发执行的SQL过多,或许数据库堵塞了,会越来越慢,正常情况下这里应该很少有东西的,也就是连接都在Sleep状态)

    /usr/local/mysql/bin/mysql -uroot -ppassword databaseName  -e “show full processlist” | grep -v Sleep 

        正在运行的SQL太多了,看不过来,那需要排序了,看持续执行时间最长的那些SQL:

    /usr/local/mysql/bin/mysql -uroot -ppassword databaseName  -e “show full processlist” | grep -v Sleep | sort -k6rn >sort.tmp

        如果发现IOWait很高,请查看临时表的生成情况,特别是disk tmp table:

    /usr/local/mysql/bin/mysql -uroot -ppassword databaseName  -e “show global status like ‘%tmp%’“

        通过这样一些办法可以查看数据库都在忙什么,那些忙的SQL又具体在哪一个步骤上卡住了,是在创建磁盘临时文件、Sending Data、statistics?依照不同的原因来解决问题

    ———————————————-

        二:关于Mysql Replication日常管理,重做,问题分析时常用的办法

        重做Slave,或者Master变化等等,需要将Slave与新的Master同步:

    change master to master_host=IP,master_user=’replication userName’,master_password=’replication Passwrod’,master_log_file=’log-bin.000001′,master_log_pos=0;

        导出数据成SQL文本,慎用,根据你的DB大小会锁表,导致堵塞其他访问:

    nohup /usr/local/mysql/bin/mysqldump –database DATABASEName -uUserName -pPassWord –lock-all-tables -F >DATA20070519.sql &

        -F后会刷新Master Log这样配合上面的Change Master可以让Slave进行同步

        只导出数据库的结构(没有任何内容)

    /usr/local/mysql/bin/mysqldump -d DATABASEName -uUserName -pPassWord >DATA20070519.structure

        只导出数据库的数据(没有创建表结构的语句等等)

    /usr/local/mysql/bin/mysqldump -t DATABASEName -uUserName -pPassWord >DATA20070519.data

        同步的时候出现问题(或者其他问题)了,根据同步出现问题的位置(偏移量),查看Binlog的具体内容

    /usr/local/mysql/bin/mysqlbinlog binlogFileName –start-position=偏移量

        呵呵,我们碰到过Master执行的SQL到了Slave会报语法错误,够诡异吧!不过就是这样查到了原因:如果通过存储过程将bit的内容改为1就会出现这样的问题,后来将bit改为tinyint(1)就好了    授权给某一台Slave拥有复制的权限:

    grant replication slave on *.* to 用户名@IP identified by ‘密码’;

        查看Slave状态:

    Show slave status G

        查看Master状态:

    Show master status;

        重置Slave(慎用)

    reset slave;

        Slave出现问题了,先跳过这一条语句(请确认所要跳过的具体内容不会影响后面的同步,确认方法查看Binlog文件):

    set global sql_slave_skip_counter=1; (记得先暂停Slave:stop slave; 然后重启Slave:start slave;)

    ———————————————–

         三:纯粹Linux相关的:

    tcpdump -A “dst port 3306″ 查看3306端口的通信具体内容

    http://ourmysql.com/archives/206

  • 相关阅读:
    10 个深恶痛绝的 Java 异常。。
    为什么公司宁愿 25K 重新招人,也不给你加到 20K?原因太现实……
    推荐一款代码神器,代码量至少省一半!
    Spring Cloud Greenwich 正式发布,Hystrix 即将寿终正寝。。
    hdu 3853 LOOPS(概率 dp 期望)
    hdu 5245 Joyful(期望的计算,好题)
    hdu 4336 Card Collector(期望 dp 状态压缩)
    hdu 4405 Aeroplane chess(概率+dp)
    hdu 5036 Explosion(概率期望+bitset)
    hdu 5033 Building (单调栈 或 暴力枚举 )
  • 原文地址:https://www.cnblogs.com/zping/p/7646077.html
Copyright © 2011-2022 走看看