原理场景:MySQL从3.23版本开始提供复制功能。指的是将主数据库的DDL和DML操作通过二进制日志传到从服务器(也叫从库),然后在从库上对这些日志重新执行,

     从而使得从库和主库的数据保持同步。

     优点:如果主库出现问题,可以快速切换到从库提供服务;

        可以在从库上执行查询操作,降低主库的访问压力;

        可以在从库上执行备份,以免备份期间影响主库的服务;

测试环境 2台最小化安装的centos7.2

      

具体操作

  1. 安装相同版本的mysql

    可参考之前的文章:http://www.cnblogs.com/ding2016/p/6756941.html

  2. 主(master)服务器配置

    ① 在my.cnf中的[mysqld]下新增如下项目:

      
      server_id=200                # 设置server_id,一般设置为IP;

      
      binlog-do-db=cnblogs              # 复制过滤:需要备份的数据库,输出binlog(这里我假设值备份cnblogs这个数据库);

      #binlog-do-db=db2           #如果要同步多个,另起一行,再加一条

      #binlog-do-db=db3           #同上

      
      binlog-ignore-db=mysql         # 复制过滤:不需要备份的数据库,不输出(mysql库一般不同步);
    

      log-bin=master-bin            # 开启二进制日志功能,可以随便取,最好有含义;

      binlog_cache_size=1M          # 为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存;

      binlog_format=mixed           # 主从复制的格式(mixed,statement,row,默认格式是statement);

      expire_logs_days=7            # 二进制日志自动删除/过期的天数。默认值为0,表示不自动删除;

      slave_skip_errors=1062           # 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
                            如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致; 

      log_bin_trust_function_creators=true    # 如果需要同步函数或者存储过程;  

    

     保存,退出;

    

     补充说明:主从复制格式

        (1) 基于语句的复制:在Master上执行的SQL语句,在Slave上执行同样的语句,MySQL默认采用基于语句的复制,效率比较高,

                  一旦发现没法精确复制时,会自动选着基于行的复制;           

        (2) 基于行的复制:把改变的内容复制到Slave,而不是把命令在Slave上执行一遍。从MySQL5.0开始支持;

        (3) 混合类型的复制:默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制;  

    ② 重启数据库

      ~]#systemctl restart mysql

     ③ 重新登入mysql并做相关授权

      ~]#mysql -uroot -p

      mysql>create user mysql@'%' identified by 'mysql';  

      mysql>grant all  on *.* to mysql@'%';      这里可根据自己的数据库和权限进行设置;   

      mysql>grant replication slave, replication client on *.* to 'mysql'@'158.158.41.201' identified by 'mysql';

      mysql>flush privileges;

      mysql>show master status;

        

        注意:记住上图蓝框标出的两个数值,因为在配置slave时会用到,每次重新配置都会改变。

  3. 从(slave)服务器配置

    ① 在my.cnf中的[mysqld]下新增如下项目:

      server_id=201          slave的ip做id;

      binlog-do-db=cnblogs      与master相对应(换成自己的需求定义);

      binlog-ignore-db=mysql     与master相对应;

      #log-bin=slave1-bin       先注释掉,可以先不加;

      binlog_cache_size=1M      

      binlog_format=mixed       
 
      expire_logs_days=7       
      
      slave_skip_errors=1062     

      relay_log=mysql-relay-bin    配置中继日志;

      log_slave_updates=1

      read_only=1

    

    保存,退出;

    补充说明:

        (1)如果Slave为其它Slave的Master时,必须设置bin_log;

        (2)log_slave_updates表示slave将复制事件写进自己的二进制日志;

        (3)当设置log_slave_updates时,你可以让slave扮演其它slave的master;

           此时,slave把SQL线程执行的事件写进行自己的二进制日志(binary log),然后,它的slave可以获取这些事件并执行它;

    ② 重启从服务器mysql

      ~]#systemctl restart mysql

    ③ 重新登录mysql

      ~]#mysql -uroot -p

      mysql> change master to master_host='158.158.41.200',master_user='mysql',master_password='mysql',

          master_port=3306,master_log_file='master-bin.000001',master_log_pos=708,master_connect_retry=30;

      

      上图蓝色标志处就是之前再主上“show master status;”后得到的重要数据,写进去即可。

    ④ 开启主从同步

      mysql>start slave;

    ⑤ 重看主从状态

      mysql>show slave status \G

      

      一切正常,一切就绪。

  4测试主从同步

    在master上新增cnblogs,查看slave上是否同步新增:

      

  结束.

