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主从复制的原理和实践操作的更多相关文章

  1. MySQL主从复制异步原理以及搭建

    MySQL主从复制的原理: 1.首先,MySQL主库在事务提交时会把数据变更作为时间events记录在二进制日志文件binlog中:MySQL主库上的sync_binlog参数控制Binlog日志以什 ...

  2. MySQL主从复制的原理及配置

    [http://www.jb51.net/article/50053.htm]   MySQL 数据库的高可用性架构:         集群,读写分离,主备.而后面两种都是通过复制来实现的.下面将简单 ...

  3. MySQL主从复制与读写分离实践

    MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践  目录: 介绍 MySQL的安装与配置 MySQL主从复制 MySQL读写分离 编译安装lua 安装配置MySQ ...

  4. 15、mysql主从复制的原理

    mysql主从复制 要想实现mysql的主从复制需要先了解二进制日志(bin log)和中继日志(relay log). 二进制日志(bin log) binlog即binary log,二进制日志文 ...

  5. kmeans算法原理以及实践操作(多种k值确定以及如何选取初始点方法)

    kmeans一般在数据分析前期使用,选取适当的k,将数据聚类后,然后研究不同聚类下数据的特点. 算法原理: (1) 随机选取k个中心点: (2) 在第j次迭代中,对于每个样本点,选取最近的中心点,归为 ...

  6. MySQL主从复制的原理和注意事项都在这儿了!!

    写在前面 最近在写Mycat专题,由于不少小伙伴最近要出去面试,问我能不能简单写下MySQL的主从复制原理和注意事项,因为在之前的面试中被问到了这些问题.我:可以啊,安排上了!! 主从复制原理 (1) ...

  7. 基于GTID的MySQL主从复制#从原理到配置

    GTID是一个基于原始mysql服务器生成的一个已经被成功执行的全局事务ID,它由服务器ID以及事务ID组合而成.这个全局事务ID不仅仅在原始服务器器上唯一,在所有存在主从关系 的mysql服务器上也 ...

  8. 深入了解MySQL主从复制的原理

    欢迎微信关注「SH的全栈笔记」 0. 主从复制 首先主从复制是什么?简单来说是让一台MySQL服务器去复制另一台MySQL的数据,使两个服务器的数据保持一致. 这种方式与Redis的主从复制的思路没有 ...

  9. MySQL主从复制的原理及配置方法(比较详细)

    MySQL 的数据库的高可用性的架构大概有以下几种:集群,读写分离,主备.而后面两种都是通过复制来实现的.下面将简单介绍复制的原理及配置,以及一些常见的问题 一.复制的原理 MySQL 复制基于主服务 ...

随机推荐

  1. 一个php开发的用于路由器的小功能

    最近接到一个需求,假设有A.B.C 三台主机.现A主机要访问C主机上的一个脚本,并且根据A传递的参数给C主机,同时接受C主机返回来的数据.但是现在A主机不能直接通过url.IP访问C主机,需要借由主机 ...

  2. $smary模板缓存

    <?php //引入配置文件 $fillname="../cache/testhuancun.html"; //设置一个缓存时间 $time=; //判断如果缓存文件不存在的 ...

  3. STM32 驱动1602液晶

    利用STM32f103c8t6单片机驱动1602A液晶进行显示功能 上图即为写入信息后的效果图 本人用的是STM32的核心系统,无任何外设 库函数:3.5版本的库函数 驱动模式:采用4线驱动模式 供电 ...

  4. JQuery Easy Ui dataGrid 数据表格 -->转

    转至: http://www.cnblogs.com/cnjava/archive/2013/01/21/2869876.html#events 数据表格 - DataGrid 内容 概况 使用方法 ...

  5. HDU 2830:Matrix Swapping II(思维)

    http://acm.hdu.edu.cn/showproblem.php?pid=2830 题意:-- 思路:对于每一列,它是固定的,用dp[][]处理出连续的长度.例如: 假设我们扫第四列的时候, ...

  6. java和Ajax

    原博(实在太啰嗦了):https://netbeans.org/kb/docs/web/ajax-quickstart_zh_CN.html 1.Ajax的基本原理 Ajax 代表异步 JavaScr ...

  7. Python关键字yield的解释

    yield 是一个类似 return 的关键字,只是这个函数返回的是个生成器. >>> def createGenerator() : ... mylist = range(3) . ...

  8. Cassandra 单机入门例子——有索引

    入门例子: http://wiki.apache.org/cassandra/GettingStarted 添加环境变量并source生效,使得可以在任意位置执行cassandra/bin安装目录下的 ...

  9. 部署statspack工具(二)之解决方案1

    7.解决方案一:调整buffer cache sys@TESTDB12>alter system set sga_max_size=804m scope=spfile;        //重启数 ...

  10. mysql 无法启动的原因Can't start server: can't create PID file: No space left on device

    一大早来到公司,看到了一个噩梦,后台总是登录不上,登录就出错,还以为被黑客入侵了.经过1个小时的排错原因如下: 我的服务器是linux的,mysql的报错日志路径是/var/log/,经过查看日志发现 ...