mysql 主从复制

主从同步设置 配置之前
  1 先将 windows防火墙关闭
  2 mysql允许远程连接设置
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
    flush privileges;

主机(windows)
  1 编辑 主机 my.ini 添加
    [mysqld]
    // 主机id
    server-id=1
    //二进制文件 mysql-bin是文件
    log-bin= "D:/phpstudy/PHPTutorial/MySQL/data/mysql-bin"
    //错误记录文件
    log-error= "D:/phpstudy/PHPTutorial/MySQL/data/mysql-error"
    //主从同步时忽略的数据库
    binlog-ignore-db=test1
    //(可选)指定主从同步时同步哪些数据库
    binlog-do-db=test

   2 授权
    window授权哪台计算机是自己的从计算机
    GRANT REPLICATION slave,reload,super ON *.* TO 'root'@'192.168.1.%' IDENTIFIED BY 'root' ;
    flush privileges;

  3 查看主数据库的状态
    show master status;

  4 记录 show master status 返回的数据
    mysql-bin.000001 | 107 | test

从机(linux)
  1 编辑 /ect/my.cnf 添加
    [mysqld]
    server-id=2
    log-bin= mysql-bin
    //同步test数据库
    replicate-do-db=test
  2 授权
    授权哪台计算机中的数据库时自己的主要计算机(从机mysql中执行)
    CHANGE MASTER TO
    MASTER_HOST = '192.168.1.101',
    MASTER_USER = 'root',
    MASTER_PASSWORD = 'root',
    MASTER_PORT = 3306,
    master_log_file = 'mysql-bin.000001',
    master_log_pos = 107;
    如果报错(以前做过主从) 解决 run stop slave

开启主从同步
  开启主从: start slave;
  检查从机状态: show slave status;
  保证 slave_io_running 和 slave_sql_run 确保都是yes
  如果不都是yes看下方的日志 last_io_error
  (1)若主从使用了相同的server-id 检查:在主从中分别查看server_id:show variables like 'server_id'
    set global server_id=2;//修改(改为配置文件中设置的server-id)
  (2)显示连接失败
.    查看端口 主从是否一致
.    关闭防火墙 iptables (service iptables stop) 或者开启3306端口 (注意centos7开启3306端口后还连接不上 需要关闭firewalld)

  3 同步时出现的问题:
    (1) Last_SQL_Error: Error ‘Duplicate entry ‘的问题
      这个问题是因为插入重复主键导致从库不工作
      解决:
      第一种方法:stop slave; set GLOBAL SQL_SLAVE_SKIP_COUNTER=1; start slave;
      第二种方法:修改mysql配置文件 /etc/my.cnf 在 [mysqld]下加一行 slave_skip_errors = 1062 ,保存.重启mysql

posted @ 2019-08-10 01:46  五星红旗迎风飘扬  阅读(158)  评论(0编辑  收藏  举报