Relay

mysql主从复制

你离开我真会死。 提交于 2021-02-16 16:35:58
一、主从复制原理: 1、过程 1)<master>将数据写入数据文件,将sql语句写入binlog 2)<slave>通过IO 线程带着用户名、密码、读取的binlog日志名、位置连接到<master>。并取走所需的sql语句和binlog的位置信息。 3)IO Thread 将binlog的位置信息存入master info,将sql语句写入 relay log。 4)SQL Thread 从relaylog中取出sql语句,有mysql写入数据库文件。 2、作用: 1)便于实现读写分离。 * 实时性高的数据在主服务器上查询 2)备份可在从服务器上执行。 二、配置 (一)配置my.cof 1. <master> #vim /etc/my.cnf [mysqld] server-id=150 #起个独有名字防止服务器混乱。 log-bin=mysql-bin #/开启binlog日志,起个名字 binlog-format=mixed #定义binlog日志格式 2.<slave> 打开relay log日志 。(必须) 打开binlog日志。(建议打开) 为以后数据丢失做准备。 # vim /etc/my.cnf sever-id=132 log-bin=mysql-bin relay-log=mysql-relay log-slave-updates

Mysql 5.7 主从复制

与世无争的帅哥 提交于 2021-02-16 11:38:12
Mysql 5.7 版本主从复制 准备事项 确保两台服务器的Mysql版本一致 (本文是5.7); 明确两台服务器IP master : 192.168.33.10 slave : 192.168.33.11 要保证防火墙3306端口开放 配置master 修改配置文件 /etc/mysql/mysql.conf.d/mysql.cnf (根据自己安装的路径 如: /etc/my.cnf) 1 [ mysqld ] 2 log - bin = mysql - bin 3 server - id = 1 4 binlog - ignore - db = information_schema 5 binlog - ignore - db = performance_schema 6 binlog - ignore - db = sys 7 binlog - ignore - db = mysql 8 binlog - do - db = test 其中 log -bin 是日志类型(前缀) server -id = 1 是用于标识唯一的数据库,在从库必须设置为不同的值 binlog -ignore -db 表示同步的时候忽略的数据库    binlog -do -db 指定需要同步的数据库 重启Mysql sudo service mysql restart 进入mysql,mysql

MySQL 5.7主从复制

*爱你&永不变心* 提交于 2021-02-16 11:37:29
https://dev.mysql.com/doc/refman/5.7/en/replication-gtids-howto.html GTID(GlobalTransaction ID)是对于一个已提交事务的编号,并且是一个全局唯一的编号。GTID实际上是由UUID+TID组成的。其中UUID是一个MySQL实例的唯一标识。TID代表了该实例上已经提交的事务数量,并且随着事务提交单调递增。 设置gtid模式,在my.cnf里面的mysqld选项卡里面设置,设置完后,重启mysql服务生效: [mysqld] gtid_mode=ON log-slave-updates=ON enforce-gtid-consistency=ON mysql> change master to master_host=‘主库IP', master_port=主库端口, master_user='repl', master_password=‘repl密码', master_auto_position=1 ; mysql> start slave; PS:其中这里有差别,以前非gtid的是用master_log_file='mysql-bin.000009',master_log_pos=154;而gtid就采用了master_auto_positon=1;来自动同步主库的binlog了。

MySQL 5.7主从复制与主主复制实现细节分析

