一:Mysql AB复制的原理:(异步复制)

            1.MysqlAB 主机有三个线程相互联系mysql数据库,实施同步。Master主机(Binlog Dump线程):slave主机(IO线程与SQL线程)。首先,由slave上执行startslave创建以个I/O线程,I/O线程链接到master上,并请求发送二进制日志文件里面的语句。Master创建一个线程(BinglogDump线程),slave创建一个I/O线程,读取master上的BinglogDump线程,将其拷贝到slave上的数据目录的中继日志中(relay logs)。第三个就是SQL线程,SQL线程读取中继日志里面的语句,并实时进行数据更新。


2. 常见的复制模型:

    (1)一主一从:这种架构的优点就是比较简单,搭建和维护都比较容易,成本也比较低。对于一些负载量不是特别大、可靠性要求不是特别高的场合,完全可以采用这种模型。但是对于一些负载比较大站点,和对可用性要求比较高的场合,这种架构就不太适用了。因为如果访问量比较大,Master节点的压力会比较的,另外如果Master崩溃,也会导致业务的终止。

    (2)一主多从模式:在绝大多数场景中,我们的应用都是读多写。我们使用这种架构,通过读写分离的技术,可以有效降低Master上读的压力。我们在后端的slave上可以做一些数据备份,数据挖掘等方面的工作。但是如果备库比较多,同时主库又要负责其他的请求时,主库的压力会明显增大,此时主库会成为整个系统的性能瓶颈。

3.安装mysql-5.6.24.tar.gz

Mysql-A:安装

[root@mysql-A ~]# tar -zxfmysql-5.6.17-linux-glibc2.5-x86_64.tar.gz

[root@mysql-A ~]# mvmysql-5.6.17-linux-glibc2.5-x86_64 /usr/local/mysql

[root@mysql-A ~]# cd /usr/local/mysql/

[root@mysql-Amysql]#./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/--datadir=/data/mysql/   #初始化数据库    --basedir=mysql安装目录           --datadir数据库存放数据的目录

[root@mysql-A mysql]# cpsupport-files/my-default.cnf /etc/my.cnf        #拷贝模板文件

[root@mysql-A mysql]# useradd mysql                                                            #添加mysql用户

[root@mysql-A mysql]# chown -R mysql:mysql/usr/local/mysql/              #修改目录所属主

[root@mysql-A mysql]# mkdir -p /data/mysql                                       #创建数据存放目录

[root@mysql-A mysql]# chown -R mysql:mysql/data/mysql/

[root@mysql-Amysql]# cp support-files/mysql.server /etc/init.d/mysql                  #拷贝启动脚本

[root@mysql-Amysql]# chkconfig --level 345 mysql on                                               #创建开机启动项


Mysql-B:安装:

同上

                

Mysql-A:配置文件

Vim /etc/my.cnf

[mysqld]

basedir=/usr/local/mysql

datadir=/data/mysql

log-bin=mysql-bin.log#主服务器设置bin-log 从服务器则不需要

server-id=1#设置服务器的ID号 ID号唯一

[root@mysql-A mysql]# /etc/init.d/mysqlstart

Starting MySQL..                                           [确定]

[root@mysql-A mysql]#/usr/local/mysql/bin/mysqladmin -uroot password '123456' #修改mysql账户密码

Mysql-B:配置文件

[mysqld]

basedir=/usr/local/mysql

datadir=/data/mysql

server-id= 2

relay-log=relay-bin   #开启中继日志  sql线程需要读取中继日志对数据进行更新

[root@mysql-B mysql]# /etc/init.d/mysqlstart

StartingMySQL..                                           [确定]

[root@mysql-B mysql]#  /usr/local/mysql/bin/mysqladmin -urootpassword '123456'

Mysql-A服务器配置:

mysql>GRANT REPLICATION SLAVE,REPLICATION CLIENT,RELOAD,SUPER ON *.* TO'backup'@'192.168.60.81' IDENTIFIED BY 'backup';   #授权192.168.68.81服务器的backup用户对本服务器的所有库拥有拷贝的权限

Query OK,0 rows affected (0.00 sec)

mysql>flush privileges;                                                      #授权用户之后要刷新权限列表

Query OK,0 rows affected (0.00 sec)

mysql>show master status;

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

|File             | Position |Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

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

