zoukankan      html  css  js  c++  java
  • mysql的一些问题处理及优化

    1、MySQL Sleep线程过多如何解决?

      1、可以杀掉sleep进程,kill PID
      2、修改配置,重启服务

         [mysqld]
        wait_timeout = 600
        interactive_timeout=30

        #如果生产服务器不可随便重启可以使用下面的方法解决

        set global wait_timeout=600
        set global interactive_timeout=30;

    2、sort_buffer_size参数作用?如何在线修改生效?

    在每个connection(session)第一次连接时需要使用到,来提访问性能
    set global sort_buffer_size = 2M

    3、如何在线正确清理MySQL binlog?

    MySQL中的binlog日志记录了数据中的数据变动,便于对数据的基于时间点和基于位置的恢复
    但日志文件的大小会越来越大,点用大量的磁盘空间,因此需要定时清理一部分日志信息

    手工删除:

    首先查看主从库正在使用的binlog文件名称
    show master(slave) statusG

    删除之前一定要备份
    purge master logs before’2017-09-01 00:00:00’;

    #删除指定时间前的日志
    purge master logs to’mysql-bin.000001’;

    #删除指定的日志文件

    自动删除:

    通过设置binlog的过期时间让系统自动删除日志

    show variables like ‘expire_logs_days’;
    et global expire_logs_days = 30;

    #查看过期时间与设置过期时间
    4、Binlog工作模式有哪些?各什么特点,企业如何选择?

    1.Row(行模式);

    日志中会记录成每一行数据被修改的形式,然后在slave端再对相同的数据进行修改

    2.Statement(语句模式)

    每一条修改的数据都会完整的记录到主库master的binlog里面,在slave上完整执行在master执行的sql语句

    3.mixed(混合模式)

    结合前面的两种模式,如果在工作中有使用函数 或者触发器等特殊功能需求的时候,使用混合模式
    数据量达到比较高时候,它就会选择 statement模式,而不会选择Row Level行模式

    5、误操作执行了一个drop库SQL语句,如何完整恢复?

    1、停止主从复制,在主库上执行锁表并刷新binlog操作,接着恢复之前的全备文件(比如0点的全备)

    2、将0点时的binlog文件与全备到故障期间的binlog文件合并导出成sql语句
    mysqlbinlog --no-defaults mysql-bin.000011 mysql-bin.000012 >bin.sql

    3、将导出的sql语句中drop语句删除,恢复到数据库中
    mysql -uroot -pmysql123 < bin.sql

    mysqldump备份使用了-A -B参数,如何实现恢复单表?

    -A 此参数作用是备份所有数据库(相当于–all-databases)
    -B databasename 备份指定数据(单库备份使用)

    MySQL如何实现双向互为主从复制,并说明应用场景?

    双向同步主要应用于解决单一主库写的压力,具体配置如下

    主库配置
    [mysqld]
    auto_increment_increment = 2 #起始ID
    auto_increment_offset = 1 #ID自增间隔
    log-slave-updates

    从库配置
    [mysqld]
    auto_increment_increment = 2 #起始ID
    auto_increment_offset = 2 #ID自增间隔
    log-slave-updates

    主从库服务器都需要重启mysql服务

    MySQL主从复制故障如何解决?

    登陆从库

    1、执行stop slave;停止主从同步
    2、然后set global sql_slave_skip_counter = 1;跳过一步错误
    3、最后执行 start slave;并查看主从同步状态

    需要重新进行主从同步操作步骤如下

    进入主库
    1、进行全备数据库并刷新binlog,查看主库此的状态
    2、恢复全备文件到从库,然后执行change master
    3、开启主从同步start slave;并查看主从同步状态

    6、MySQL数据库如何实现读写分离?

    1、通过开发程序实现
    2、通过其它工具实现(如mysql-mmm)

    7、MySQL高可用方案有哪些,各自特点,企业如何选择?

    高可用方案有
    1、主从架构
    2、MySQL+MMM
    3、MySQL+MHA
    4、mysql+haproxy+drbd
    5、mysql+proxy+amoeba

    做一个决定,并不难,难的是付诸行动,并且坚持到底。
  • 相关阅读:
    SpringBoot初识日志
    SpringBoot配置文件(2)
    SpringBoot配置文件(1)
    java8新特性之stream流
    java8新特性之Lambda表达式
    Java入门——第一个Java程序HelloWorld(Dos命令窗口)
    Invalid bound statement (not found): com.xxx.xxx.dao.ShopMapper.insertShop
    2019总结过去,规划未来
    进程和线程的区别
    python(tuple元组、scalar types:数字类型、字符类型、类型转换)
  • 原文地址:https://www.cnblogs.com/wukc/p/13924431.html
Copyright © 2011-2022 走看看