最近给新上线的项目进行主从结构的搭建,因此整理些有用的东西出来,供作记录:

一.mysql主从复制的一般配置步骤:

  1.准备两台数据库环境,或者单台多实例的环境,能够正常的启动和登陆。

  2.配置my.cnf文件,主库配置log-bin和server-id参数,从库配置server-id参数,不能和主库及其他从库一样,一般不开启从库的log-bin功能。注意:参数配

   置后要重启才能生效。

  3.登陆主库增加用于从库连接主库同步的账户例如:rep,并授权replication slave同步的权限。

  4.登陆主库,并进行整库锁表 flush table with read lock (窗口关闭后即失效,超时参数到了也失效);然后show master status查看binlog的位置状态。

  5.新开窗口,linux命令行备份或者导出原有的数据库数据,并拷贝到从库所在的服务器上。

  6.解锁主库,unlock tables;

  7.把主库导出的原有数据恢复到从库。

  8.根据主库的show master status查看binlog的位置状态,在从库下面执行change master to..的语句。

  9.从库开启同步开关,start slave.

  10.从库show master status \G查看同步的状态

二.复制主线程的状态:

  下面列出了主服务器的Binlog Dump线程的State列的最常见的状态。如果你没有在主服务器上看见任何的Binlog Dump线程,这说明复制没有在运行,目前没有连接任何从服务器。

1.sending binlog event to slave  ----- 线程已经从二进制日志读取了一个事件并且正将它发送到从服务器。

  2.finished reading one binlog;switch to next binlog --- 线程已经读完二进制日志并且正打开下一个要发送到从服务器的日志文件。

  3.Has sent all binlog to slave;waiting for binglog to be updated -- 线程已经从二进制日志读取所有主要的更新并已经发送到了从服务器。线程现在正空闲,等待由主服务器上新的更新导致出现在二进制日志中的新事件。

4.waiting to finalize termination -- 线程停止时发生的一个很简单的状态。

三.复制从I/O线程状态:

  使用  show slave status 显示State的最新状态,常见的状态如下:

  1.connecting to master --- 线程正试图连接主服务器

  2.checking master version -- 建立同主服务器之间的连接 后出现的短暂的状态。

  3. requesting binlog dump 

四. (1).生产授权方案1:

  主库:web  oldboy123 10.0.0.1 3306 (select insert delete update)

  从库:主库的web用户同步到从库,然后回收insert delete,update的权限

  不收回从库的权限,设置read-only参数去报从库只读。(注释:read-only参数只允许来自root或者super权限的账号的连接,对与普通用户则不会生效)  

  对开发而言:

  主库:web  oldboy123 10.0.0.1 3306 (select insert delete update)

  从库:web  oldboy123 10.0.0.2 3306 (select)

  (2).生产授权方案:

  主库:web_w  oldboy123 10.0.0.1 3306 (select insert delete update)

  从库:web_r  oldboy123 10.0.0.2 3306 (select)

  风险:web_w连接从库! 对开发而言,多套用户密码不专业。

  (3).生产授权方案3:

  mysql库不同步,即不同步授权的mysql库:

  使用:replicate-ignore-db=mysql; binlog-ignore-db=mysql即可不用同步授权的账号

  然后对主从库进行如下的授权:

  主库:web  oldboy123 10.0.0.1 3306 (select insert delete update)

  从库:web  oldboy123 10.0.0.2 3306 (select)

  缺陷:当从库换成主库的时候,发生问题

  方案:保留一个从库专门接替主库即可

  replication中还可以通过一下的选项来减少binlog的数据量,来达到提升效率的目的,前两个用在Master端,后六个用在Slave端

  Master端:

  --binlog-do-db:二进制日志记录的数据库(多个数据库用,分隔)

  --binlog-ignore-db:二进制日志记录的忽略的数据库(多个数据库用,分隔)

  Slave端:

  --replication-do-db:设定需要复制的数据库(多个数据库用,分隔)

  --replication-ignore-db:设定忽略复制的数据库(多个数据库用,分隔)

  --replication-do-table:设定需要复制的表(多个表用,分隔)

  --replication-ignore-table:设定需要忽略的复制的表(多个表用,分隔)

  binlog_format="MIXED"   #设置bin-log日志文件格式为:MIXED,可以防止主键重复。

五.mysql的主从复制的应用场景:

  mysql主从复制有利于数据库结构的健壮性,提升访问速度和易于维护管理。

  1).主从服务器互为备份

    主从服务器架构的设计,可以大大的加强数据库架构的健壮性。例如:当主服务器出现问题的时候,我们可以人工或者自动的切换到从服务器继续提供服务。

    这个类似于之前nfs存储数据通过inotify+rsync同步到备份的nfs非常的类似,只不过MySQL的同步方案,是其自带的工具。

  2).主从服务器读写分离分担网站的压力:

    主从服务器的架构可通过程序(php,java)或者代理软件(mysql-proxy,amoeba)对用户的请求实现读写分离,即通过在从服务器上仅仅处理select查

    询的请求,降低用户的查询时间以及读写同时在主服务器上带来的压力,对于更新的数据(update insert delete)仍然交给主服务器处理,确保主服务器

    和从服务器保持实时的同步,如果网站是以非更新为主的业务,如blog,www的首页展示等业务,查询的请求比较多,这是从服务器的读写分离负载均衡策

    略就很有效了,这就是读写分离数据结构。

    中大型公司:通过程序(php,java)

    测试环境:代理软件(mysql-proxpy,amoeba)

    门户网站:分布式dbproxy(读写分离,hash负载均衡,健康检查)。

    下面是一个常用的mysql的架构:

    