|mysql-bin.000001 |      667 |              |                  |                   |

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

1 row inset (0.00 sec)

Binlog_Do_DB:同步数据库的

Binlog_Ignore_DB:不同步的数据库名

Mysql-B服务器配置:

mysql>change master to master_host='192.168.60.80',master_user='backup',master_password='backup',master_log_file='mysql-bin.000001',master_log_pos=764;

Query OK,0 rows affected, 2 warnings (0.04 sec)

mysql>start slave;

Query OK,0 rows affected (0.01 sec)

mysql>show slave status\G;

***************************1. row ***************************

Slave_IO_State: Waiting formaster to send event

Master_Host: 192.168.60.80

Master_User: backup

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000001

Read_Master_Log_Pos: 764

Relay_Log_File: relay-bin.000002

Relay_Log_Pos: 283

Relay_Master_Log_File: mysql-bin.000001

 Slave_IO_Running: Yes                                          #确定两个线程时候正常工作

            Slave_SQL_Running: Yes

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 764

Relay_Log_Space: 450

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert:No

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 0

Last_SQL_Error:

Replicate_Ignore_Server_Ids:

Master_Server_Id: 1

Master_UUID:b9eb3ea3-f27f-11e4-b57c-000c2921542d

Master_Info_File:/data/mysql/master.info

SQL_Delay: 0

SQL_Remaining_Delay: NULL

Slave_SQL_Running_State: Slave has readall relay log; waiting for the slave I/O thread to update it

Master_Retry_Count: 86400

Master_Bind:

Last_IO_Error_Timestamp:

Last_SQL_Error_Timestamp:

Master_SSL_Crl:

Master_SSL_Crlpath:

Retrieved_Gtid_Set:

Executed_Gtid_Set:

Auto_Position: 0

1 row inset (0.00 sec)

ERROR:

No queryspecified

mysql>

 

性能测试:

系统环境:

Vmware 虚拟机 Centos 6.5 X86 64位系统             windows 7 64 位

4内存     60G硬盘  2核虚拟CPU    IDE 硬盘  5400转

1.mysql 优化前测试 (自带mysql测试工具mysqlslap)

测试命令

/usr/local/mysql/bin/mysqlslap -a--auto-generate-sql-load-type=read --concurrency=1000 --number-of-queries50000  --engine=innodb--iterations=3  --debug-info  -uroot -p123456

[root@mysql-A opt]#/usr/local/mysql/bin/mysqlslap -a --auto-generate-sql-load-type=write--concurrency=1000   --engine=innodb--iterations=3  --debug-info  -uroot -p123456

/usr/local/mysql/bin/mysqlslap -a--auto-generate-sql-load-type=mixed --concurrency=900  --number-of-queries=9000-auto-generate-sql-add-autoincrement --engine=innodb --iterations=3 --debug-info  -uroot -p123456

优化后的my.cnf

/usr/local/mysql/bin/mysqlslap -a--auto-generate-sql-load-type=read --concurrency=1000 --number-of-queries50000  --engine=innodb--iterations=3  --debug-info  -uroot -p123456

/usr/local/mysql/bin/mysqlslap -a--auto-generate-sql-load-type=write --concurrency=1000   --engine=innodb --iterations=3  --debug-info -uroot -p123456

/usr/local/mysql/bin/mysqlslap -a--auto-generate-sql-load-type=mixed --concurrency=900  --number-of-queries=9000-auto-generate-sql-add-autoincrement --engine=innodb --iterations=3 --debug-info  -uroot -p123456

转载于:https://blog.51cto.com/11651924/1783412

