Mysql 异步复制
一: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 异步复制相关推荐
- MySQL异步复制延迟解决的架构设计与运维架构ppt
<MySQL异步复制延迟解决的架构设计与运维架构ppt> 下载地址:网盘下载 转载于:https://www.cnblogs.com/long12365/p/9731216.html
- mysql异步复制参数_MySQL Replication(异步复制)基本原理
1.复制进程 Mysql的复制(replication)是一个异步的复制,从一个Mysql instace(称之为Master)复制到另一个Mysql instance(称之Slave).实现整个复制 ...
- mysql 异步复制建立过程_mysql生产环境高可用---基于GTID异步复制项目实施
客户需求: 客户需要上线一个门户网站,初期业务量非常小,数据量10个G,后台需要使用msyql 数据库,需要建设一个数据库环境 项目技术: 操作系统:两台linux系统 红帽6.5 数据库版本:msy ...
- MySQL内部开发人员如何看待MySQL组复制?
MySQL因为高性能.可扩展性和可用性被广泛应用于Web应用程序,成为支持高流量社交媒体.电商应用程序以及快速成长企业的IT平台基础.在MySQL 5.7.17版本中,MySQL Group Repl ...
- mysql组复制(MGR)——背景
本文提供mysql组复制相关的背景信息. 创建容错系统的最常用方式是采用组件冗余方式,换句话说,就是组件能被移除且系统应该继续如期操作.这产生了一系列将系统复杂度上升到不同等级的挑战.特别是,复制数据 ...
- MySQL 8 复制(九)——组复制联机配置
目录 一.配置组复制模式 1. 单主模式 2. 多主模式 3. 联机配置组复制模式 4. 配置并发写实例数 5. 设置组的通信协议版本 二.保证数据一致性 1. 组复制数据一致性简介 2. 防止主库故 ...
- Mysql进阶(1)——异步复制(主从复制、Gtid复制)、半同步复制
前言 原理总结 异步复制:在主节点写入日志即返回成功,默认情况下MySQL5.5/5.6/5.7和mariaDB10.0/10.1的复制功能是异步的.异步复制可以实现最佳的性能,主库把binlog日志 ...
- adg类似于mysql半同步机制_MySQL基准测试异步复制和半同步复制延迟对比
测试环境 :MySQL 5.7.26 主从异步复制(GTID) 测试数据 :测试数据:10张表,每张表500万行数据,共12G的数据. 每次测试,主实例服务器测试脚本不变,线程为10,复制方式分别为异 ...
- mysql 异步 同步 不支持,Mysql 异步/同步/半同步复制
Mysql复制 异步 逻辑 MySQL 默认的复制就是异步的,主库再执行完客户端提交的事务后会立即将结果返回给客户端,并不关系从库是否已经接收和处理. 技术实现 MySQL主库将Binlog事件写入到 ...
最新文章
- 将让企业获利的5个人工智能趋势
- 深度学习(训练/开发/测试集)的划分技巧
- Pure-ftpd服务安装及虚拟用户设置
- Java设计模式之七大结构型模式
- python安装opencv whl_Python 3.x 安装opencv+opencv_contrib的操作方法
- Web前端新手必备的知识点,大家都掌握了吗?
- apache2.4.7 make报错[exports.lo] Error 1 解决方法
- iOS 录音,播放并上传
- 这8款黑科技APP,满足你的所有需求,你想不到的照样帮你实现!
- python入门指南txt许半仙百度网盘-《江火欲燃山》《这题超纲了》《Python入门指南》...
- 工程制图计算机绘图实训总结感悟,工程制图心得体会.doc
- uniapp生成高清海报图canvas
- 为什么易语言程序被360和windows安全中心认作是病毒?
- 单调有界定理适用于函数吗_实数的完备性定理
- 【AcWing 327. 玉米田】状压dp
- 单卡3090可得专属ChatGPT:使用LoRA+ChatGLM
- realsense中IMU的简单使用与学习
- ASPICE系列:顺利通过ASPICE流程软件单元验证(SWE.4)
- 穿戴式心电信号采集系统设计(任务书+lunwen+答辩PPt+查重报告)
- 关于IDEA ZK前端插件的问题
热门文章
- java批处理_Java内存模型你应该知道
- 总用量的统计_每月公开使用量!广州市开启机制砂信息采集工作
- python语言指令大全_Python语言----linux常用命令(14)
- nignx解决vue部署服务器刷新页面出现404问题
- XML 文档结构必须从头至尾包含在同一个实体内
- 表单的提交方式POST和GET
- Spring 源码解析 -- SpringWeb请求映射解析
- android把js的注入和方法统一管理,android WebView 注入js 几种方式
- linux音频驱动程序测试,Linux声卡驱动移植和测试
- 计算机三级嵌入式系统之常考指令