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

做一个决定,并不难,难的是付诸行动,并且坚持到底。
原文地址:https://www.cnblogs.com/wukc/p/13924431.html