mysql 5.5 主从配置

master 跑在虚拟机上,slave 在虚拟机里用的 docker 跑的

master

  • 配置 my.cnf:
    log-bin=mysql-bin-master  #启用二进制日志
    server-id       = 1   #本机数据库ID 标示
    binlog-do-db=HA   #可以被从服务器复制的库。二进制需要同步的数据库名
    binlog-ignore-db=mysql  #不可以被从服务器复制的库
  • 创建给从库使用的账号

    create user 'slave'@'172.17.0.2' identified by '123456';
    grant replication slave on *.* to 'slave'@'172.17.0.2';

    如果 ip 地址换了,可用如下命令修改:
    RENAME USER user@ipaddress1 TO user@ipaddress2;

  • 取消 ip 连接限制:注释掉 my.cnf 中的 bind-address

    
    #bind-address
    

    因为在创建给 slave 使用的账号的时候已经指定了 ip,所以注释掉不会产生很严重的安全问题,可能需要在防火墙上做处理。

  • 查看 bin log

    mysql> show binlog events;
    
    *************************** 1. row ***************************
    Log_name: mysql-bin.000001
        Pos: 4
    Event_type: Format_desc
    Server_id: 1
    End_log_pos: 107
       Info: Server ver: 5.5.35-1ubuntu1-log, Binlog ver: 4
    *************************** 2. row ***************************
    Log_name: mysql-bin.000001
        Pos: 107
    Event_type: Stop
    Server_id: 1
    End_log_pos: 126
       Info: 
    2 rows in set (0.00 sec)

    注意开始文件是在 mysql-bin.000001,开始位置 4

slave

  • docker
    sudo docker run -d -v /home/ksun/mysqlMS/slave:/etc/mysql -v /home/ksun/mysqlMS/log_slave:/var/log/mysql --name mysql-slave -e MYSQL_ROOT_PASSWORD=123456 mysql:5.5

  • 配置 my.cnf
    这里使用自定义的 mysql 配置文件,所以把 host(ubuntu 14) 的 my.cnf 复制到了 docker 里,重启容器后报错退出了,需要修改下配置文件注释掉如下两行:

#basedir        = /usr //Path to installation directory. All paths are usually resolved relative to this.
#lc-messages-dir    = /usr/share/mysql //The directory where error messages are located. 

修改 server-id :

server-id = 2  #从服务器ID号,不要和主ID相同 ,如果设置多个从服务器,每个从服务器必须有一个唯一的server-id值,必须与主服务器的以及其它从服务器的不相同。可以认为server-id值类似于IP地址:这些ID值能唯一识别复制服务器群集中的每个服务器实例。
  • 开启 主从复制
mysql> change master to master_host='172.17.0.1',master_user='slave',master_password='123456', master_log_file='mysql-bin.000001' ,master_log_pos= 4
mysql> start slave; 
//查看 slave 状态
mysql> show slave status\G

你可能感兴趣的:(mysql)