sql问题处理
批量杀死MySQL连接
select concat('KILL ',id,';') from information_schema.processlist where Info like 'select%' into outfile '/tmp/a.txt';
select concat('KILL ',id,';') from information_schema.processlist where Info like 'select%';
source /tmp/a.txt;
http://www.jb51.net/article/65718.htm
切换atlas 从库
mysql -uxxx -pxxx -h127.0.0.1 -P2345
mysql> select * from help;
mysql> select * from backends;
Change Tables
update tablename set 'key'='value' where username='';
MySql ab
change master to master_host="192.168.xxx",master_port=3306,master_user="rep",master_password="123456",master_log_file="mysql-bin.000003",master_log_pos=619;
change master to master_host="192.168.xxx",master_user="root",master_password="xxxx",master_log_file="mysql-bin.000001",master_log_pos=107;
set global rpl_semi_sync_slave_enabled=1
mysqldump -uroot -pxxxx --host=192.168.xxx --databases abc --master-data=2 > abc.sql
mysqldump -uroot -pxxxx--host=192.168.xxx --all-databases --master-data=1 > 20161130.sql
MySql跳过slave 错误
stop slave;
set global sql_slave_skip_counter =1 ;
start slave;
查询mysql引擎
看你的mysql现在已提供什么存储引擎:
mysql> show engines;
看你的mysql当前默认的存储引擎:
mysql> show variables like '%storage_engine%';
你要看某个表用了什么引擎(在显示结果里参数engine后面的就表示该表当前用的存储引擎):
mysql> show create table 表名;
清理binlog 方法
1、进入从服务器mysql控制台 show slave statusG; 检查从服务器正在读取哪个日志,有多个从服务器,选择时间最早的一个做为目标日志。
2、进入主服务器mysql控制台 show binary logs; #获得主服务器上的一系列日志
PURGE MASTER LOGS TO 'binlog.000058'; 删除binlog.000005之前的,不包括binlog.000058
PURGE MASTER LOGS BEFORE '2016-06-22 13:00:00'; #清除2016-06-22 13:00:00前binlog日志
PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY); #清除3天前binlog日志
mysql主从快速恢复方法
主库备份:
#mysqldump -uroot -p --all-databases --master-data=1 > 20180224wdb.sql
#mysql -uroot -pxxx -e "show databases;"| grep -Ev "Database|information_schema|performance_schema|mysql" |xargs
mysqldump -uroot -pxxx -B accesslog census jxxx2013 aaaa -F -R --master-data=1 --events > 20180225wdb.sql
从库备份:
mysqldump -uroot -pxxx -B accesslog census jxxx2013 aaaa > rdb2_20180301.sql
在从库上恢复备份数据,恢复主从同步
#将主库备份拷贝至从库
#在做同步之前要确保数据已经处理或者修复完成
#恢复数据前确保主从slave进程已经停止
nohup mysql -uroot -pxxx < 20180225wdb.sql &
#恢复完成后再start slave
---------------------------------------------------------------
https://www.linuxidc.com/Linux/2016-07/133529.htm 参考文档
mysqlcheck -c mysql -uroot -pxxx表状态检测
--master-data[=#] 在备份导出的文件里追加二进制binlog文件的位置和名称
如果值等于1,就会添加一个CHANGE MASTER语句
如果值等于2,就会在CHANGE MASTER语句前添加注释(不起作用了呗~)
这个参数会--lock-all-tables锁表,除非你指定了--single-transaction
这种情况下,锁表只会在dump开始的时候持续一小段时间,照理说
在dump的时候,任何动作都会影响到binlog文件
dump结束之后,选项会自动关闭锁表功能
--routines, -R导出存储过程以及自定义函数。
--flush-logs, -F请注意:假如一次导出多个数据库(使用选项--databases或者--all-databases),将会逐个数据库刷新日志。
除使用--lock-all-tables或者--master-data外。
在这种情况下,日志将会被刷新一次,相应的所以表同时被锁定。因此,如果打算同时导出和刷新日志应该使用--lock-all-tables 或者--master-data 和--flush-logs。
--events, -E导出事件。
mysqldump命令详解
https://www.cnblogs.com/liuriqi/p/4207310.html