mysql 主从复制

首先,确保主库和从库的数据库版本一致,虽说网上有大神说的跨版本,但是坑太多,不建议

下面,我用mysql5.7.26来演示.(本人能力有限,就不讲原理了,直接走流程)

  1. 主库修改mysql配置,然后重启mysql

    a. windows的my.ini

         image.png

    b. linux下的my.cnf

        image.png

    虽然文件位置不一样,但是内容是一样的

    image.png


    #server_id随便写,不跟下面的从库重复

    server_id=1234

    #要同步的数据库

    binlog-do-db=test_slave

    #要生成的二进制日志文件名称

    log-bin=mysql-bin

  2. 从库修改mysql配置,然后重启mysql

    配置文件的路径参考上面的说明,从库比较简单就一个server_id

    server_id=1000

  3. 主库备份,然后查看当前数据位置

    备份没什么好说的,但是为了从库跟主库数据的一直,要先锁表再备份,直接进mysql上命令

    image.png

    a.锁表,use数据库,然后锁表

       use test_slave;

       flush tables with read lock;

    image.png

    b.备份,Navicat一键保存到桌面

    c.查看数据位置

    image.png

    d.解锁

       unlock tables;

    e.给从库生成对应的用户权限

       grant  replication  slave  on  *.*   to  backup@'192.168.0.200'   identified   by   '123456';

    image.png

       grant  replication  slave  on  *.*   to  用户名@'从库的ip地址'   identified   by   '密码';

       flush   privileges;   刷新权限


  4. 从库配置复制行为的信息,然后启动slave线程

    简单来说就是一句话:

    change master to master_host='192.168.0.110',master_user='backup',master_password='123456',master_log_file='mysql-bin.000013',master_log_pos=22072;

    change master to master_host='主库的ip地址',master_user='用户名',master_password='密码',master_log_file='日志名称',master_log_pos=数据位置;

    start slave;

    show slave status \G

一旦失败不要慌,重复执行以下命令,直到看到两个yes

image.png

stop slave;

reset slave;

change master to master_host='192.168.0.110',master_user='backup',master_password='123456',master_log_file='mysql-bin.000013',master_log_pos=22072;

start slave;

show slave status \G

image.png

然后就可以测试在主库进行增删改查了

发表评论