工作中积累的一些语句
慢查询日志
-s,是order的顺序 t 时间
mysqldumpslow -s t slow.log>slow.taime.log
mysqldumpslow -s c slow.log>slow.count.log
查看存储过程信息
show procedure status
显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过程名称,创建时间等
show create procedure sp_name
显示某一个存储过程的详细信息
备份sp
mysqldump -uroot -ppassword "--where=db='configdb2cem2'" --no-create-info mysql proc >proc.sql
数据库迁移
mysqldump -uroot -ppassword wp_training | mysql -h 10.0.0.41 -uroot -ppassword wp_training
数据库复制
GRANT all ON *.* TO IDENTIFIED BY 'slavepass';
stop slave;
CHANGE MASTER TO
MASTER_HOST='192.168.1.51',
MASTER_USER='repl',
MASTER_PASSWORD='slavepass',
MASTER_LOG_FILE='mysql-bin.000119',
MASTER_LOG_POS=333776004;
START SLAVE;
----------
复制错误
slave stop;
忽略行数
set global SQL_SLAVE_SKIP_COUNTER = 1062;
忽略错误
--slave-skip-errors=name
mysqld --help --verbose|grep skip
mysql复制的时候遇到错误就停在哪里, 需要手工去出错, 例如这个错误:
1062 | Error 'Duplicate entry 'adfadfadf' for key 1' on query. Default database: 'xx_db'. Query: 'INSERT INTO ...
假如只是一两条错误, 机器也很少, 哪倒是无所谓, 用下面的方法就可以了.
mysql>SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql>slave start;
当你有很多繁忙的数据库, 维护总是让你很忙的时候. 假如在数据要求不是那么高的时候, 也有一个方法让你没有烦恼, 在slave的my.cnf里面写入.
slave-skip-errors = 1062
-------------------------------------------------------------
定期清除mysql bin log
查看/etc/mysql/my.cnf ,发现
expire-logs-days = 20
把expire-logs-days 设成3,然后在mysql命令行执行
PURGE MASTER LOGS TO 'mysql-bin.000930';
即可删除930之前的binlog
用这个语句可以清除3天前的binlog,
PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY);
所以另外还有个方法定期删除binlog:
在contab设置:
0 1 * * * `mysql -uroot -e 'PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY);'`
--------------------
查看mysql日志
mysqlbinlog mysql-bin.000008
mysqlbinlog查看position(检查复制问题用到)
mysqlbinlog --start-position=753871857 mysql-bin.000008
--stop-position
阅读(4513) | 评论(0) | 转发(0) |