• 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

  • 相关阅读:
    使用EFCore连接现有数据库
    C#面试题总结
    xamarin学习--发布apk安装包
    xamarin学习--导航参数注意事项
    centos8 安装 gitlab
    mvc添加全局过滤器
    Windows平台查看端口占用情况
    asp.net core cli---创建一个不启用https的项目
    asp.net core cli
    启动nuxt项目报错WARN node unsupported "node@v8.9.3" is incompatible with chalk@^4.1.0, expec...
  • 原文地址:https://www.cnblogs.com/zping/p/7646077.html
Copyright © 2020-2023  润新知