AB【主从复制】

A就是那个主库,B就是那个从库。一般是AB复制,你也可以AB复制。

举例:
   主要实现什么功能?

在主库执行 create database abc,在从库上自动创建了abc库
mysql开启日志功能,你在库中create database abc库,这个动作一定会记录在bin-log日志中。
此时我通过一种机制把Bin-log下载到从库,从库中也有create database abc语句,然后我通过从库本地的SQL线程,在我从库再执行一下create database abc语句。
所以主库和从库做了一样的操作了。

AB复制主要通过2个线程实现:

从库上的
I/O线程:从主库上把bin-log下载到从库后,放到从库的Relay-log中。
SQL线程:把Relay-log中的动作,在从库上做一次。

注意:
   (1)、关闭防火墙强,如果主库或从库中开了防火墙,会造成I/O线程无法连接。
   (2)、生产遇到SQL线程报错,如何解决?从主库拿到一些操作,在从库上执行不了,通过会跳过那些执行不了的。【详细上网自己查,咱们模拟不出来】

咱们的数据是以为主库为准,在生产库做AB复制,主库中肯定有一些数据,从库肯定是新的库
【假如原从库不是新的,从库中有ABC库,现在在主库中执行create table abc,肯定就报错了】。
咱们实验环境中是两台新虚拟机,主库没有数据,咱们自己模拟点数据。
实验手册是全的,是按主库有数据来写的。

主库【模拟数据】:
create database m;
use m;
create table a(a int);
insert into a values(1);

----------------------------------------
[root@rhce ~]# service iptables stop //关闭防火墙
[root@rhce ~]# setenforce 0 //临时关闭selinux
vi /etc/selinux/config   //永久关闭,要重启
将SELINUX=enforcing改为SELINUX=disabled

步骤

####################1.################### 
master:
 vim /etc/my.cnf 【配置文件,server_id的值小,代表是主】
 [mysql]
server_id = 1

slave: 【配置文件】
 vim /etc/my.cnf
 [mysql]
server_id = 2

####################2.####################
master:
 vim /etc/my.cnf   【在主库开启bin-log日志】
 [mysql]
server_id = 1
log-bin=binlog
log-bin-index=binlog.index

###################3.#####################
slave:
 vim /etc/my.cnf  【在从库开启relay-log日志】
 [mysql]
 server_id = 2
 relay_log = /app/mysql/mysql-relay-bin
 relay_log_index=/app/mysql/mysql-relay-bin.index

###################4.#####################
 master && slave
 service mysql restart 【修改了配置文件,重启服务配置生效】

###################5.#####################
 master:
mysql> GRANT replication slave ON *.* TO 'liuxiaopeng'@'%' identified by 'liuxiaopeng'; 【创建一个用户,赋予复制权限】
Query OK, 0 rows affected (0.05 sec)

mysql> flush privileges; 【权限生效】
Query OK, 0 rows affected (0.00 sec)

##################################################
slave: 【如果从库以前有数据,要干掉原有数据,保持从库没有数据】

service mysqld stop
 cd /app/mysql/data  【进行数据目录】
 rm -fr 只删除数据
 service mysql restart
 
 master: 【主库上有一些数据了,从库是干净的,要同步数据,两个库在同一起点才能同步。所以把主库的旧数据导出,再导入从库,让两边数据一致】

mysqldump -u root -pmysql m >/tmp/full.sql
  scp /tmp/full.sql root@从库IP:/tmp/
 scp /tmp/full.sql root@192.168.8.101:/tmp/
slave:
 mysql -u root -pmysql m < /tmp/full.sql  【导入主库的旧数据】

########################6.#######################
master:
 mysql> flush tables with read lock; 【给主库加上读锁,防止再的操作修改主库。咱们上面已经把主从库两边数据同步了】
 mysql> show master status;【查看Bin-log状态,查看写到哪个日志的哪个位置了,从库从现在的位置同步】
+---------------+----------+--------------+------------------+-------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000001 |      402 |              |                  |                   |
+---------------+----------+--------------+------------------+-------------------+

mysql>unlock tables;

########################7.#############################
slave:
mysql> change master to master_host='主库IP', master_port=3306, master_user='同步复制的用户', master_password='同步复制的密码', master_log_file='binlog.000003',master_log_pos=295;

change master to master_host='192.168.8.100', master_port=3306, master_user='lipengfei', master_password='lipengfei', master_log_file='binlog.000001',master_log_pos=402;

mysql> start slave;

##########################8.##########################
slave: 【查看AB复制成功没】
 mysql> show slave status \G
   Slave_IO_Running: Yes
     Slave_SQL_Running: Yes

创建数据测试
 master:
create database slave;
use slave;
create table a(a int);
insert into a values(1);
insert into a values(2);
 
slave:
show databases;
use slave;
select * from a;
 
#################################################################
Seconds_Behind_Master: 0 【说明同步效率非常好:主库发生变化,过了多少秒,从库就更新过来了】

slave:【从库的数据应该全是从主库同步过来的,不应该有人往从库中写数据】
vim /etc/my.cnf
read-only=1 【只读,如果使用root用户登录,可以写数据,其它用户不能】

