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 。