码迷,mamicode.com
首页 > 数据库 > 详细

mysql主从复制

时间:2015-08-19 10:56:43      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:

扩展:向上扩展、向外扩展。

  向上扩展是对服务器硬件的扩展,如从2颗cpu,8G内存扩展到8颗cpu,32G内存。

  向外扩展采用主从服务器的方式。主从服务器间的数据同步用主从复制。

  主从复制的实现:主服务器只负责数据的写入,从服务器负责数据的读出,这一步用读写分离器实现。当主服务器数据发生改变时会通知从服务器,从服务器的IO thread会向主服务器发起请求,主服务器会调用dump thread从二进制日志中读数据到从服务器的中继日志中,从服务器就会调用sql thread将数据同步到本地。

  除了主从服务器外还可以设置双主模型,即双方相互为主从服务器。但双主模型在A服务器以某字段修改另一字段,而B服务器又以另一字段修改某一字段时会发生两表不一致的情况。

  对数据库写性能的提升可采用数据库分片实现,将对表的写分散到多个服务器上。

主从服务器的配置:

  配置分主从服务器数据已经同步和不同步两种情况:

  已经同步:

    主服务器:修改配置文件(开启二进制日志、修改server-id)、授权从服务器的复制功能grant replication slave , replication client on *.* to ‘‘@‘‘ ;。

    从服务器:修改配置文件(开启中继日志、修改server-id、修改只读)、连接主服务器change master to master_host=‘‘ , master_user=‘‘ , master_password=‘‘ , master_log_files=‘‘ , master_log_pos=‘‘ ; 、开启线程start slave。

  未同步:首先需要将主服务器上的数据打包到从服务器,再按照已经同步的去操作。备份主服务器所有的数据到从服务器:mysqldump --all-databases --flush-logs --master-data=2 --lock-all-tables > all.sql ;

在读操作时怎样挑选服务器响应:

  1、round-robin(轮询)。

  2、取模:根据sql语句的hash值计算取哪台服务器,同一sql语句的hash值相同,就能保证服务器的缓存得到利用。

  3、用缓存服务器:请求到来时先去找缓存服务器,缓存服务器中有就直接返回,没有再去查询服务器,再均定是否缓存到缓存服务器上。memcached就是一个缓存服务器。缓存服务器只是起到缓存的作用,但是缓存什么由应用程序决定。

结构图:

技术分享

怎样减轻主服务器的工作压力:

  采用中继服务器,master--relay(master-slave)--slave。中继服务器将存储引擎设为black-hole,使中继服务器只往中继日志和二进制日志中写数据。

读写分离:

  作用实现读写分离和读负载均衡。如果不加读写分离器,就需要在应用程序中实现读写分离。

半同步:

  就是在多台从服务器中找出一台和主服务数据写如保持同步。主服务等待从服务器数据写入后才返回。

  在主服务器和从服务器上分别需要安装插件。

  主服务器上:INSTALL PLUGIN rpl_semi_sync_master SONAME ‘semisync_master‘;

  SHOW GLOBAL VARIABLES LIKE ‘%semi%‘;

  SET GLOBAL rpl_semi_sync_master_enabled=ON;

  SET GLOBAL rpl_semi_sync_master_timeout=1000;

  从服务器上:INSTALL PLUGIN rpl_semi_sync_slave SONAME ‘semisync_slave;

  SET GLOBAL rpl_semi_sync_slave_enabled=ON;

  STOP SLAVE IO_THREAD;STAT SLAVE IO_THREAD;

  

 

mysql主从复制

标签:

原文地址:http://www.cnblogs.com/Jc-zhu/p/4738065.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!