如果从库的同步进程停止了,主库的操作还会往从库中同步吗?会丢数据吗?

slave:
  service mysql stop

master:
  use slave;
  insert into a values(3);
 insert into a values(4);

slave:
  service mysql start
  use slave;
 select * from a;【咱们没有手工操作,数据自动同步过来了,说明主库相关的配置肯定保存在一个文件中】

slave:
more /app/mysql/data/master.info

转载于:https://blog.51cto.com/daxionglaiba/1828095

mysql - AB复制相关推荐

  1. Mysql AB复制

    Mysql备份与AB复制 复制有两种方式:同步复制(msylq-cluster) 异步复制(mysql-m/s主从备份又称作双机热备) 一.Mysql完全备份(冷备份方式和mysqldump工具) 1 ...

  2. mysql ab复制_实现mysql的ab复制(a-b-b,a-b-c)

    实验环境准备: 三台虚拟机,IP分别为master: 192.168.2.1   slave:192.168.2.2   slave1:192.168.2.3 将192.168.2.1的主机做为mys ...

  3. mysql ab复制延时_Mysql的AB复制

    Mysql的AB复制 环境:rhel 6.5 master:192.168.2.1 slave1:192.168.2.2 slave2:192.168.2.10 1.mysql的单向复制 注: mys ...

  4. MYSQL AB复制原理

    Mysql复制(replication)是一个异步的复制,从一个Mysql instace(称之为Master)复制到另一个Mysql instance(称之Slave).实现整个复制操作主要由三个进 ...

  5. rhel6下,mysql 5.6.14 主从复制(也称mysql AB复制)环境配置[基于binlog]

    更多博文请关注:没有伞的孩子必须努力奔跑 (www.xuchanggang.cn) 一.mysql主(称master)从(称slave)复制的原理:       (1).master将数据改变记录到二 ...

  6. MYSQL的高级知识及AB复制

    慢查询日志(slow query log) mysql> show variables like '%log_slow%'; +------------------+-------+ | Var ...

  7. Mysql 异步复制

    一:Mysql AB复制的原理:(异步复制)             1.MysqlAB 主机有三个线程相互联系mysql数据库,实施同步.Master主机(Binlog Dump线程):slave主 ...

  8. Mysql 主从复制(AB复制)

    Mysql 主从复制(AB复制) Mysql的主从复制又叫做AB复制,主要作用就是将主服务器上的数据及时复制到从服务器上,来实现数据的同步,这样做的好处有,在进行数据备份时,可以减轻主服务器的运行压力 ...

  9. MySQL第四天(逻辑备份,AB复制、gtid,单表查询,)

    写在前面:笔记两种,以====分割开. 逻辑备份 较物理备份: 优点:不论是什么存储引擎,都可以用mysqldump备成SQL语句 缺点:速度较慢,导入时可能会出现格式不兼容的突发情况,无法做增量备份 ...

最新文章

  1. android在Service,BroadCast onReceiver()中弹出Dialog对话框
  2. C++ 用vector创建数组对象
  3. PostgreSQL系统表和视图
  4. [optee_os]-optee中的内核栈、中断栈、abort栈的定义
  5. sql注入攻击与防御第二版读书笔记二——SQL盲注利用
  6. [JAVA] IOException: Invalid byte 2 of 2-byte UTF-8 sequence(解决办法)
  7. 21.等值线图(Counter Plot)、Contour Demo、Creating a “meshgrid”、Calculation of the Values、等
  8. Shadow Properties之美(二)【Microsoft Entity Framework Core随笔】
  9. 那些程序员身上共有的属性,这就是他为什么比你进步快的原因!
  10. 美团大咖:程序员35岁前应做好的技术积累
  11. c语言中row和col的意思,这段c代码的含义时什么,怎么理解?
  12. python测试系列教程 —— 单元测试unittest
  13. Oracle数据库的下载与安装教程详解
  14. MacBook安装wget几种方式
  15. python利用PIL及openpyxl实现图片转为excel表格
  16. 07 ,矩阵的转置,矩阵的行列式,方阵 ( 2阶行列式,3阶行列式,n 阶行列式 ) :
  17. mysql删除密码代码_mysql 用户新建、受权、删除。密码修改
  18. 红帽linux配置远程连接,CentOS服务器端配置SSH远程连接的教程
  19. 计算机无法连接网络错误651,651错误代码,详细教您宽带连接提示错误651怎么办...
  20. Linux内核设计与实现(1)第一章:Linux内核简介

热门文章

  1. 个性化时代的网络媒体 不作就会死
  2. Linux如何实现镜像端口
  3. 【Python】keras使用LSTM拟合曲线
  4. 你解决的问题比你编写的代码更重要!
  5. Spring5源码解析-Spring中的异步事件
  6. canvas绘制时钟
  7. 可测试性如何帮助团队提升效率
  8. Linux 高可用(HA)集群之keepalived详解
  9. 对于java程序语言的单例设计模式讲解
  10. 【DB】几种ETL模式