mysql主服务器 192.168.8.40
mysql从服务器 192.168.8.41

全新配置过程(主和从数据库都没有数据):

主从复制主服务器设置:

1.改server-id
     2.启用二进制日志
     # mkdir /data/binlog

# chown -R mysql.mysql /data/binlog

3.创建有复制权限的账号
     mysql> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'repluser'@'192.168.8.41' IDENTIFIED BY 'replpass2014';
     mysql> FLUSH PRIVILEGES;

主从复制 从服务器设置:

1.给server-id

2.启用中继日志
      # mkdir /data/relaylog/
      # chown -R mysql.mysql /data/relaylog

vim /etc/my.cnf
      relay-log = /data/relaylog/relay-bin

重启服务使之生效
      # service mysqld restart
      3.连接主服务器
      mysql> CHANGE MASTER TO MASTER_HOST='192.168.8.40',MASTER_USER='repluser',MASTER_PASSWORD='replpass2014';
      mysql> START SLAVE;

若主服务器运行了一段时间,并且产生了大量的数据

则需要先将主从服务器数据保持一致

将主数据库的数据库导出,导入到从服务器中
     # mysqldump --all-databases --flush-logs --master-data=2 --lock-all-tables > /root/all.sql
从服务器上恢复
     # mysql < all.sql

mysql> CHANGE MASTER TO MASTER_HOST='192.168.8.40',MASTER_USER='repluser',MASTER_PASSWORD='replpass2014',MASTER_LOG_FILE='master-bin.000007',MASTER_LOG_POS=107;

通过从服务器的状态观察

mysql > show slave status;

验证是否一致

通过在主服务器上添加删除、数据查看slave服务器是否一致

限制从服务器只读

在从服务器上启动read-only=ON

注意:仅能限制那不具有super权限的用户无法执行写操作

半同步复制

半同步主服务器设置

mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
mysql> show global variables like '%semi%';
+------------------------------------+-------+
| Variable_name                      | Value |
+------------------------------------+-------+
| rpl_semi_sync_master_enabled       | OFF   |  (是否启动半同步功能) 
| rpl_semi_sync_master_timeout       | 10000 |  (连接从节点的超时时间)
| rpl_semi_sync_master_trace_level   | 32    |(是否检测半同步从节点上线)
| rpl_semi_sync_master_wait_no_slave | ON    |
+------------------------------------+-------+

mysql> set global rpl_semi_sync_master_enabled=1;
mysql> set global rpl_semi_sync_master_timeout=2000;

半同步从服务器配置

mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
mysql> set global rpl_semi_sync_slave_enabled=1;
mysql> show global variables like '%semi%';

mysql> STOP SLAVE IO_THREAD;
mysql> START SLAVE IO_THREAD;

在主服务器验证半同步
mysql> show global status like '%semi%';

卸载插件:
uninstall

一旦某次等待超时,会自动降级为异步

双主复制:

1)、在两台服务器上各自建立一个具有复制权限的用户;

mysql> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'repluser'@'192.168.%.%' IDEnTIFIED BY 'replpass2014';
mysql> FLUSH PRIVILEGES;

2)、修改配置文件:

# 主服务器A上
[mysqld]
server-id = 10
log-bin = mysql-bin
relay-log = relay-mysql
# 步长
auto-increment-increment = 2
# 起始值
auto-increment-offset = 1
#不要自动启用slave
skip_slave_start

# 主服务器B上
[mysqld]
server-id = 11
log-bin = mysql-bin
relay-log = relay-mysql
# 步长
auto-increment-increment = 2
# 起始值
auto-increment-offset = 2 
#不要自动启用slave
skip_slave_start

说明:
auto_increment_offset表示自增长字段从那个数开始,他的取值范围是1 .. 65535
auto_increment_increment表示自增长字段每次递增的量,其默认值是1,取值范围是1 .. 65535

创建二进制日志和中继日志目录并授权给mysql用户
# mkdir /data/relaylog
# chown -R mysql.mysql /data/relaylog

# mkdir /data/binlog
# chown -R mysql.mysql /data/binlog

重启两台主服务器的mysql服务
# service mysqld restart

3)、如果此时两台服务器均为新建立,且无其它写入操作,各服务器只需记录当前自己二进制日志文件及事件位置,以之作为另外的服务器复制起始位置即可

serverA|mysql> SHOW MASTER STATUS\G
************************** 1. row ***************************
           File: mysql-bin.000008
       Position: 107
   Binlog_Do_DB: 
Binlog_Ignore_DB: 
1 row in set (0.00 sec)

server2|mysql> SHOW MASTER STATUS\G
mysql> SHOW MASTER STATUS\G
*************************** 1. row ***************************
           File: mysql-bin.000003
       Position: 107
   Binlog_Do_DB: 
Binlog_Ignore_DB: 
1 row in set (0.00 sec)

4、各服务器接下来指定对另一台服务器为自己的主服务器即可:

主服务器A:
mysql> CHANGE MASTER TO MASTER_HOST='192.168.8.41',MASTER_USER='repluser',MASTER_PASSWORD='replpass2014',MASTER_LOG_FILE='master-bin.000003',MASTER_LOG_POS=107;

主服务器B:
mysql> CHANGE MASTER TO MASTER_HOST='192.168.8.40',MASTER_USER='repluser',MASTER_PASSWORD='replpass2014',MASTER_LOG_FILE='master-bin.000008',MASTER_LOG_POS=107;

