【笔记】数据库主从读写分离

一、数据库读写分离的好处

1、将读写操作分离到不同的服务器上,避免主服务器出现性能瓶颈

2、主服务器进行写操作时,不影响查询应用服务的查询功能,降低阻塞,提高并发

3、数据库拥有多个容灾副本,提高数据安全性。同时,当主服务器故障时,可立即切换到其他服务器,提高系统可用性

二、读写分离的基本原理

让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECE查询操作。数据库复制被用来把事务性操作导致的变更同步到其他从数据库。

以SQL为例,主库负责写数据、读数据。读库仅负责读数据。每次有写库操作,同步更新到读库。写库就一个,读库可以有很多个,采用日志同步的方式实现主库和多个读库的数据同步。

三、Replication(复制)原理

MySQL的Replication是一个异步的复制过程,从一个MySQL节点(称之为Master)复制到另一个MySQL节点(称之为Slave)。

在Master与Slave之间实现整个复制过程主要由三个线程来完成,其中两个线程(SQL线程和I/O线程)在Slave端,另一个线程(I/O线程)在Master端。

要实现MySQLd Reolication,首先必须打开Master端的Binary Log,因为整个复制过程实际上就是Slave从Master端获取该日志然后再在自己身上完全顺序地执行日志中记录的各种操作。

四、总结:

1、每个从数据库仅可以设置一个主数据库;

2、主数据库在执行sql之后,记录二进制log文件(bin-log)。

3、从数据库链接主数据库,并从主库获取bin-log,存于本地relay-log,并从上次记录的位置起执行sql,一旦遇到错误则停止同步。

五、推论:

1、主从服务器间的数据库不是实时同步,就算网络链接正常,也存在瞬间,主从数据不一致。

2、如果主从的网络断开,从会在网络正常后,批量同步。

3、如果对从库进行数据修改,那么很可能从库在执行主库的bin-log时出现错误而停止同步,这个是很危险的操作。所以一般情况下,非常小心地修改从库上的数据。

4、一个衍生的配置是双主,互为主从,只要双方的修改不冲突,可以工作良好。

5、如果需要多主的话,可以用环形配置,这样任意一个及诶单的修改都可以同步到所有节点。

六、主从设置:

首先,在主MySQL节点上,为slave创建一个用户:

GRANT  REPLICATION  SLAVE , REPLICATION  CLIENT  ON  *.*  TO  'slave'@'192.168.1.10'  IDENTIFIED BY  'slave';

实际上,为支持主从动态同步,或者手动切换,一般都是在所有主从节点上创建好这个用户。

然后就是MySQL本身的配置了,这需要修改my.conf或者my.ini文件。在mysqld这一节下面增加:

主库

server-id=1

auto-increment-increment=2

auto-increment-offset=1

log-bin

binlog-do-db=stest

binlog_format=mixed

从库

master-host=192.168.1.62

master-user=slave

master-password=slave

replicate-do-db=mtest

上面这两段设置,在两个MySQL节点上,各加一段就好。

binlog-do-db和replicate-do-db就是设置相应的需要做同步的数据库了,auto-increment-increment和auto-increment-offset是为了支持双主而设置的,在只做主从的时候,也可以不设置。

七、双主的设置

从原理论来看MySQL也支持双主的设置,即两个MySQL节点互为主备,不过虽然理论上,双主只要数据不冲突就可以工作的很好,但实际情况中还是很容易发生数据冲突的,比如在同步完成之前,双方都修改同一条记录。

因此在实际中,最好不要让两边同事修改。即逻辑上仍按照主从的方式工作。但双主的设置仍然是有意义的,因为这样做之后,切换主备会变得很简单。

双主在设置时,只需将上面的一段设置复制一份,分别写入两个MySQL节点的配置文件,但要修改相应的server-id、auto-increment-offset和master-host。

auto-increment-offset就是为了让双主同时在一张表中进行添加操作时不会出现id冲突,所以在两个节点上auto-increment-offset设置为不同的值就好。

另:不要忘了,在两个节点上都为对方创建用户。应用层的负载均衡本文只介绍了MySQL自身的Replication配置,在上面的图中也可以看出,有了Replication,还需要应用层(或者中间件)做一个负载均衡,这样才能最大程度发挥MySQL Replication的优势。

MySQL的Replication是一个异步的复制过程,从一个MySQL instance(Master)复制到另一个MySQL instance(slave)。

在Master与Slave之间的实现整个复制过程主要由三个线程来完成,其中两个线程(sql线程和I/O线程)在Slave端,另一个线程(I/O线程)在Master端。

要实现MySQL的Replication,首先必须打开Master端的Binary Log(mysql-bin.xxxxxx)功能,否则无法实现。

因为整个复制过程实际上就是Slave从Master端获取该日志然后再在自己身上完全顺序地执行日志中所记录的各种操作。打开,MySQL的Binary Log可以通过在启动MySQL Server的过程中使用'-log-bin'参数选项,或者在my.conf配置文件中的mysqld参数组([mysqld]标识后的参数部分)增加“log-bin”参数项。

八、MySQL复制的基本过程如下:

1、Slave上面的IO线程连接上Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容;

2、Master接收到来自Slave的IO线程的请求后,通过负责复制的IO线程根据请求信息读取指定日志指定位置之后的日志信息,返回给Slave端的IO线程。返回信息中除了日志所包含的的信息之外,还包括本次返回的信息在Master端的Binary Log文件的名称一级在Binary Log中的位置。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容