Mysql 异步复制相关推荐

  1. MySQL异步复制延迟解决的架构设计与运维架构ppt

    <MySQL异步复制延迟解决的架构设计与运维架构ppt> 下载地址:网盘下载 转载于:https://www.cnblogs.com/long12365/p/9731216.html

  2. mysql异步复制参数_MySQL Replication(异步复制)基本原理

    1.复制进程 Mysql的复制(replication)是一个异步的复制,从一个Mysql instace(称之为Master)复制到另一个Mysql instance(称之Slave).实现整个复制 ...

  3. mysql 异步复制建立过程_mysql生产环境高可用---基于GTID异步复制项目实施

    客户需求: 客户需要上线一个门户网站,初期业务量非常小,数据量10个G,后台需要使用msyql 数据库,需要建设一个数据库环境 项目技术: 操作系统:两台linux系统 红帽6.5 数据库版本:msy ...

  4. MySQL内部开发人员如何看待MySQL组复制?

    MySQL因为高性能.可扩展性和可用性被广泛应用于Web应用程序,成为支持高流量社交媒体.电商应用程序以及快速成长企业的IT平台基础.在MySQL 5.7.17版本中,MySQL Group Repl ...

  5. mysql组复制(MGR)——背景

    本文提供mysql组复制相关的背景信息. 创建容错系统的最常用方式是采用组件冗余方式,换句话说,就是组件能被移除且系统应该继续如期操作.这产生了一系列将系统复杂度上升到不同等级的挑战.特别是,复制数据 ...

  6. MySQL 8 复制(九)——组复制联机配置

    目录 一.配置组复制模式 1. 单主模式 2. 多主模式 3. 联机配置组复制模式 4. 配置并发写实例数 5. 设置组的通信协议版本 二.保证数据一致性 1. 组复制数据一致性简介 2. 防止主库故 ...

  7. Mysql进阶(1)——异步复制(主从复制、Gtid复制)、半同步复制

    前言 原理总结 异步复制:在主节点写入日志即返回成功,默认情况下MySQL5.5/5.6/5.7和mariaDB10.0/10.1的复制功能是异步的.异步复制可以实现最佳的性能,主库把binlog日志 ...

  8. adg类似于mysql半同步机制_MySQL基准测试异步复制和半同步复制延迟对比

    测试环境 :MySQL 5.7.26 主从异步复制(GTID) 测试数据 :测试数据:10张表,每张表500万行数据,共12G的数据. 每次测试,主实例服务器测试脚本不变,线程为10,复制方式分别为异 ...

  9. mysql 异步 同步 不支持,Mysql 异步/同步/半同步复制

    Mysql复制 异步 逻辑 MySQL 默认的复制就是异步的,主库再执行完客户端提交的事务后会立即将结果返回给客户端,并不关系从库是否已经接收和处理. 技术实现 MySQL主库将Binlog事件写入到 ...

最新文章

  1. 将让企业获利的5个人工智能趋势
  2. 深度学习(训练/开发/测试集)的划分技巧
  3. Pure-ftpd服务安装及虚拟用户设置
  4. Java设计模式之七大结构型模式
  5. python安装opencv whl_Python 3.x 安装opencv+opencv_contrib的操作方法
  6. Web前端新手必备的知识点,大家都掌握了吗?
  7. apache2.4.7 make报错[exports.lo] Error 1 解决方法
  8. iOS 录音,播放并上传
  9. 这8款黑科技APP,满足你的所有需求,你想不到的照样帮你实现!
  10. python入门指南txt许半仙百度网盘-《江火欲燃山》《这题超纲了》《Python入门指南》...
  11. 工程制图计算机绘图实训总结感悟,工程制图心得体会.doc
  12. uniapp生成高清海报图canvas
  13. 为什么易语言程序被360和windows安全中心认作是病毒?
  14. 单调有界定理适用于函数吗_实数的完备性定理
  15. 【AcWing 327. 玉米田】状压dp
  16. 单卡3090可得专属ChatGPT:使用LoRA+ChatGLM
  17. realsense中IMU的简单使用与学习
  18. ASPICE系列:顺利通过ASPICE流程软件单元验证(SWE.4)
  19. 穿戴式心电信号采集系统设计(任务书+lunwen+答辩PPt+查重报告)
  20. 关于IDEA ZK前端插件的问题

热门文章

  1. java批处理_Java内存模型你应该知道
  2. 总用量的统计_每月公开使用量!广州市开启机制砂信息采集工作
  3. python语言指令大全_Python语言----linux常用命令(14)
  4. nignx解决vue部署服务器刷新页面出现404问题
  5. XML 文档结构必须从头至尾包含在同一个实体内
  6. 表单的提交方式POST和GET
  7. Spring 源码解析 -- SpringWeb请求映射解析
  8. android把js的注入和方法统一管理,android WebView 注入js 几种方式
  9. linux音频驱动程序测试,Linux声卡驱动移植和测试
  10. 计算机三级嵌入式系统之常考指令