mysql主从同步的解决方法

问题1:进入slave服务器,运行:
mysql> show slave status\G
         .......
             Relay_Log_File:localhost-relay-bin.000001
             Relay_Log_Pos: 151
             Relay_Master_Log_File: localhost-bin.000002
             Slave_IO_Running: Yes
             Slave_SQL_Running:No
             Replicate_Do_DB: 
             Replicate_Ignore_DB: 
         ......
解决办法一、

Slave_SQL_Running: No
1.程序可能在slave上进行了写操作
2.也可能是slave机器重起后,事务回滚造成的.
一般是事务回滚造成的:
解决办法一:
mysql> stop slave ;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1; #客户端运行,用来跳过几个事件,只有当同步进程出现错误而停止的时候才可以执行。
mysql> start slave ;
解决办法二:
首先停掉Slave服务:stop slave;
到主服务器上查看主机状态:
记录File和Position对应的值

进入master
mysql> show master status;
+----------------------+----------+--------------+------------------+
| File                 | Position |Binlog_Do_DB | Binlog_Ignore_DB |
+----------------------+----------+--------------+------------------+
| localhost-bin.000001 | 151 |             |                  | 
+----------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

然后到slave服务器上执行手动同步:
mysql> change master to 
> master_host=‘master_ip‘,
> master_user=‘user‘, 
> master_password=‘password‘, 
> master_port=3306, 
> master_log_file=‘localhost-bin.000001‘,

>master_log_pos=151,master_auto_position=0;

1 row in set (0.00 sec)
mysql> start slave ;
1 row in set (0.00 sec)

此时再查看从机:

mysql> show slave status \G
*************************** 1. row ***************************
               Slave_IO_State: Waitingfor master to send event
                  Master_Host:192.168.1.103
                  Master_User:cfwxa
                  Master_Port:3306
                Connect_Retry: 60
              Master_Log_File: master-bin.000001
          Read_Master_Log_Pos: 151
               Relay_Log_File:localhost-relay-bin.000002
                Relay_Log_Pos: 363
        Relay_Master_Log_File: master-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
        Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
      Replicate_Wild_Ignore_Table: 
                  Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 151
              Relay_Log_Space: 571
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key:

Seconds_Behind_Master:0    #表示已同步

手动同步需要停止master的写操作!

时间: 2024-10-04 16:38:46

mysql主从同步的解决方法的相关文章

mysql 主从同步故障解决   Error 'Row size too large (> 8126).

错误日志:  Error 'Row size too large (> 8126). Changing some columns to TEXT or BLOB   or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row   format, BLOB prefix of 768 bytes is stored inline.' on query. Default   database: 'XXXX

mysql主从同步延时解决

在从服务器上执行show slave status;可以查看到很多同步的参数,我们需要特别注意的参数如下: Master_Log_File: SLAVE中的I/O线程当前正在读取的主服务器二进制日志文件的名称 Read_Master_Log_Pos: 在当前的主服务器二进制日志中,SLAVE中的I/O线程已经读取的位置 Relay_Log_File: SQL线程当前正在读取和执行的中继日志文件的名称 Relay_Log_Pos: 在当前的中继日志中,SQL线程已读取和执行的位置 Relay_Ma

mysql主从不一致简单解决方法

方法一:忽略错误后,继续同步 该方法适用于主从库数据相差不大,或者要求数据可以不完全统一的情况,数据要求不严格的情况 stop slave; #表示跳过一步错误,后面的数字可变 set global sql_slave_skip_counter =1; start slave; 方式二:重新做主从,完全同步 该方法适用于主从库数据相差较大,或者要求数据完全统一的情况 解决步骤如下: 1.先进入主库,进行锁表,防止数据写入 使用命令: mysql> flush tables with read l

如何实现 MySQL 的读写分离?MySQL 主从复制原理的是啥?如何解决 MySQL 主从同步的延时问题?

高并发这个阶段,肯定是需要做读写分离的,啥意思?因为实际上大部分的互联网公司,一些网站,或者是 app,其实都是读多写少.所以针对这个情况,就是写一个主库,但是主库挂多个从库,然后从多个从库来读,那不就可以支撑更高的读并发压力了吗? 如何实现 MySQL 的读写分离? 其实很简单,就是基于主从复制架构,简单来说,就搞一个主库,挂多个从库,然后我们就单单只是写主库,然后主库会自动把数据给同步到从库上去. MySQL 主从复制原理的是啥? 主库将变更写入 binlog 日志,然后从库连接到主库之后,

mysql主从同步建立方法

mysql主从同步原理: (1) master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events),然后通知存储引擎(I/O thread)提交事务: (2) slave将master的binary log events拷贝到它的中继日志(relay log); (3) slave重做中继日志中的事件,将改变反映它自己的数据. mysql主从操作步骤: 1.编辑matser数据库的my.cnf文件,在[mysqld]下面插入以下配置,

mysql主从同步(4)-同步延迟状态考量(seconds_behind_master和pt-heartbea)

一般情况下,我们是通过"show slave status \G;"提供的Seconds_Behind_Master值来衡量mysql主从同步的延迟情况.具体说明见:mysql主从同步(4)-Slave延迟状态监控,这种方法在大多数情况下确实是可行的.但是经验告诉我,仅仅依靠Seconds_Behind_Master的值来监测主从同步数据是否延迟是绝对不可靠的!!! 曾经遇到过的一个坑:Mysql主从环境部署后,刚开始主从数据同步是没问题的,也是通过监控Seconds_Behind_M

mysql主从同步中出现的问题梳理

之前部署了Mysql主从复制环境(MySQL复制环境(主从/主主)部署总结性梳理),在mysql同步过程中会出现很多问题,导致数据同步异常.以下梳理了几种主从同步中可能存在的问题:1)slave运行过慢不能与master同步,也就是MySQL数据库主从同步延迟MySQL数据库slave服务器延迟的现象是非常普遍的,MySQL复制允许从机进行SELECT操作,但是在实际线上环境下,由于从机延迟的关系,很难将读取操作转向到从机.这就导致了有了以下一些潜规则:"实时性要求不高的读取操作可以放到slav

MySQL主从同步、读写分离配置步骤

现在使用的两台服务器已经安装了MySQL,全是rpm包装的,能正常使用. 为了避免不必要的麻烦,主从服务器MySQL版本尽量保持一致; 环境:192.168.0.1 (Master) 192.168.0.2 (Slave) MySQL Version:Ver 14.14 Distrib 5.1.48, for pc-linux-gnu (i686) using readline 5.1 1.登录Master服务器,修改my.cnf,添加如下内容: server-id = 1 //数据库ID号,

MySQL主从同步实验

MySQL的主从复制方案,是数据的传输.只不过MySQL无需借助第三方工具,而是其自身同步复制的功能,另外一点,MySQL的主从复制并不是磁盘上直接同步,而是逻辑binlog日志同步到本地再应用执行的过程. 一.MySQL主从同步的简要操作过程: 1)从库开启两个线程,分别是IO线程和SQL线程,而主库只开启有一个IO线程 2)在从库上配置连接主库的IP地址.端口号.用同步的用户名.密码.准备更新的二进制文件名字.和准备更新的位置点(pos点,即从那个位置点开始更新) 3)在启动slave-id