配置mysql5.5主从复制、半同步复制、主主复制
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主从复制、半同步复制、主主复制的更多相关文章
- Mysql的ssl主从复制+半同步主从复制
Mysql的ssl主从复制+半同步主从复制 准备工作 1.主从服务器时间同步 [root@localhost ~]# crontab -e */30 * * * * /usr/sbin/ntpdate ...
- MySQL主从复制半同步复制原理及搭建
在MySQL5.5之前的版本中,MySQL的复制是异步复制,主库和从库的数据之间存在一定的延迟,比如网络故障等各种原因,这样子容易存在隐患就是:当在主库写入一个事务成功后并提交了,但是由于从库延迟没有 ...
- (MHA+MYSQL-5.7增强半同步)高可用架构设计与实现
架构使用mysql5.7版本基于GTD增强半同步并行复制配置 reploication 一主两从,使用MHA套件管理整个复制架构,实现故障自动切换高可用 优势: ...
- MySQL系列详解六:MySQL主从复制/半同步演示-技术流ken
前言 随着技术的发展,在实际的生产环境中,由单台MySQL数据库服务器不能满足实际的需求.此时数据库集群就很好的解决了这个问题了.采用MySQL分布式集群,能够搭建一个高并发.负载均衡的集群服务器.在 ...
- Centos7 下配置mysql5.6主从复制实例(一主两从)
标签:mysql 数据库 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://8941355.blog.51cto.com/89313 ...
- 实现mysql的读写分离(mysql-proxy)____1(mysql的主从复制,基于gtid的主从复制,半同步复制,组复制)
主从复制原理: 从库生成两个线程,一个I/O线程,一个SQL线程: i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中:主库会生成一个 log ...
- 关于Mysql5.6半同步主从复制的开启方法【转】
介绍 先了解一下mysql的主从复制是什么回事,我们都知道,mysql主从复制是基于binlog的复制方式,而mysql默认的主从复制方式,其实是异步复制. 主库实际上并不关心从库是否把数据拉完没有, ...
- MySQL5.7 半同步复制
一.概述 5.5与5.7的半同步复制可能存在差异,从MySQL5.5开始,MySQL以插件的形式支持半同步复制 异步:默认情况下,MySQL复制是异步的.主库在执行完客户端提交的事务后会立即将结果返给 ...
- MySQL半同步复制的搭建和配置原理
半同步复制: 什么是半同步复制?我们知道在默认情况下,MySQL的复制是异步的,这意味着主服务器及其从服务器是独立的.异步复制可以提供最佳的性能,因为主服务器在将更新的数据写入它的二进制日志(Binl ...
随机推荐
- Hadoop原生态版安装
1 安装环境和必要软件 3 台 ubuntu 16.04 vim 2 创建hadoop用户 sudo useradd -m hadoop -s /bin/bash sudo passwd hadoop ...
- 静态代码块、构造代码块、构造方法优先级(重点)-------java基础总结
package com.mon11.day11; /** * 类说明 : * @author 作者 : chenyanlong * @version 创建时间:2017年11月11日 */ publi ...
- loadrunner之WebServices协议脚本编写(三种请求模式)
以天气预报网站为例:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl 一.web_service_call模式 步骤如下 ...
- db nosql redis / Redis Sentinel
s Redis基础原理和日常操作方法 http://itsm.cns*****.com/kindeditor/img/20170527/759128afca564051b491e6a51a5bad40 ...
- my read travel
s 江苏省5A级旅游景区 ▪ 无锡中视股份三国水浒景区 ( 无锡) ▪ 中山陵景区 ( 南京) ▪ 南京夫子庙 ( 南京) ▪ 周庄古镇游览区 ( 苏州) ▪ 中华恐龙园 ( 常州) ▪ 金坛市 ( ...
- JAVA记录-Spring两大特性
1.IOC控制反转 Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想.在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象 ...
- JAVA-大白话探索JVM-运行时内存(三)
前面章节 JAVA-大白话探索JVM-类加载器(一) JAVA-大白话探索JVM-类加载过程(二) JVM运行时内存 通过之前的章节,我们知道.class类如何加载到内存中,如图红框 开始讲讲内存空间 ...
- spring boot 2.0.3+spring cloud (Finchley)1、搭建服务注册和发现组件Eureka 以及构建高可用Eureka Server集群
一 .搭建Eureka 编写Eureka Server 由于有多个spring boot项目,采用maven多module的结构,项目结构如下: 新建一个maven主工程,在主maven的pom文件中 ...
- TCP粘包,拆包及解决方法
在进行Java NIO学习时,发现,如果客户端连续不断的向服务端发送数据包时,服务端接收的数据会出现两个数据包粘在一起的情况,这就是TCP协议中经常会遇到的粘包以及拆包的问题.我们都知道TCP属于传输 ...
- 用Emacs的这些年
读技术博客时发现又有人提起我曾写的那篇口水文章 为何Emacs和Vim被称为两大神器.写那篇文章时,我还在Vim和Emacs之间摇摆.当然主要在用vim,博士学位论文和所有的国际会议文章都是用Vim编 ...