准备工作

1、 把需要同步的数据库实例从主数据库备份出来,然后手动导入从数据库,以保证数据库同步的时候主从数据库是一致的。

        2、 配置主数据库所在操作系统的防火墙,开放数据库访问端口,默认端口3306。
准备服务器

由于Mysql不同版本之间的(二进制日志)binlog格式可能会不太一样,因此最好的搭配组合是主(Master)服务器的Mysql版本和从(Slave)服务器版本相同或者更低,主服务器的版本肯定不能高于从服务器版本。
设置方法:

   a. 范例环境:

 

      (1).操作系统: windows 7 professional

 

      (2).MySQL版本: mysql  Ver 14.14 Distrib 5.5.37, for Win32 (x86)

 

      (3).服务器A的IP: 172.17.17.131                    

            服务器B的IP: 172.17.17.132

 

   b. 增加一个用户账号(backup)作为同步用户账号.


         A: mysql> Grant all  on *.* to backup@'172.17.17.132' identified by '1234';  
         B: mysql> Grant all  on *.* to backup@'172.17.17.131' identified by '1234';  

 

         注: (1). mysql> Grant 权限  on *.* to 用户账号@'允许访问的IP' identified by '用户密码';  可以给部分权限:Grant replication slave on *.* to backup@'172.17.17.131' identified by '1234';           
                (2). 4.0.2以前的版本, 因为不支持replication slave, 要改为 file,例如下面的语句:

 

                       mysql>  Grant file on *.* to backup@'192.168.1.15' identified by '1234';
   c.修改MySQL配置文件my.ini.     

        服务器A:           

            server-id=1
            log-bin=backup-master  #设置需要记录log 可以设置log-bin=backuplog 设置日志文件的名称
            #日志文件在mysql数据库文件夹根目录下,mysql将建立不同扩展名,文件名为backup-master的几个日志文件。

            replicate-do-db=mcs   #指定需要日志的数据库             

         服务器B:                     

            server-id=2
            log-bin=backup-slave  #设置需要记录log 可以设置log-bin=backup-slave 设置日志文件的名称
            replicate-do-db=mcs    #告诉slave只做news数据库的更新 
            #在mysql数据库文件夹根目录下,会自动生成一个master.info的日志文件,

            #获取master服务器数据库的更新信息。注:修改完成后,进入计算机服务,重启数据库服务
    d.查看主服务器master信息(这里做的是双机热备,互为主备).     

         服务器A:         

         1、cmd进入DOS窗口 
         2、进入数据库安装地址:cd c:\bohui\mcs\mysql\bin                                    

        3、进入数据库:mysql -hlocalhost -uroot -p123456  (注:此处使用的是root用户,密码为123456)                  

        4、查看本服务器数据库master信息:

                show master status;                    

                记录File的值“backup-slaver.000012”,和Position值“4881”。改值会在服务器B使用。     

            服务器B:         

         1、cmd进入DOS窗口 
         2、进入数据库安装地址:cd c:\bohui\mcs\mysql\bin                                    

        3、进入数据库:mysql -hlocalhost -uroot -p123456  (注:此处使用的是root用户,密码为123456)                  

        4、查看本服务器数据库master信息:

                show master status;                    

                记录File的值“backup-master.000011”,和Position值“1811363”。该值会在服务器A使用。    

e.修改查看从服务器slave信息(这里做的是双机热备,互为主备).         

        再次进入服务器A:                    

         1、在DOS窗口进入数据库:                 

               Mysql>slave stop; #先停止slave服务       然后执行                    

               Mysql>change master to                       

                          >master_host='172.17.17.132',                      

                          >master_user='backup',                       

                          >master_password='1234',                       

                          >master_log_file=' backup-master-000011' , #上面服务器B查询的值                                                                                                               >master_log_pos=1811363; #上面服务器B查询的值有用吧

             Mysql>slave start;                

         2、查看服务器B>A的同步状态:                    

                Mysql>show slave status\G;

     其中下面两项都必须为yes。

       Slave_IO_Running: Yes

              Slave_SQL_Running: Yes

       再次进入服务器B:               

        1、在DOS窗口进入数据库:                 

                Mysql>slave stop; #先停止slave服务       然后执行                    

                Mysql>change master to                       

                           >master_host='172.17.17.131',                      

                           >master_user='backup',                      

                           >master_password='1234',                      

                           >master_log_file=' backup-slaver.000012' , #上面服务器A查询的值                      

                           >master_log_pos=4881; #上面服务器A查询的值有用吧

              Mysql>slave start;         

        2、查看服务器A>B的同步状态:                   

                Mysql>show slave status\G;     其中下面两项都必须为yes。

     Slave_IO_Running: Yes

            Slave_SQL_Running: Yes


至此,MySQL双机热备已经完成。