mysql5.7主从搭建

 

 

1. 主从原理

引用网上的图:

  • 主服务器上面的任何休息都会通过自己的I/O thread线程保存在二进制日志(bin log)里面
  • 从服务器上面也会启动一个I/O thread, 通过配置好的用户名和密码,连接主服务器上面请求二进制日志,然后把读取的二进制日志写到本地的一个Relay log(中继日志)里面。
  • 从服务器上面同时启动一个SQL thread 定时检查relay log(这个文件也是二进制),如果发现有更新立即把更新的内容在本机的数据库上执行一遍。

2. 配置操作

2.1 Master节点配置`/etc/my.cnf`(master节点上执行)


  
  1. vim /etc/my.cnf
  2. [mysqld]
  3. ## 同一局域网内注意要唯一
  4. server-id=100
  5. ## 开启二进制日志功能,可以随便去
  6. log-bin=mysql-bin
  7. ## 复制过滤: 不需要备份的数据库, 不输出
  8. binlog-ignore-db=mysql
  9. ## 为每一个session 分配的内存,在事务过程中用来存储二进制日志的缓存
  10. binlog_cache_size=1M
  11. ## 主从复制的格式(mixed、statement、row,默认格式是statement)
  12. binlog_format=mixed

 2.2 Slave节点配置`/etc/my.cnf`(slave节点上执行)


  
  1. vim /etc/my.cnf
  2. [mysqld]
  3. ## 同一局域网内注意要唯一
  4. server-id=102
  5. ## 开启二进制日志功能,以备Slave作为其他Slave的Master时使用
  6. log-bin=mysql-slave-bin
  7. ## relay_log配置中继日志
  8. relay_log=mky-mysql-relay-bin
  9. ## 复制过滤: 不需要备份的数据库, 不输出
  10. binlog-ignore-db=mysql
  11. ## 如果需要同步函数或者存储过程
  12. log_bin_trust_function_creators=true
  13. ## 为每一个session 分配的内存,在事务过程中用来存储二进制日志的缓存
  14. binlog_cache_size=1M
  15. ## 主从复制的格式(mixed、statement、row,默认格式是statement)
  16. binlog_format=mixed
  17. ## 跳过主从复制中遇到的所有错误或者指定类型的错误,避免slave端复制中断
  18. ## 1062错误是指一些主键重复, 1032错误是因为主从数据库数据不一致
  19. slave_skip_errors=1062

2.3  在Master服务器授权slave服务器可以同步权限(master节点上执行)


  
  1. mysql -uroot -pmaster的密码
  2. # 授予slave服务器可以同步master服务
  3. grant replication slave, replication client on *.* to 'root'@'slave的ip' identified by 'slave服务器的密码';
  4. flush privileges;
  5. # 查看mysql 有哪些用户以及对应的ip权限
  6. select user,host from mysql.user;

2.4 查看master服务的binlog文件名和位置(master节点执行)

show master status;
 

2.5 slave进行关联master节点(slave节点执行)

  • 进入到slave节点
  • 开始绑定

  
  1. # 根据上面的show master status 查出来的结果填写
  2. change master to master_host='master服务器的ip', master_user='root', master_password='master密码',master_port=3306,master_log_file='mysql-bin.000001', master_log_pos=621;
  3. # 启动
  4. start slave;
  • 查看启动状态

  
  1. # 查看启动状态 (必须两个yes IO_RUNNING, SQL_RUNNING 都是yes才算成功)
  2. show slave status \G;

常见错误:

Slave_SQL_Running:No   MYSQL镜像服务器因错误停止的恢复

解决方式:


  
  1. stop slave
  2. set global sql_slave_skip_counter=1;
  3. start slave
  4. show salve status \G; 

Slave_IO_Running:No 

解决方式:


  
  1. # master节点运行
  2. show master status;
  3. # 从节点运行
  4. stop slave
  5. change master to master_log_file='上面查出的结果',master_log_pos=上面查出的结果;
  6. start slave
  7. show salve status \G; 

 

文章来源: blog.csdn.net,作者:毛瞌羊,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/wh2691259/article/details/115047056

(完)