5.启动复制

分别在两台服务器中执行
mysql> start slave;
通过查看slave状态查看设置是否生效
mysql> show slave status\G

6.验证

分别在两个服务器之间创建数据库,表,插入、删除数据,看是否能够同步并按照指定的步长依次增加数据

配置mysql5.5主从复制、半同步复制、主主复制的更多相关文章

  1. Mysql的ssl主从复制+半同步主从复制

    Mysql的ssl主从复制+半同步主从复制 准备工作 1.主从服务器时间同步 [root@localhost ~]# crontab -e */30 * * * * /usr/sbin/ntpdate ...

  2. MySQL主从复制半同步复制原理及搭建

    在MySQL5.5之前的版本中,MySQL的复制是异步复制,主库和从库的数据之间存在一定的延迟,比如网络故障等各种原因,这样子容易存在隐患就是:当在主库写入一个事务成功后并提交了,但是由于从库延迟没有 ...

  3. (MHA+MYSQL-5.7增强半同步)高可用架构设计与实现

           架构使用mysql5.7版本基于GTD增强半同步并行复制配置 reploication 一主两从,使用MHA套件管理整个复制架构,实现故障自动切换高可用        优势:       ...

  4. MySQL系列详解六:MySQL主从复制/半同步演示-技术流ken

    前言 随着技术的发展,在实际的生产环境中,由单台MySQL数据库服务器不能满足实际的需求.此时数据库集群就很好的解决了这个问题了.采用MySQL分布式集群,能够搭建一个高并发.负载均衡的集群服务器.在 ...

  5. Centos7 下配置mysql5.6主从复制实例(一主两从)

    标签:mysql 数据库 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://8941355.blog.51cto.com/89313 ...

  6. 实现mysql的读写分离(mysql-proxy)____1(mysql的主从复制,基于gtid的主从复制,半同步复制,组复制)

    主从复制原理: 从库生成两个线程,一个I/O线程,一个SQL线程: i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中:主库会生成一个 log ...

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

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

  8. MySQL5.7 半同步复制

    一.概述 5.5与5.7的半同步复制可能存在差异,从MySQL5.5开始,MySQL以插件的形式支持半同步复制 异步:默认情况下,MySQL复制是异步的.主库在执行完客户端提交的事务后会立即将结果返给 ...

  9. MySQL半同步复制的搭建和配置原理

    半同步复制: 什么是半同步复制?我们知道在默认情况下,MySQL的复制是异步的,这意味着主服务器及其从服务器是独立的.异步复制可以提供最佳的性能,因为主服务器在将更新的数据写入它的二进制日志(Binl ...

随机推荐

  1. 标准C++类std::string的内存共享和Copy-On-Write...

    标准C++类std::string的 内存共享和Copy-On-Write技术 陈皓 1. 概念 Scott Meyers在<More Effective C++>中举了个例子,不知你是否 ...

  2. hive1.1.0安装

    0. 说明 已经安装好Hadoop-1.2.1. 安装好mysql. 1.解压安装包 先把安装包下载.然后解压: tar -zxvf apache-hive-1.1.0-bin.tar.gz 2.配置 ...

  3. 洛谷P4112 最短不公共子串

    题意: 下面,给两个小写字母串A,B,请你计算: (1) A的一个最短的子串,它不是B的子串 (2) A的一个最短的子串,它不是B的子序列 (3) A的一个最短的子序列,它不是B的子串 (4) A的一 ...

  4. 单机安装ELK

    . 简介 1.1 介绍 ELK是三个开源工具组成,简单解释如下: Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格 ...

  5. 51Nod1376 (dp + BIT // cdq分治)

    https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1376 求LIS的数量. 乍一看觉得还是dp,仔细一看确实可以用dp做. ...

  6. 关于Springboot打包错误的问题 | Failed to execute goal org.springframework.boot:spring-boot-maven-plugin

    最近在使用spring-boot整合多模块,但是在父pom中打包maven install时总会报错:Failed to execute goal org.springframework.boot:s ...

  7. 出栈顺序 与 卡特兰数(Catalan)的关系

    一,问题描述 给定一个以字符串形式表示的入栈序列,请求出一共有多少种可能的出栈顺序?如何输出所有可能的出栈序列? 比如入栈序列为:1 2 3  ,则出栈序列一共有五种,分别如下:1 2 3.1 3 2 ...

  8. npm webpack工具 (监听压缩等)

    压缩.监听变动自动打包,:开发后,js编译压缩及样式去空格等 $ webpack --config XXX.js //url使用另一份配置文件(比如webpack.config2.js)来打包 $ w ...

  9. LINQ to SQL 模拟实现 ROW_NUMBER() OVER(ORDER BY ...) 的功能

    Ø  前言 本来是想使用 LINQ 实现类似 SQL: ROW_NUMBER() OVER(ORDER BY -) 的功能,但是貌似 LINQ 不支持,反正没找到解决办法,无奈使用了LINQ Sele ...

  10. Python实现Plugin

    1. Plugin与Python 插件的历史最早可追溯至1970年代,它是一种程序组件,通过和应用程序的互动,为应用程序增加一些所需要的特定的功能[维基].插件允许第三方开发者对已有的程序功能进行扩展 ...