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

猜你喜欢

转载自www.cnblogs.com/ddif/p/9049438.html