mysql主从搭建

一. 主从复制原理

mysql主从同步过程主要依赖bin-log,主要分为以下三个步骤:

       1.   master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);
       2.    slave将master的binary log events拷贝到它的中继日志(relay log);
       3.    slave重做中继日志中的事件,将改变反映它自己的数据。

  mysql主从搭建

      

二.主从搭建过程

1.master授权:在master上创建用于同步的账号,并授予复制权限  

  GRANT REPLICATION SLAVE ON *.* TO 'repl'@'10.10.1.1' IDENTIFIED BY '123456';
  flush privileges ;
2.master开启bin-log日志:
  my.conf配置举例:
  server-id = 2
  binlog-do-db = test
  binlog-ignore-db = mysql
  replicate-do-db = test
  replicate-ignore-db = mysql
  sync-binlog = 1
  log-salve-updates = 1  
     重启master,运行SHOW MASTER STATUS,记录下binlog的文件名和文件位置position;
3.slave配置server_id和master地址:
   (1)my.conf配置:
   server_id         = 3
//   log_slave_updates = 1  (设置从库binlog是否更新的选项,若该从库为其他slave的master则需要设置,并开启binlog);
   (2)重启slave,在mysql命令行执行:  
    CHANGE MASTER TO
    MASTER_HOST='10.10.1.2',
    MASTER_USER='repl',
    MASTER_PASSWORD='123456',
    MASTER_LOG_FILE='mysql-bin.000017',     //根据主库情况确定
    MASTER_LOG_POS=868040264                //根据主库情况确定
    (3)执行SHOW SLAVE STATUS语句查看slave的设置是否正确:
 

三.主从切换

当主数据库宕机的情况下,我们需要将从库切换为主库:

  主从切换步骤:
  从库执行:
  slave stop;
  reset slave;
  //reset master;(主从替换时记录binlog位置) 
  show master status;

  待主库恢复后,将从库数据更新到主库,并执行:
  slave stop;
  CHANGE MASTER TO ;
  slave start; 

四.排错与恢复

1.主从状态查看:

  主库状态:show master status\G;

  从库状态: show slave status\G;

同步异常时,查看原因,根据具体情况进行操作;

//同步错误恢复
change master to master_log_file='mysql-bin.000288',master_log_pos=627625631;
SET GLOBAL sql_slave_skip_counter = 1;

可参考: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 

 

你可能感兴趣的:(Mysql主从)