设为首页 收藏本站
查看: 916|回复: 0

[经验分享] MySQL Replication主从复制

[复制链接]

尚未签到

发表于 2018-10-7 10:08:20 | 显示全部楼层 |阅读模式
  什么是MySQL Replication?
  1、Replication可以实现将数据从一台数据库服务器(master)复制到一台到多台数据库
  服务器上(slave)
  2、默认情况下,属于异步复制,所以无需维持长连接
  MySQL Replication的原理:
  简单来说,master将数据库的改变写入二进制日志,slave同步这些二进制日志,并根据这
  些二进制日志进行数据重演操作,实现数据异步同步。
  MySQL Replication的用途:
  1、Fail Over 故障切换
  2、Backup 在线热备份(机械故障)
  3、High Performance 高性能
  MySQL Replication的架构:

  •   master ---> slave (双机热备)
      默认情况下,master接受读写请求,slave只接受读请求以减轻master的压力
      复制的过程:
      1、slave端的IO线程连上master端,请求
      2、master端返回给slave端,bin log文件名和位置信息
      3、IO线程把master端的bin log内容依次写到slave端relay bin log里,并把master端的bin-log文件名和位置记录到master.info里。
      4、salve端的sql线程,检测到relay bin log中内容更新,就会解析relay log里更新的内容,并执行这些操作。


  •   master ---> slave1 -----> slave2 (级联架构)
      优点: 进一步分担读压力
      缺点: slave1 出现故障,后面的所有级联slave服务器都会同步失败
  •   /----> slave1
      master
      (并联架构)
      \----> slave2
      优点:解决上面的slave1的单点故障,同时也分担读压力
      缺点:间接增加master的压力(传输二进制日志压力)
  •   master1  master2 (互为主从)
      优点:
      从命名来看,两台master好像都能接受读、写请求,但实际上,往往运作的过程中,
      同一时刻只有其中一台master会接受写请求,另外一台接受读请求
  M—S架构:实现双机热备(AB复制)
  1、可以降低master读压力
  2、可以对数据库做“热备”,热备只能解决硬件master硬件故障,软件故障等重大
  故障问题,但无法解决人为误操作导致的逻辑故障(例如输入错误的SQL语句把重要的记录删除了),所以常规的备份是必须。
  环境准备及要求:
  1、关闭防火墙和selinux
  2、hosts文件中两台服务器主机名和ip地址一一对应起来
  3、系统时间需要同步
  4、master和slave的数据库版本保持一致
  5、master:10.1.1.1 slave:10.1.1.2
  具体步骤:
  1、修改配置文件(master和slave)
  master:
  log-bin=/var/lib/mysql/mysqld-bin      master必须开启二进制日志
  server-id=1                                           mysql数据库的编号,master和slave必须不一样
  slave:
  log-bin=/mysql56/mysqld-bin             slave上的二进制日志可以开启也可以不开启,看具体情况
  server-id=2                                           mysql数据库的编号
  relay-log=/mysql56/relay-log              主从复制日志需要开启
  2、初始化数据,使两边数据一致。(以master为主)
  3、master端创建授权用户

  mysql> grant replication slave on *.* to 'slave'@'10.1.1.%'>  mysql> flush privileges;
  4、查看master的正在写的二进制文件名和位置
  mysql> flush tables with read lock;         先加锁,防止两边数据不一致;如果业务还未上线,这个就没有必要了
  Query OK, 0 rows affected (0.00 sec)
  mysql> show master status; 只有打开二进制日志,这句命令才有结果,表示当前数据库的二进制日志写到什么位置
  +------------------+----------+--------------+------------------+
  | File    | Position | Binlog_Do_DB | Binlog_Ignore_DB |
  +------------------+----------+--------------+------------------+
  | mysql-bin.000001 |  331 |              |                       |
  +------------------+----------+--------------+------------------+
  二进制文件名          正在写入的位置
  5、slave端设定复制信息
  mysql> change master to
  -> master_host='10.1.1.20',             master ip
  -> master_user='slave',                     同步用户
  -> master_password='123',               密码
  -> master_port=3306,                        端口
  -> master_log_file='mysqld-bin.000001', 主上面查到到二进制日志名
  -> master_log_pos=331;                      主上面查到的位置号
  6、启动复制线程,开始同步
  mysql> start slave;
  mysql> show slave status \G;
  Slave_IO_Running: Yes 代表成功连接到master并且下载日志
  Slave_SQL_Running: Yes 代表成功执行日志中的SQL语句
  回到master端解锁:
  mysql> unlock tables;
  Query OK, 0 rows affected (0.00 sec)
  7、测试验证
  master写——>slave可以看到
  slave写——>master看不到


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-614220-1-1.html 上篇帖子: 配置Mysql-proxy,实现读写分离 下篇帖子: centos6.8 yum安装mysql 5.6-brave
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表