mysql主从复制的一些东西的整理的更多相关文章

  1. MYSQL主从复制配置(整理)

    MYSQL主从原理及过程 原理 Mysql的 Replication 是一个异步的复制过程(mysql5.1.7以上版本分为异步复制和半同步两种模式),从一个 Mysql instace(我们称之为 ...

  2. Mysql主从复制,读写分离(mysql-proxy),双主结构完整构建过程

    下面介绍MySQL主从复制,读写分离,双主结构完整构建过程,不涉及过多理论,只有实验和配置的过程. Mysql主从复制(转载请注明出处,博文地址:) 原理是master将改变记录到二进制日志(bina ...

  3. MySQL主从复制与读写分离

    MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践 Mysql作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过.但在实际的生产环境中, ...

  4. mysql主从复制的一篇文章(转载)

      管理mysql主从有2年多了,管理过200多组mysql主从,几乎涉及到各个版本的主从,本博文属于总结性的,有一部分是摘自网络,大部分是根据自己管理的心得和经验所写,整理了一下,分享给各位同行,希 ...

  5. MySQL主从复制与读写分离 --非原创

    原文出处:http://www.cnblogs.com/luckcs/articles/2543607.html MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践 ...

  6. mysql主从复制原理探索

    上一篇文章里面,讲到了遇到mysql主从延迟的坑,对于这次的坑多说两句,以前也看过这样的例子,也知道不能够写完之后马上更新,但是真正开发的时候还是没有注意到这一点,道理大家都懂,但是还是会犯错,只有等 ...

  7. Mysql主从复制原理及配置

    Mysql主从复制原理及配置 1.复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其 ...

  8. 在线建立或重做mysql主从复制架构方法(传统模式和GTID模式)【转】

    mysql主从复制架构,是mysql数据库主要特色之一,绝大多数公司都有用到. 而GTID模式是基于事务的复制模式的意思,发展到现在也是越来越多人用. 以前很多文章,介绍搭建mysql主从复制架构,是 ...

  9. [转]MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践

    转自:http://heylinux.com/archives/1004.html Mysql作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过.但在实际的生产环境中,由单 ...

随机推荐

  1. False Discovery Rate, a intuitive explanation

    [转载请注明出处]http://www.cnblogs.com/mashiqi Today let's talk about a intuitive explanation of Benjamini- ...

  2. Python 利用pytesser模块识别图像文字

    使用的是python的pytesser模块,原先想做的是图片中文识别,搞了一段时间了,在中文的识别上还是有很多问题,这里做记录分享. pytesser,OCR in Python using the ...

  3. Neo4j 两种索引Legacy Index与Schema Index区别

    Legacy Indexes 在Neo4j 2.0版本之前,Legacy index被称作indexes.这个索引是通过外部图存储在外的Lucene实现,允许“节点”和“联系”以key:value键值 ...

  4. 创建一个maven web project

    几经周折总算是找到了和高杨学长一样的web  project的方法.感谢学长的一语点醒.我之前以为,既是maven又是web project的项目得要是通过dynamic web project转换到 ...

  5. Python 100道题深入理解

    # -*- coding: utf-8 -*-# 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?# 程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所 ...

  6. 解决android 启动白屏问题

    Android 启动APP时黑屏白屏的三个解决方案 http://www.cnblogs.com/liqw/p/4263418.html android:windowSoftInputMode属性使用 ...

  7. .NET垃圾回收:非托管资源,IDispose和析构函数的结合

    http://blog.jobbole.com/85436/ 原文出处: 田小计划   欢迎分享原创到伯乐头条 前面一篇文章介绍了垃圾回收的基本工作原理,垃圾回收器并不是可以管理内存中的所有资源.对于 ...

  8. Flume1.5.0的安装、部署、简单应用(含伪分布式、与hadoop2.2.0、hbase0.96的案例)

    目录: 一.什么是Flume? 1)flume的特点 2)flume的可靠性 3)flume的可恢复性 4)flume 的 一些核心概念 二.flume的官方网站在哪里? 三.在哪里下载? 四.如何安 ...

  9. Mysql逻辑模块组成

    总的来说,MySQL可以看成是二层架构,第一层我们通常叫做SQL Layer,在MySQL数据库系统处理底层数据之前的所有工作都是在这一层完成的,包括权限判断,sql解析,执行计划优化,query c ...

  10. Nginx 负载均衡学习

    nginx作为负载均衡服务器,用户请求先到达nginx,再由nginx根据负载配置将请求转发至 tomcat服务器. nginx负载均衡服务器 tomcat1服务器 tomcat2服务器 1.1   ...