旧街凉风 提交于 2021-02-16 11:21:46
0.简介:   MySQL作为世界上使用最为广泛的数据库之一,免费是其原因之一。但不可忽略的是它本身的功能的确很强大。随着技术的发展,在实际的生产环境中,由单台MySQL数据库服务器不能满足实际的需求。此时数据库集群就很好的解决了这个问题了。采用MySQL分布式集群,能够搭建一个高并发、负载均衡的集群服务器(这篇博客暂时不涉及)。在此之前我们必须要保证每台MySQL服务器里的数据同步。数据同步我们可以通过MySQL内部配置就可以轻松完成,主要有主从复制和主主复制。 1.准备环境: W8 mysql5.7  (192.168.2.115) W7 mysql5.7  (192.168.2.138) 2.主从复制: (0)原理 (1)确保两台电脑都有mysql服务器     log-bin=mysql-bin 开启二进制日志    注意:二进制日志必须开启,因为数据的同步实质上就是其他的MySQL数据库服务器将这个数据变更的二进制日志在本机上再执行一遍。   w8 为主数据库服务器    w7 为从数据库服务器 (2)配置文件 修改主服务器W8配置文件 一般Linux中的MySQL配置文件都在/etc/my.cnf(windows中的配置文件为mysql.ini或者my.ini) log-bin=mysql-bin 开启二进制日志(主服务器配置) 注意:二进制日志必须开启

Linux云计算运维-MySQL

醉酒当歌 提交于 2021-02-16 05:39:50
0、建初心 优秀DBA的素质 1 、人品,不做某些事情 2 、严谨,运行命令前深思熟虑,三思而后行,即使是依据select 3 、细心,严格按照步骤一步一步执行,减少出错 4 、心态,遇到灾难,首先要稳住,不慌张,不要受到旁人的影响 5 、熟悉操作系统,Linux系统的工具和命令 6 、熟悉业务 ( 开发 ),编程语言 7 、熟悉行业 8 、喜欢数据库 • 什么是数据? 数据是指对客观事件进行记录并可以鉴别的符号,是对客观事物的性质、状态以及相互关系等进行记载的物理符号或这些物理符号的组合。它是可识别的、抽象的符号。 • 什么是数据库管理系统? 将大量的数据规范的管理在一起的软件 • 数据库管理系统种类 关系型和非关系型 • 关系型数据库的特点   – 二维表   – 典型产品 Oracle传统企业, MySQL是互联网企业   – 数据存取是通过SQL   – 最大特点,数据安全性方面强(ACID) • NoSQL:非关系型数据库(Not only SQL)   – 不是否定关系型数据库,做关系型数据库的的补充。   – 想做老大,先学会做老二。 RDBMS与NoSQL对比 • web1.0时代   企业提供内容,用户浏览,所以关系型数据库够用,并发并不高,所以不需要NoSQL。 • web2.0时代   核心是企业提供平台,用户参与提供内容。这时关系型数据库无法满足需求了。 •

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

时光总嘲笑我的痴心妄想 提交于 2021-02-13 14:55:26
图4 那么如何并行化,并行IO线程,还是并行SQL线程? 其实两方面都可以并行,但是并行SQL线程的收益更大,因为SQL线程做的事情更多(解析,执行)。并行IO线程,可以将从Master拉取和写Relay log分为两个线程;并行SQL线程则可以根据需要做到库级并行,表级并行,事务级并行。库级并行在mysql官方版本5.6已经实现。如下图,并行复制框架实际包含了一个协调线程和若干个工作线程,协调线程负责分发和解决冲突,工作线程只负责执行。 图中,DB1,DB2和DB3的事务就可以并发执行,提高了复制的性能。有时候库级并发可能不够,需要做表级并发,或更细粒度的事务级并发。 图 5 并行复制如何处理冲突? 并发的世界是美好的,但不能乱并发,否则数据就乱了。Master上面通过锁机制来保证并发的事务有序进行,那么并行复制呢?Slave必需保证回放的顺序与Master上事务执行顺序一致,因此只要做到顺序读取binlog,将不冲突的事务并发执行即可。对于库级并发而言,协调线程要保证执行同一个库的事务放在一个工作线程串行执行;对于表级并发而言,协调线程要保证同一个表的事务串行执行;对于事务级而言,则是保证操作同一行的事务串行执行。 是否粒度越细,性能越好? 这个并不是一定的。相对于串行复制而言,并行复制多了一个协调线程。协调线程一个重要作用是解决冲突,粒度越细的并发,可能会有更多的冲突

MySQL并行复制的一个坑

