以此文记录一下mysql实现基于日志点的主从搭建,若有不足之处,欢迎大家指出。

实现步骤如下:

  1.  修改主服务器上的数据配置文件【my.cnf】

               bin_log = mysql-bin   //开启binlog
               server_id = xxx           //值唯一

               binlog_format=row   //推荐使用行的方式记录日志


 2. 修改从服务器数据库配置文件【my.cnf】

            bin_log = mysql-bin                    //开启binlog
           server_id = xxx                            //值唯一
           relay_log = relay-bin                 //中继日志的名字          
           read_only = on                        //只读 推荐开启


3.修改完配置文件后都需要重启mysql数据库


4、在主服务器上创建复制帐号

            create user 'repl'@'IP段' identified by 'password'  

                    创建帐号为 repl,并设置可连接的IP段与密码

            grant replication slave on *.* to 'repl'@'IP段' 

                    为创建的repl帐号授予 replication slave权限,

               wKiom1hlM-PQ0aPCAAAZzJcU9mk161.png-wh_50


5.备份主数据库的数据,此处用的mysqldump方式

          mysqldump --single-transaction --master-data  --triggers  --routines  -uroot -p --databases test shop >> /zhang/database.sql

       --master-data : 将二进制日志的位置和文件名写入到输出中 【这里最好加上】

       --databases    : 指定需要导出的数据库,这里最好指定数据库

       -u                     :指定连接的用户名

       -p                     :指定密码

     --routines          : 导出储存储过程

     --triggers           :导出事务


6.将导出的SQL文件放到从服务器上导入,

        可以用scp方式,也可以用sz+rz的方式, 这里选择的是scp方式:

                  scp /zhang/database.sql zhang@192.168.131.138:/zhang 【将SQL文件传到从服务器的/zhang目录】



7. 在从服务器上导入主服务器上的SQL

              mysql -uroot -p < /zhang/database.sql



8. 导入成功后,登录从服务器执行change master命令

             change master to master_host='192.168.131.139', master_user='repl',  MASTER_LOG_FILE='mysql-bin.000016', MASTER_LOG_POS=1180 , master_password='123456';

      

           master_host:主服务器的IP

           master_user :连接主服务器的用户,即刚才在主服务器创建的用户名

           master_password :连接的密码,

          MASTER_LOG_POS :复制的开始位置

          MASTER_LOG_FILE :开始复制的日志文件


wKiom1hlNFGwOAMEAAAUqbJcIkc097.png-wh_50

   这里重点是确定 MASTER_LOG_POS 与 MASTER_LOG_FILE的参数,可以查看刚才在主服务器导出的

SQL文件查看这2个参数。

           more  /zhang/database.sql

      wKioL1hlNB_CQ3A7AABhqOLeqLA004.png-wh_50


9.关闭主服务器和从服务器的IP TABLES 防火墙。如果不关闭可能会有 Slave_IO_Running=no的情况

                 iptables -F


10.在从服务器启动 slave

        start slave;                              //启动slave

        stop slave;                            //暂停slave

       show slave status                //查看slave的状态,【如果Slave_IO_Running,Slave_SQL_Running都为yes则表示主从搭建成功】

wKiom1hlNSXAdBwRAAB1RmlhVuU099.png-wh_50