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:安装

[[email protected] ~]# tar -zxfmysql-5.6.17-linux-glibc2.5-x86_64.tar.gz

[[email protected] ~]# mvmysql-5.6.17-linux-glibc2.5-x86_64 /usr/local/mysql

[[email protected] ~]# cd /usr/local/mysql/

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

[[email protected] mysql]# cpsupport-files/my-default.cnf /etc/my.cnf        #拷贝模板文件

[[email protected] mysql]# useradd mysql                                                            #添加mysql用户

[[email protected] mysql]# chown -R mysql:mysql/usr/local/mysql/              #修改目录所属主

[[email protected] mysql]# mkdir -p /data/mysql                                       #创建数据存放目录

[[email protected] mysql]# chown -R mysql:mysql/data/mysql/

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

[[email protected]]# 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号唯一

[[email protected] mysql]# /etc/init.d/mysqlstart

Starting MySQL..                                           [确定]

[[email protected] 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线程需要读取中继日志对数据进行更新

[[email protected] mysql]# /etc/init.d/mysqlstart

StartingMySQL..                                           [确定]

[[email protected] 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

[[email protected] 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

时间: 2024-07-30 21:37:14

Mysql 异步复制的相关文章

(5.4)mysql高可用系列——MySQL异步复制

关键词:mysql复制,mysql异步复制,mysql传统异步复制 [1]实验环境 操作系统:CentOS linux 7.5 数据库版本:5.7.24 数据库架构:主从复制,主库用于生产,从库用于数据容灾和主库备机,采用默认传统的异步复制. 主库IP:192.168.1.201 端口:3306 从库IP:192.168.1.202 端口:3306 [2]配置启动主从复制 #[2.1]配置my.cnf配置文件 #主库参数 # 主库增加参数 [mysqld]log-error_verbosity=

mysql5.6 replication异步复制搭建

--mysql 复制搭建 准备sql2服务器 ,采用复制sql1的方法 --###sql2 解决vm网卡复制问题vi /etc/udev/rules.d/70-persistent-net.rules1.找到与ifconfig -a得出的MAC相同的一行改成"NAME=eth0 " 2.把上面一行 NAME='eth0' 删掉 --sql2 同步mac地址 修改ip地址192.168.33.191ifconfig HWaddr 00:0C:29:D1:BE:65 vi /etc/sys

mysql主从复制的异步复制与同步复制

异 步复制:MySQL本身支持单向的.异步的复制.异步复制意味着在把数据从一台机器拷贝到另一台机器时有一个延时 – 最重要的是这意味着当应用系统的事务提交已经确认时数据并不能在同一时刻拷贝/应用到从机.通常这个延时是由网络带宽.资源可用性和系统负载决定的.然 而,使用正确的组件并且调优,复制能做到接近瞬时完成. 同步复制:同步复制可以定义为数据在同一时刻被提交到一台或多台机器,通常这是通过众所周知的“两阶段提交”做到的.虽然这确实给你在多系统中保持一致性,但也由于增加了额外的消息交换而造成性能下

呕心沥血博一文--MySQL主从异步复制

目录 1.概述 2.主从时间同步 3.主从服务器mysql部署 4.配置.启动从服务 5.测试 6.总结 1.概述 mysql内建的复制功能是mysql应用的"水平扩展"的架构,是mysql高性能运用的基础,为一个服务器配置一个或多个备库来进行数据的同步(准备的说不应该说是"同步",因为主从服务器的数据根本不可能做同步).在这样一个分布式的架构中各个服务器间时间应该同步才是,能为后期日志的统计分析提供更为准备的信息,这样才能准确反应出某个时间点我们系统的访问情况.

Linux mysql 5.7.23 主从复制(异步复制)

docker容器主节点: 172.17.0.9 docker容器子节点: 172.17.0.10 异步复制: 首先确认主库和从库是否一致,最好都是刚刚初始化的干净的数据库 如果主库正在使用不能初始化,就要先将主库的内容复制到从库上再做同步 1.先把master做一个备份,把备份出的文件传给slave [[email protected] /]# mysqldump -uroot -p -B test > test.dump Enter password: [[email protected] d

mysql 架构篇系列 2 复制架构一主一从搭建(异步复制)

一. 环境准备 1.1 主库环境(172.168.18.201) 环境 说明 查看脚本 操作系统版本 CentOS Linux release 7.4.1708 (Core) cat /etc/redhat-release 操作系统用户名和密码 root  js*2015 IP地址 172.168.18.201 ip addr 网关Gateway 172.168.18.1 cat /etc/sysconfig/network-scripts DNS 172.168.16.11 mysql 版本

详解mysql复制机制--异步复制,半同步复制和并行复制

详解MySQL复制机制--异步复制,半同步复制和并行复制 **# 异步复制 异步复制是MySQL自带的最原始的复制方式,主库和备库成功建立复制关系后,在备库上会有一个IO线程去主库拉取binlog,并将binlogx到本地,就是下图中Relaylog,然后备库会开启另外一个SQL线程取回放Relay log,通过这种方式达到Master-Slave数据同步的目的. 通常情况下,slave是只读的,可以承担一部分读流量,而且可以根据实际需要,添加一个或者多个slave,这样在一定程度上可以缓解主库

MySQL 5.7的复制架构,在有异步复制、半同步、增强半同步、MGR等的生产中,该如何选择?

一.生产环境中: 几种复制场景都有存在的价值.下面分别描述一下: 从成熟度上来选择,推荐:异步复制(GTID+ROW) 从数据安全及更高性能上选择:增强半同步 (在这个结构下也可以把innodb_flush_log_trx_commit调整到非1, 从而获得更好的性能) 对于主从切换控制觉的不好管理,又对数据一致性要求特别高的场景,可以使用MGR 二.理由: 异步复制,相对来讲非常成熟,对于环境运维也比较容易上手 增强半同步复制,可以安全的保证数据传输到从库上,对于单节点的配置上不用要求太严格,

(5.6)mysql高可用系列——MySQL中的GTID异步复制

[1]实验环境 操作系统:CentOS linux 7.5 数据库版本:5.7.24 数据库架构:主从复制,主库用于生产,从库用于数据容灾和主库备机,采用默认传统的异步复制. 主库IP:192.168.1.201 端口:3306 从库IP:192.168.1.202 端口:3306 原文地址:https://www.cnblogs.com/gered/p/11405864.html