1、原理

1、数据库有个bin-log二进制文件,记录了所有的sql语句
2、我摩恩的目标就是把住数据库的bing-log文件的sql语句复制过来
3、让其在从数据的relay-log重做日志文件中在执行一次这些sql语句即可
4、下面的蛀虫配置就是围绕这个原理配置

  1. 从库i/o线程去请求主库的binlog,并将得到的binlog日志写到relay log (中继日志)文件中;
  2. 主库会生成一个log dump线程,用来给从库i/o线程传big log
  3. 从库的sql线程,会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致

image.png

2、实现过程

1、主机配置

首先修改mysql的配置文件,使其支持二进制日志功能
1、修改my.ini 文件,Linux是my.cnf(windos修改另存为编码选择ANSI,否则启动不起来)

  1. # 加入以下代码
  2. log-bin=日志存放地址
  3. # 服务器ID
  4. server-id=1

2、在主服务器上为从服务器分配一个账号,才能到服务器上来共享主服务器的日志文件

  1. # 数据询执行
  2. GRANT replication slave ON *.* TO '用户名'@'从库ip' IDENTIFIED BY '密码';
  3. FLUSH PRIVILEGES

3、查看主服务器bin日志的信息

  1. show master status;

image.png
记录file字段和position字段的值

2、从机配置

1、修改配置

  1. vim /etc/my.cnf
  2. #加入以下内容
  3. log-bin=mysql-bin
  4. server-id=2
  5. # 重启mysql
  6. systemctl stop mysqld.service
  7. systemctl start mysqld.service

2、在mysql中执行sql语句

  1. CHANGE MASTER TO MASTER_HOST='主机ip',
  2. MASTER_USER='主机分配用户名',
  3. MASTER_PASSWORD='主机分配密码',
  4. MASTER_LOG_FILE='主机查询file字段',
  5. MASTER_LOG_POS=主机查询position字段;

3、开启从服务器

  1. start slave;

4、检查是否配置成功:

  1. show slave status\G;
  2. # 当都是yes时配置成功

image.png

5、停止服务复制

  1. stop slave;