mysql主从复制的Slave_IO_Running No的处理方法

master: 192.168.0.4     mysql-5.5.3-m3
    slave:  192.168.0.2     mysql-5.5.20

    先回答上一篇提出的问题:有一部分是myisam类型的表, 有一部分是innodb类型的表, 该如何对master做“快照”呢? 
    其实答案有很多: 
        a) 先锁表, 记录binlog文件和位置信息。 然后用mysqldump --single-transaction和--master-data=1 这两个选项, 把所有要同步的库dump出来就OK 
        b) 先锁表, 记录binlog文件和位置信息。 然后用用系统命令拷贝好数据目录, 另外对于innodb表, 使用mysqldump --single-transaction把这些innodb表单独dump出来就OK , 到slave上也要做相应的两步操作, 详细如下:

    这里假设master/slave上的配置文件以及相关的授权都已经OK。 
    STEP 1. 登录master服务器, 打开两个虚拟终端, 一个在系统命令行用来操作拷贝, 一个用来进入mysql命令行进行锁表操作
        mysql命令行: mysql> FLUSH TABLES WITH READ LOCK;   # 锁表
        mysql命令行: mysql> show master status;            # 查看当前binlog文件名及binlog的位置信息, 并记录下来。 比如 binlog.000049 |  3560393
        系统命令行:  # cd master的数据文件目录
        系统命令行:  # tar cf /www/master.tar.gz db1 db2   # 把数据文件打包到/www/master.tar.gz文件, 这里为了速度, 并没有执行压缩。  在打包的过程中, 在mysql命令行执行show master status; 会发现打印出来的信息一直没改变。
        系统命令行:  # mysqldump -uroot --single-transaction --flush-logs --hex-blob db1 t1 t2 t3 > /www/innodb1.sql   # 这里执行完后, 使用show master status;  会发现新生成了一个新的binlog, 至于为什么, 我也不知道, 问部门的DBA同事 , 说没关系

        
        待上面几步都OK , 再在mysql命令执行解锁操作:
        mysql命令行: mysql> UNLOCK TABLES;                 # 解锁

        在master服务器上的最后操作就是把刚刚打包好的/www/master.tar.gz 及/www/innodb1.sql文件传送到slave服务器上。

    STEP 2. 登录到slave服务器
        系统命令行: # mysqladmin shutdown      # 先把mysql停掉
        系统命令行: # tar xf master.tar.gz -C mysql的数据目录      # 把master上的数据文件解压到slave上的数据目录
        系统命令行: # mysqld_safe &            # 启动mysql
        mysql命令行:mysql> slave stop;         # 停掉同步
        系统命令行: # mysql -uroot db1 < ./innodb1.sql
        mysql命令行:mysql> CHANGE MASTER TO MASTER_HOST='192.168.0.4', MASTER_PORT=3306, MASTER_USER='slave',MASTER_PASSWORD='slave@123',master_log_file='binlog.000049',master_log_pos=3560393;
        mysql命令行:mysql> slave start;        # 开启同步
        mysql命令行:mysql> show slave status\G
    发现各项信息都比较正常

    
    不过过了一段, 又出现错误信息:
        Last_Errno: 1690
        Last_Error: Error 'BIGINT values is out of range in....'

 

20788470_1335109902UZtE.jpg
    
    最后在网上搜了下, 发现原来是因为slave的版本跟master的版本不一直导致, 把slave的版本更换成master一致的版本就OK 。
    


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值