千家信息网

什么是MYSQL的AB复制原理

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,下面讲讲关于什么是MYSQL的AB复制原理,文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完什么是MYSQL的AB复制原理这篇文章你一定会有所受益。Myslq AB复制做AB
千家信息网最后更新 2026年11月03日什么是MYSQL的AB复制原理

下面讲讲关于什么是MYSQL的AB复制原理,文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完什么是MYSQL的AB复制原理这篇文章你一定会有所受益。

Myslq AB复制

做AB复制之前前提时两边的数据必须一样,Mysql复制默认的是异步复制,master将事物事件写入binlog,但不知道slave何时接受且已接受,在异步复制的机制的情况下,如果master宕机,事务在master上已提交,但很可能这些事物没有传到任何slave上。此时salve有可能丢失事务。

官方半同步的复制的概念:

1 当slave主机连接到master时。能够查看是否处于半同步复制的机制。

2 当master上开启半同步复制的功能时,至少应该有一个slave开启其功能。

3 .当一个事务的事件都已写入其relay-log中且已刷新到磁盘上,Slave才会告知已收到

同步复制:Master提交事务,直到事务在所有的Slave都已提交,此时才会返回客户端,事务执行完毕。缺点:完成一个事务可能会有很大的延迟。

异步复制:当Slave准备好才会向Master请求binlog。缺点:不能保证一些事件都能够被所有的Slave所接收。

半同步复制:半同步复制工作的机制处于同步和异步之间,Master的事务提交阻塞,只要一个Slave已收到该事务的事件且已记录。它不会等待所有的Slave都告知已收到,且它只是接收,并不用等其完全执行且提交

实验 server2 :master

Server3 :slave

mysql-5.1.71版本

[root@server2 ~]# yum install mysql-server -y

[root@server3~]# yum install mysql-server -y

[root@server2 ~]# /etc/init.d/mysqld start

[root@server2 ~]# vim /etc/my.cnf

在[mysqld]添加以下参数

8 log-bin=mysql-bin 启动二进制日志

9 binlog-do-db=westos 二进制日志同步的数据库名称

10 server-id=1 必须是1到2^32-1之间的一个正整数数

[root@server2 ~]# /etc/init.d/mysqld restart 在重启服务的过程中如果失败,要去/var/log/mysql.log查看原因,一般来说都是上面修改的配置文件错了,如果不是在看其他原因,时在不行据删除/var/lib/mysql 里面的文件,然后初始化重启。

[root@server2 mysql]# mysql_secure_installation 修改密码

[root@server2 mysql]# mysql -pwestos

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 11

Server version: 5.1.71-log Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. Allrights reserved.

Oracle is a registered trademark of Oracle Corporation and/orits

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the currentinput statement.

mysql> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

| mysql |

+--------------------+

2 rows in set (0.00 sec)

mysql> create database weCtrl-C -- exit!

Aborted

[root@server2 mysql]# mysql -pwestos

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 12

Server version: 5.1.71-log Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. Allrights reserved.

Oracle is a registered trademark of Oracle Corporation and/orits

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the currentinput statement.

mysql> show master status; 查看master状态

+------------------+----------+--------------+------------------+

| File |Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000001 | 737 | westos | |

+------------------+----------+--------------+------------------+

1 row in set (0.00 sec)

mysql> create database westos; 创建一个共享的库

Query OK, 1 row affected (0.00 sec)

mysql> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

| mysql |

| westos |

+--------------------+

3 rows in set (0.00 sec)

mysql> grant replication slave on *.* tolinux@'172.25.137.3'identified by 'redhat';

Query OK, 0 rows affected (0.00 sec) 授权个slave

mysql> Bye

里面有mysql-bin.00000x二进制文件,记录的是堆数据库所有的操作,在对数据库进行备份的时候要用到这个文件。



[root@server2 mysql]# mysqlbinlog mysql-bin.000001 通过mysqlbinglog 来查看里面的内容。

[root@server3 ~]# vim /etc/my.cnf

8 server-id=2

[root@server3 ~]# /etc/init.d/mysqld restart

[root@server3 ~]# mysql

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 2

Server version: 5.1.71 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. Allrights reserved.

Oracle is a registered trademark of Oracle Corporation and/orits

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the currentinput statement.

mysql> show

-> ;

ERROR 1064 (42000): You have an error in your SQL syntax; checkthe manual that corresponds to your MySQL server version for the right syntaxto use near '' at line 1

mysql> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

| mysql |

| test |

+--------------------+

3 rows in set (0.00 sec)

mysql> create database westos;

Query OK, 1 row affected (0.00 sec)

mysql> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

| mysql |

| test |

| westos |

+--------------------+

4 rows in set (0.00 sec)

mysql> show slave stauts;

ERROR 1064 (42000): You have an error in your SQL syntax; checkthe manual that corresponds to your MySQL server version for the right syntaxto use near 'stauts' at line 1

mysql> show slave status;

Empty set (0.00 sec)

mysql> change master tomaster_host='172.25.137.2',master_user='linux',master_password='redhat',master_log_file='mysql-bin.000001',master_log_pos=975;

Query OK, 0 rows affected (0.81 sec)

