您当前的位置: 首页 > 数据库教程 > MySQL教程 > MySQL主从复制的一些错误处理和日常维护

MySQL主从复制的一些错误处理和日常维护

作者:不详 来源:网络 发布时间: 2011-08-30 14:56 点击:
检查从服务器一般使用show slave status命令来检查 mysqlSHOW SLAVE STATUS\G ***************************1.row*************************** Slave_IO_State:Waiting for master to send event Master_Host:192.168.0.100 Master_User:root Master_Port:3306 Connect_

MySQL主从复制的一些错误处理和日常维护

  检查从服务器一般使用show slave status命令来检查
  
  mysql>SHOW SLAVE STATUS\G
  
  ***************************1.row***************************
  
  Slave_IO_State:Waiting for master to send event
  
  Master_Host:192.168.0.100
  
  Master_User:root
  
  Master_Port:3306
  
  Connect_Retry:3
  
  Master_Log_File:mysql-bin.003
  
  Read_Master_Log_Pos:79
  
  Relay_Log_File:mysql-relay-bin.003
  
  Relay_Log_Pos:548
  
  Relay_Master_Log_File:mysql-bin.003
  
  Slave_IO_Running:Yes
  
  Slave_SQL_Running:Yes
  
  Replicate_Do_DB:
  
  Replicate_Ignore_DB:
  
  Last_Errno:0
  
  …..
  
  在上面这些信息中我们主要关注的是Slave_IO_Running和Slave_SQL_Running
  
  Slave_IO_Running:从服务器正从主服务器上读取BINLOG日志,并写入从服务器的中继日志
  
  Slave_SQL_Running:进程正在读取从服务器的BINLOG中继日志,并转化为SQL执行
  
  以前有一个进程是no状态,表示复制的进程停止,在Last_Errno会看到是什么情况
  
  有时候因为主服务器的更新过于频繁,造成了从服务器更新速度较慢,当然问题是多种多样,有可能是网络搭建的结构不好或者硬件的性能较差,从而使得主从服务器之间的差距越来越大,最终对某些应用产生了影响,在这种情况下,我们需要定期进行主从服务器的数据同步,具体步骤如下
  
  在主服务器上
  
  mysql>FLUSH TABLES WITH READ LOCK;
  
  Query OK,0rows affected(0.03sec)
  
  mysql>show master status\G;
  
  ***************************1.row***************************
  
  File:mysql-bin.000004
  
  Position:102
  
  Binlog_Do_DB:
  
  Binlog_Ignore_DB:
  
  1row in set(0.00sec)
  
  记录出日志的名字和偏移量,这些是从服务器复制的目的目标
  
  在从服务器上,使用MASTER_POS_WAIT()函数得到复制坐标值
  
  mysql>select master_pos_wait('mysql-bin.000004','102');
  
  +-------------------------------------------+
  
  |master_pos_wait('mysql-bin.000004','102')|
  
  +-------------------------------------------+
  
  |0|
  
  +-------------------------------------------+
  
  1row in set(0.00sec)这个select语句会阻塞直到从服务器达到指定日志文件和偏移量后,返回0,如果是-1,则表示超时推出,查询是0时,表示从服务器与主服务器已经同步
  
  在某些情况下,会出现从服务器更新失败,首先需要确定是否从服务器的表与主服务器的不同造成的,如果是表结构造成的,则需要修改从服务器的表和主服务器一致,然后重新运行start slave
  
  如果不是表结构不同造成的更新失败,则需要确认手动更新是否安全,然后忽视来自主服务器的更新失败语句,跳过来来自主服务器的语句,命令为SET GLOBAL SQL_SLAVE_SKIP_COUNTER=n,其中,n=1表示来自主服务器的更新语句不使用AUTO_INCREMENT或LAST_INSERT_ID(),n=2时则反之,原因是使用AUTO_INCREMENT或LAST_INSERT_ID的语句需要从二进制日志中取得两个事件.

分享到:
本文"MySQL主从复制的一些错误处理和日常维护"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4