一. 主从复制原理
mysql主从同步过程主要依赖bin-log,主要分为以下三个步骤:
1. master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);
2. slave将master的binary log events拷贝到它的中继日志(relay log);
3. slave重做中继日志中的事件,将改变反映它自己的数据。
二.主从搭建过程
1.master授权:在master上创建用于同步的账号,并授予复制权限
三.主从切换
当主数据库宕机的情况下,我们需要将从库切换为主库:
四.排错与恢复
1.主从状态查看:
主库状态:show master status\G;
从库状态: show slave status\G;
同步异常时,查看原因,根据具体情况进行操作;
可参考:http://716737.blog.51cto.com/706737/1302972
2.mysql负载查询优化:
看看db里各项status的值.同时看看系统的内存 CPU IO等值的情况;
load average: 0.49, 0.52, 0.53
系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
排查思路
1. 确定高负载的类型,top命令看负载高是CPU还是IO。
ps aux 进程情况;
top 查看内存和CPU;
iostat -d -x 10 3 查看系统IO情况;
-c 仅显示CPU统计信息.与-d选项互斥.
-d 仅显示磁盘统计信息.与-c选项互斥.
-k 以K为单位显示每秒的磁盘请求数,默认单位块.
-p device | ALL
与-x选项互斥,用于显示块设备及系统分区的统计信息.也可以在-p后指定一个设备名,如:
# iostat -p hda
或显示所有设备
# iostat -p ALL
-t 在输出数据时,打印搜集数据的时间.
-V 打印版本号和帮助信息.
-x 输出扩展信息.
vmstat 查看系统内存使用情况
2. mysql 下执行查看当前的连接数与执行的sql 语句。
show processlist 查看当前连接;
kill QUERY id 负载过大时,强行断开连接;
3. 检查慢查询日志,可能是慢查询引起负载高。
记录慢查询
编辑Mysql 配置文件(my.cnf),在[mysqld]字段添加以下几行:
log_slow_queries = /usr/local/mysql/var/slow_queries.log #慢查询日志路径
long_query_time = 5 #记录SQL查询超过5s的语句
log-queries-not-using-indexes = 1 #记录没有使用索引的sql
参考链接:
http://716737.blog.51cto.com/706737/1302972
http://blog.csdn.net/hguisu/article/details/7325124