mysql5.6做单向主从复制Replication的更多相关文章

  1. Centos7.5部署MySQL5.7基于GTID主从复制+并行复制+半同步复制+读写分离(ProxySQL) 环境- 运维笔记 (完整版)

    之前已经详细介绍了Mysql基于GTID主从复制的概念,原理和配置,下面整体记录下MySQL5.7基于GTID主从复制+并行复制+增强半同步复制+读写分离环境的实现过程,以便加深对mysql新特性GT ...

  2. 关于Mysql5.6半同步主从复制的开启方法【转】

    介绍 先了解一下mysql的主从复制是什么回事,我们都知道,mysql主从复制是基于binlog的复制方式,而mysql默认的主从复制方式,其实是异步复制. 主库实际上并不关心从库是否把数据拉完没有, ...

  3. Docker安装mysql5.7并且配置主从复制

    Docker安装mysql5.7并且配置主从复制 一.拉取mysql镜像 二.创建文件docker.cnf 2.1 mysql主机(192.168.21.55:3307) 2.1.1 创建文件夹 2. ...

  4. Centos6上进行Mysql5.6安装和主从复制部署

    系统:centos6 数据库:mysql5.6 服务器:两台,一主一从 一.Mysql5.6二进制版本的安装 Mysql的安装在有三种模式,第一种是yum安装,第二种是二进制模式的安装,第三种是源码编 ...

  5. MySQL主从复制(Replication for Backup)

    环境:MySQL5.7,VMware-Workstation-12-Pro,Windows-10,CentOS-7.5,Xshell5 1. 基本概念和操作思路 主从复制能做什么 数据库的主从复制,是 ...

  6. MySQL5.7安装、主从复制、读写分离原理解析以及详细配置

    一.Linux下mysql彻底卸载 1.查看mysql的安装情况 rpm -qa | grep -i mysql 2.删除上图安装的软件 rpm -ev mysql-community-libs--. ...

  7. windows下安装mysql5.6.13的主从复制

    如下操作均在vmware 虚拟机中winows xp 测试成功 中间走了很多弯路,网上的很多资料都是针对5.1以前的版本,在新版中根本无法使用,所以根据自己的实践整理了这篇文章 主服务:192.168 ...

  8. 关于MySQL5.7开启bin-log主从复制

    主从复制:一般用于实时备份.也可配合mycat,实现读写分离. 传统的基于 ROW的主从复制 简单说下步骤: master主库配置同步,slave从库配置同步,master锁表/备份,slave恢复数 ...

  9. centos7+mysql5.7.11实现主从复制

    1  首先检测当前的系统是否已经安装了MySQL yum list installed | grep mysql 如果有的话,删除 2  下载rpm库资源,在网页 https://dev.mysql. ...

随机推荐

  1. 手机移动端input date placehoder不显示

    要解决这个问题,我们可以伪造一个placehoder,通过css跟js来解决这个问题. 为什么要用js的原因是因为当你选择了时间之后,placehoder的文字没有清除掉,所以我们就需要把这个伪造的p ...

  2. 自己用习惯的idea快捷键笔记

    Ctrl + Space 自动完成(win10下冲突不能用,自己换成 Alt + \ ) 切换方法是菜单中依次打开 file -> settings -> keymap,搜索complet ...

  3. 爱上linux 简单实现移动办公处理环境.

    1. 这周一直在鼓捣linux上面的环境测试. 简单的将 我们的产品部署到了linux上面 详情见前面的 blog 2. 有时候下班了 或者是 在WC (科技园wc排队 说多了都是泪) 或者是眼睛不舒 ...

  4. ELK日志系统+x-pack安全验证

    根据之前已经搭好的ELK系统,现在加一个x-pack插件上去,不然谁拿到ip和端口都可以访问elasticsearch和kibana. 要的效果如下:打开kibana界面的时候要让其输入用户名密码才能 ...

  5. python爬虫之git的使用(github的使用)

    上面博文中我们简单的了解了一下基本的git操作,但是我们都是将代码放到了本地的仓库里面,但是如果我们是一个团队开发的话,肯定不会放到每个人的本地,必须得有个统一的地方存放代码,国外的大家都在使用git ...

  6. python学习笔记(11)--文件与数据格式化

    文件的概念: 文件是数据的抽象和集合,是存储在辅助存储器上的数据序列,文件是数据存储的一种形式,文件的展现形态,文本文件和二进制文件. 文本文件输出: f.txt文件保存:“我是中国人” >&g ...

  7. linux audit审计(6)--audit永久生效的规则配置

    定义reboot系统后,仍然生效的审计规则,有两种办法: 1.直接写入/etc/audit/audit.rules文件中,在service文件中需要加入ExecStartPost=-/sbin/aud ...

  8. 使用getopts处理输入参数

    在编写shell脚本中,需要输入参数,使用过程中,getopts更加方便.可以很好的处理用户输入的参数和参数值. 参加如下一段脚本: #!/bin/bash while getopts ": ...

  9. python设计模式第十九天【职责链模式】

    1.应用场景 (1)将一个任务拆分为具有顺序的多个部分,每个类完成相应的部分,并且顺序执行 (2)软件窗口的消息传播 (3)SERVLET容积的过滤器Filter的实现 2.代码实现 #!/usr/b ...

  10. Javassist之常用API的应用 02

    测试模型代码: package org.study2.JavaSenior.annotation.javassistDemo; /** * @Auther:GongXingRui * @Date:20 ...