美文网首页数据库
MySQL配置主从同步

MySQL配置主从同步

作者: 小螺钉12138 | 来源:发表于2019-02-15 00:24 被阅读114次

    一、数据库主从复制的基本思想

    mysql主从复制是指将mysql主服务器中的数据复制到一台或者多台mysql从服务器的过程,将主数据库中的DDL和DML操作通过二进制日志传到复制的服务器上,然后在从服务器上对这些日志重新执行,从而使主从服务器的数据保持同步

    在mysql中,复制操作是异步进行的,slaves服务器不需要持续地保持连接接收master服务器的数据

    mysql支持一台主服务器同时向多台从服务器进行复制操作,从服务器同时可以作为其他从服务器的主服务器,如果mysql主服务器的访问量比较大,可以通过复制数据,然后在从服务器上进行查询操作,从而降低主服务器的访问压力,同时从服务器作为主服务器的备份,可以避免主服务器因为故障数据丢失的问题

    mysql数据库复制操作大致可以分为三个步骤

    • 主服务器将数据的改变记录到二进制日志(binary log)中
    • 从服务器将主服务器的binary log events复制到它的中继日志(relay log)中
    • 从服务器重做中继日志中的事件,将数据的改变与从服务器保持同步

    二、数据主从复制的操作

    2.1修改主服务器配置
    • 配置my.cnf(win服务器my.ini)
    [mysqld]
    log-bin=mysql-bin
    server-id=1
    
    
    • 重启mysql服务
    • 登录mysql
    // 配置从服务器的账号,以及复制权限
    mysql> CREATE USER 'replication'@'192.168.252.124' IDENTIFIED BY 'mima';
    mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication'@'192.168.252.124';
    
    2.2修改从服务配置
    • 同样配置my.cnf(win服务器my.ini)
    [mysqld]
    server-id=2
    //如果设置多个从库,就需要设置不同的server-id
    
    • 重新启动从数据库mysql
    • 从库上执行一条语句
    mysql> CHANGE MASTER TO
        -> MASTER_HOST='192.168.252.123', -- 主库的ip地址
        -> MASTER_USER='replication', --主库的用户名
        -> MASTER_PASSWORD='mima', -- 主库的密码
        -> MASTER_LOG_FILE='mysql-bin.000001', --主库的binary log文件名
        -> MASTER_LOG_POS=629; -- 复制binary log文件的开始地址
    
    • 启动从服务器开始线程
    mysql> START SLAVE;
    Query OK, 0 rows affected (0.00 sec)
    
    • 启动完毕之后可以查看从服务器复制状态
    mysql>  show slave status\G
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event #从服务器的当前状态 
                      Master_Host: 192.168.252.123
                      Master_User: replication
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: mysql-bin.000001
              Read_Master_Log_Pos: 629
                   Relay_Log_File: master2-relay-bin.000003
                    Relay_Log_Pos: 320
            Relay_Master_Log_File: mysql-bin.000001
                 Slave_IO_Running: Yes
                 #读取主程序二进制日志的I/O线程是否正在运行 
                Slave_SQL_Running: Yes
                #执行读取主服务器中二进制日志事件的SQL线程是否正在运行。与I/O线程一样 
                .
                .
                .
                Seconds_Behind_Master:0
                #为0表示已经开始同步
    

    三、测试

    通过查询从服务器的状态得知,主从复制配置成功,现在可以在主从创建一张新表,在表中插入一条语句,然后在从库中查看是否有新创建的表以及插入的语句(不可以在配置主从配置前就存在的表中插入语句,会造成主从同步失败)

    相关文章

      网友评论

        本文标题:MySQL配置主从同步

        本文链接:https://www.haomeiwen.com/subject/mfuueqtx.html