mysql> start slave;

Query OK, 0 rows affected (0.00 sec)

mysql> show slave status\G; Slave_IO_Running,Slave_SQL_Running: 这两个的状态都是yes说明状态良好。Slave_IO_Running如果这个是no可能是写有问题,一般看看防火墙是否关闭,selinux是否为disabled

在master端加入表信息:

mysql> createtable student(username varchar(12) not null, number varchar(12) not null);

mysql> insertinto values('dog','111');

mysql> select *from student;

+----------+--------+

| username | number|

+----------+--------+

| dog | 111 |

+----------+--------+

1 row in set (0.00sec)

在slave端

mysql> usewestos;

mysql> select *from student;

+----------+--------+

| username | number|

+----------+--------+

| dog | 111 |

+----------+--------+

1 row in set (0.00sec)

这里面记录了master端的信息

mysql-bin.000001 slave端的复制二进制文件就来自master的这个文件。

[root@server2mysql]# mysqlbinlog mysql-bin.000001 查看对数据库的操作。

mysqlABC 复制

A B C

Mastermaster slave slave

B的数据来自master,C的数据来自B所以对B而言既是master又是slave,但是BC只做读操作,不执行写,只有A执行写。

实验 server2 :master

Server3 :slave

Server4:slave

[root@server4 ~]#yum install mysql-server -y

[root@server3mysql]# /etc/init.d/mysqld stop

[root@server3mysql]# vim /etc/my.cnf


[root@server3 mysql]# /etc/init.d/mysqld restart

[root@server4 ~]# vim /etc/my.cnf

在mysqld里加

[root@server4 ~]#/etc/init.d/mysqld start

Server3:

mysql> grantreplication slave on *.* to linux@'172.25.137.4' identified by 'redhat';

Query OK, 0 rowsaffected (0.00 sec) 给server4授权

[root@server4 ~]#mysql -h 172.25.137.3 -u linux -predhat 测试是否能连通server3

Server4 要向数据能同时存在,就必须给的环境一样,在实验中同一个westos的库里的数据一致就必须现有这个库。

change master tomaster_host='172.25.137.3',master_user='linux',master_password='redhat',master_log_file='mysql-bin.000005',master_log_pos=106; 与server3同步。

[root@server2mysql]# mysqlbinlog mysql-bin.000001 在这个文件里找到在westos数据库建表的那个命令,

975是指开始建表的数值,1120是这条命令结束的数值

还有一种是用时间找

[root@server2mysql]# mysqlbinlog --start-position=975 --stop-position=1224 mysql-bin.000001|less 这是通过数值查找master的wesos数据库相关操作

[root@server2mysql]# mysqlbinlog--start-datetime='2016-07-30 13:53:26' --stop-datetime='2016-07-30 13:55:10'mysql-bin.000001 |less 这是通过时间来查找master的wesos数据库相关操作。

[root@server2mysql]#scp mysql-bin.000001 172.25.137.4:/mnt 把master这个二进制文件发送给slave。

[root@server2mysql]# mysqldump -pwestos westos > backup.sql 把westos这个库备份到backup.sql文件。

[root@server4 mnt]#ls

mysql-bin.000001

[root@server4 mnt]#mysqlbinlog --start-position=975 --stop-position=1224 mysql-bin.000001|mysql 把这个二进制文件倒入到westos这个库,使三个westos数据库在一个环境下。

在master的westos数据库上操作。

Mysql备份方式:

  1. 冷备:需要关闭服务,且读写请求不允许。

  2. 热备:服务正常,备份不影响。

  3. 温备:服务正常,但是只允许读不允许写。

    Mysql备份方法:

  4. :mysqldump 单线程,缓慢

  5. :mysqlpump 多线程,它的最小限度每张表可以绑一个线程

  6. :mydumpe 多线程,最小限度每张表可以绑多个线程

    对于以上什么是MYSQL的AB复制原理相关内容,大家还有什么不明白的地方吗?或者想要了解更多相关,可以继续关注我们的行业资讯板块。

数据 文件 事务 数据库 同步 二进制 备份 线程 事件 服务 原理 数值 机制 状态 实验 最小 之间 事物 信息 内容 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广东万易互联网科技有限公司惠州分公司 为想互联网科技怎么样 互联网科技有限公司图片 互联网科技集团 互联网科技公司电话 天下捷融互联网科技 兼蜜互联网科技 互联网科技创新企业排名 广州优美互联网科技 栖莱科技互联网股份有限公司 互联网5g黑科技有哪些 众安科技工业互联网合作 黑科技 体验场景 互联网大会 上海互联网科技公司ppt 江苏互联网智能科技产品出厂价 科技信息时代互联网发展 互联网科技博主张洲 数字科技和互联网金融哪个好 互联网科技创业计划的风险分析 瑞安市蟠桃会互联网科技有限公司 互联网科技公司 互联网科技公司简介 湖南永感互联网科技有限公司 美国互联网前沿科技 南平创想时代互联网科技有限公司 佛山市拉法互联网科技有限公司 长沙互联网科技 上海科技产业互联网平台 上海互联网科技公司ppt 世界互联网科技成果奖
0