和自甴很熟 提交于 2021-02-13 14:04:26
早上巡检数据库,发现一个延迟从库的sql_thread中断了。 Last_SQL_Errno: 1755 Last_SQL_Error: Cannot execute the current event group in the parallel mode. Encountered event Gtid, relay-log name ./oracle-relay-bin.000093, position 152912092 which prevents execution of this event group in parallel mode. Reason: The master event is logically timestamped incorrectly.. 检查performance_schema下的replication_applier_status_by_worker表,除了GTID之外也没有更具体的信息: "root@localhost:mysql3308.sock [(none)]>select * from performance_schema.replication_applier_status_by_worker; +--------------+-----------+-----------+---------------+------------

Mysql4种方式避免重复插入数据!

≡放荡痞女 提交于 2021-02-12 12:04:58
作者:小小猿爱嘻嘻 wukong.com/question/6749061190594330891/ 最常见的方式就是为字段设置主键或唯一索引,当插入重复数据时,抛出错误,程序终止,但这会给后续处理带来麻烦,因此需要对插入语句做特殊处理,尽量避开或忽略异常,下面我简单介绍一下,感兴趣的朋友可以尝试一下: 这里为了方便演示,我新建了一个user测试表,主要有id,username,sex,address这4个字段,其中主键为id(自增),同时对username字段设置了唯一索引: 01 insert ignore into 即插入数据时,如果数据存在,则忽略此次插入,前提条件是插入的数据字段设置了主键或唯一索引,测试SQL语句如下,当插入本条数据时,MySQL数据库会首先检索已有数据(也就是idx_username索引),如果存在,则忽略本次插入,如果不存在,则正常插入数据: 02 on duplicate key update 即插入数据时,如果数据存在,则执行更新操作,前提条件同上,也是插入的数据字段设置了主键或唯一索引,测试SQL语句如下,当插入本条记录时,MySQL数据库会首先检索已有数据(idx_username索引),如果存在,则执行update更新操作,如果不存在,则直接插入: 03 replace into 即插入数据时,如果数据存在,则删除再插入,前提条件同上

mysql主从复制 分库 分区 分表

不羁岁月 提交于 2021-02-09 09:00:51
MySql主从复制流程 转载: http://www.cnblogs.com/nulige/p/6034301.html MySQL的主从复制是MySQL本身自带的一个功能,不需要额外的第三方软件就可以实现,其复制功能并不是copy文件来实现的,而是借助binlog日志文件里面的SQL命令实现的主从复制,可以理解为我再Master端执行了一条SQL命令,那么在Salve端同样会执行一遍,从而达到主从复制的效果。 binlog的格式: statement:记录的是修改SQL语句 row:记录的是每行实际数据的变更 mixed:statement和row模式的混合 5.0后默认是row格式,所以应该是传给slave每行数据的变更 。 复制过程有一个很重要的限制——复制在slave上是串行化的,也就是说master上的并行更新操作不能在slave上并行操作。 MySQL的主从复制是一个异步的复制过程,数据库从一个Master复制到Slave数据库,在Master与Slave之间实现整个主从复制的过程是由三个线程参与完成的,其中有两个线程(SQL线程和IO线程)在Slave端,另一个线程(IO线程)在Master端。 MySQL主从复制之前我们需要先启动Master数据库然后再启动Salve数据库,然后在Salve数据库中执行 start slave; ,执行完成之后,流程就如下了:

mysql5.7配置文件

梦想的初衷 提交于 2021-02-07 04:20:24
[mysqld] pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock datadir = /var/lib/mysql #log-error = /var/log/mysql/error.log # By default we only accept connections from localhost #bind-address = 127.0.0.1 # Disabling symbolic-links is recommended to prevent assorted security risks #支持符号链接,就是可以通过软连接的方式,管理其他目录的数据库,最好不要开启,当一个磁盘或分区空间不够时,可以开启该参数将数据存储到其他的磁盘或分区。 #http://blog.csdn.net/moxiaomomo/article/details/17092871 symbolic-links=0 ########basic settings######## server-id = 11 port = 3306 user = mysql #设置autocommit=0,则用户将一直处于某个事务中,直到执行一条commit提交或rollback语句才会结束当前事务重新开始一个新的事务