MySQL主从复制的原理和实践操作
MySQL 主从(MySQL Replication),主要用于 MySQL 的实时备份、高可用HA、读写分离。在配置主从复制之前需要先准备 2 台 MySQL 服务器。
一、MySQL主从原理
1. 每个从仅可以设置一个主。
2. 主在执行 SQL 之后,记录二进制 LOG 文件(bin-log)。
3. 从连接主,并从主获取 binlog,存于本地 relay-log,并从上次记住的位置起执行 SQL,一旦遇到错误则停止同步。
二、Replication原理推论
1. 主从间的数据库不是实时同步,就算网络连接正常,也存在瞬间,主从数据不一致。
2. 如果主从的网络断开,从会在网络正常后,批量同步。
3. 如果对从进行修改数据,很可能从在执行主的bin-log出错而停止同步,一般不会修改从的数据。
4. 一个衍生的配置是双主,互为主从配置,只要双方的修改不冲突,可以工作良好。
5. 如果需要多主的话,可以用环形配置,这样任意一个节点的修改都可以同步到所有节点。
6. 可以应用在读写分离的场景中,用以降低单台 MySQL 服务器的 I/O。
7. 可以实现 MySQL 服务的 HA 集群。
8. 可以是一主多从,也可以是相互主从(主主)。
三、实验环境
操作系统:CentOS 6.8_x64
Mysql版本:5.1.73(主从版本要一致)
Mysql安装:yum安装的方式
主 IP 地址:192.168.0.8(master)
从 IP 地址:192.168.0.18(slave)
四、主从的基本配置
1、对master的设置
修改 master 数据库的配置文件,vim /etc/my.cnf
[mysqld]
... ... ... ...
log-bin=mysql-bin # 二进制日志名称,开启bin-log
server-id= # 为服务器设置一个独一无二的id,这里用IP的最后一位。
重启 master 数据库服务:
service mysqld restart
2、对slave的设置
对于 slave 的设置,不需要开启二进制日志,仅需要设置以下 server-id 即可。
server-id=
重启从服务区器。
五、创建主从复制账号
为了让 slave 能够通过 master 来获取二进制日志,需要专门给 slave 创建一个用户 repl,在主上操作。
mysql> grant replication slave on *.* to 'repl'@'192.168.0.18' identified by '';
Query OK, 0 rows affected (0.00 sec)
六、查看主服务器BIN日志的信息
执行完之后记录下这两值,然后在配置完从服务器之前不要对主服务器进行任何操作,因为每次操作数据库时这两值会发生改变。
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 259 | | |
+------------------+----------+--------------+------------------+
七、设置从服务器并启用slave
从上执行如下代码:
mysql> change master to
-> master_host="192.168.0.8",
-> master_user="repl",
-> master_password="123456",
-> master_log_file="mysql-bin.000001",
-> master_log_pos=248;
在从服务器配置完成,启动从服务器:
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
查看主从设置是否成功:
mysql> show slave status\G;
... ... ... ...
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
上面两项均为yes,说明配置成功。
八、测试主从
在主节点上创建一个数据库test或一张表table,然后在从节点上查看是否有test数据库或table表的创建。
MySQL主从复制的原理和实践操作的更多相关文章
- MySQL主从复制异步原理以及搭建
MySQL主从复制的原理: 1.首先,MySQL主库在事务提交时会把数据变更作为时间events记录在二进制日志文件binlog中:MySQL主库上的sync_binlog参数控制Binlog日志以什 ...
- MySQL主从复制的原理及配置
[http://www.jb51.net/article/50053.htm] MySQL 数据库的高可用性架构: 集群,读写分离,主备.而后面两种都是通过复制来实现的.下面将简单 ...
- MySQL主从复制与读写分离实践
MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践 目录: 介绍 MySQL的安装与配置 MySQL主从复制 MySQL读写分离 编译安装lua 安装配置MySQ ...
- 15、mysql主从复制的原理
mysql主从复制 要想实现mysql的主从复制需要先了解二进制日志(bin log)和中继日志(relay log). 二进制日志(bin log) binlog即binary log,二进制日志文 ...
- kmeans算法原理以及实践操作(多种k值确定以及如何选取初始点方法)
kmeans一般在数据分析前期使用,选取适当的k,将数据聚类后,然后研究不同聚类下数据的特点. 算法原理: (1) 随机选取k个中心点: (2) 在第j次迭代中,对于每个样本点,选取最近的中心点,归为 ...
- MySQL主从复制的原理和注意事项都在这儿了!!
写在前面 最近在写Mycat专题,由于不少小伙伴最近要出去面试,问我能不能简单写下MySQL的主从复制原理和注意事项,因为在之前的面试中被问到了这些问题.我:可以啊,安排上了!! 主从复制原理 (1) ...
- 基于GTID的MySQL主从复制#从原理到配置
GTID是一个基于原始mysql服务器生成的一个已经被成功执行的全局事务ID,它由服务器ID以及事务ID组合而成.这个全局事务ID不仅仅在原始服务器器上唯一,在所有存在主从关系 的mysql服务器上也 ...
- 深入了解MySQL主从复制的原理
欢迎微信关注「SH的全栈笔记」 0. 主从复制 首先主从复制是什么?简单来说是让一台MySQL服务器去复制另一台MySQL的数据,使两个服务器的数据保持一致. 这种方式与Redis的主从复制的思路没有 ...
- MySQL主从复制的原理及配置方法(比较详细)
MySQL 的数据库的高可用性的架构大概有以下几种:集群,读写分离,主备.而后面两种都是通过复制来实现的.下面将简单介绍复制的原理及配置,以及一些常见的问题 一.复制的原理 MySQL 复制基于主服务 ...
随机推荐
- 012-ViewState状态保持
客户端的状态保持方案:ViewState.隐藏域.Cookies.控件状态.URL查询参数服务端的状态保持方案:Session(会话).Application.Caching(缓存).DataBase ...
- Java编程思想非主流知识点
1. Java中的多态性理解(注意与C++区分) Java中除了static方法和final方法(private方法本质上属于final方法,因为不能被子类访问)之外,其它所有的方法都是动态绑定,这意 ...
- dev repositoryItem 手工定义
一.打开设计界面 二.定义Repository 事件定义 三.把repositoryItemTextEdit1邦定存在的列
- Mybatis中常见的SQL DML
1.sql select 查询 <select id="query" resultType="CfCurrbusilogEntity" > sele ...
- 云脉推出表格识别API接口可以自助接入
针对如今市场上对于海量票据信息的录入需求,近期厦门云脉技术有限公司推出票据识别相关的产品与服务,更是在云脉OCR SDK开发者平台上上线表格识别API接口,供广大开发者和集成商自助接入.为了降低财务系 ...
- Spark调优与调试
1.使用SparkConf配置Spark (1)在java中使用SparkConf创建一个应用: SparkConf conf =;i++){ javaBean bean =new javaBean( ...
- Emmet插件详解
http://www.ithao123.cn/content-10512551.html (webstorm的css编写插件)Emmet:HTML/CSS代码快速编写神器 [摘要:Emmet的前身 ...
- Angular - - $sce 和 $sceDelegate
$sce $sce 服务是AngularJs提供的一种严格上下文转义服务. 严格的上下文转义服务 严格的上下文转义(SCE)是一种需要在一定的语境中导致AngularJS绑定值被标记为安全使用语境的模 ...
- ZooKeepr日志清理
http://blog.csdn.net/xiaolang85/article/details/21184293
- ubuntu和Deepin下chrome浏览器提示flash下载失败或者过期的解决方案
问题:更新了下Deepin系统,打开chrome发现,视频放不了了,提示flash"下载失败" 谷歌浏览器版本是Version 55.0.2883.87 (64-bit) flas ...