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 复制基于主服务 ...
随机推荐
- sed与正则用法收集
1.将文本每行最后七个字符换成!号 sed -n 's#.\{7\}$#!#p' ooo 在文本的每一行前添加#符号 sed 's/^.\?/#&/' passwd & 替代 ...
- XP Mode 虛擬機器 for Windows 7
免驗證官方直接下載 官網 Download Windows Virtual PC XP Mode for Windows 7 性質 Windows 7 免費 / en 多國 繁體中文(Traditio ...
- PHP5中PDO的入门教程
PDO(PHP Data Object) 是PHP 5新出来的东西,在PHP 5.5中,更是强烈推荐使用PDO来处理数据库,将把所有的数据库扩展移到了PECL,那么默认就是没有了我们喜爱的php_my ...
- 重新回顾JSP
由于个人喜好,觉得自己需要学习一下,服务端的语言.JSP之前学过,不够许久未用了. http://www.w3cschool.cc/jsp/jsp-intro.html 1.Java代码片段使用< ...
- 滚轮事件的防冒泡、阻止默认行为的代码(效果是:只让当前div滚动,连当前文档都不滚动的效果)
//用firefox变量表示火狐代理var firefox = navigator.userAgent.indexOf('Firefox') != -1;function MouseWheel(e){ ...
- treegrid.bootstrap使用说明
treegrid.bootstrap使用说明 这个插件是用来做有层次的表格的,大概如图: 官网 http://maxazan.github.io/jquery-treegrid/ 使用这个控件之前需 ...
- JS属性操作
一.属性读操作:元素.属性名 ( 获取.找到属性值 ) 属性写操作:元素.属性名 = 新的值 ( 替换.修改属性值 ) 二.没有属性名的,也可进行读.写操作: 读操作:元素.innerHTML ...
- PHP生成短信验证码
简单版本 <?php function generate_code($length = 6) { $min = pow(10 , ($length - 1)); $max = pow(10, $ ...
- EntityFramework Core解决并发详解
前言 对过年已经无感,不过还是有很多闲暇时间来学学东西,这一点是极好的,好了,本节我们来讲讲EntityFramewoek Core中的并发问题. 话题(EntityFramework Core并发) ...
- Eclipse安装git
用Eclipse开发,如果需要团队协作,git作为分布式版本管理工具就是个比较好的选择.下面简单介绍一下git插件的安装方法: 1.Help -- install new software 打开插件安 ...