master

mysql主从之半同步复制和lossless无损复制

邮差的信 提交于 2020-03-18 07:52:34
一 MySQL 的三种复制方式 1.1 简介 asynchronous 异步复制 fully synchronous 全同步复制 Semisynchronous 半同步复制 从MySQL5.5 开始,MySQL 以插件的形式支持半同步复制。 1.2 异步复制(Asynchronous replication) MySQL 默认的复制是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已经接收并处理,这样就会有一个问题,主如果crash 掉了,此时主上已经提交的事务可能并没有传到从上,如果此时,将从提升为主,可能导致新主上的数据不完整。 原理:在异步复制中,master 写数据到binlog 且sync,slave request binlog 后写入relay‐log 并flush disk 优点:复制的性能最好 缺点:master 挂掉后,slave 可能会丢失数据 1.3 全同步复制(Fully synchronous replication) 指当主库执行完一个事务,所有的从库都执行了该事务才返回给客户端。因为需要等待所有从库执行完该事务才能返回,所以全同步复制的性能必然会收到严重的影响。 优点:数据不会丢失 缺点:会阻塞master session,性能太差,非常依赖网络 1.4 半同步复制(Semisynchronous

MySQL Replication--半同步复制(Semi-Sync Replication)

↘锁芯ラ 提交于 2020-03-18 07:51:06
半同步复制 默认配置下,MYSQL主从库通过binlog来保持一致,主库事务提交后,将binlog日志写入磁盘,然后返回给用户,备库通过拉取主库的binlog来同步主库的操作,无法保证主备节点数据实时一致,只能保证最终一致,因此属于异步复制。 为保证在主备切换时,主备节点数据完全一致,MYSQL提供了半同步复制,其实现原理为:事务在主库上执行完成,生成BINLOG并推送给备库,等待备库的影响消息,备库将接受到的binlog(file,pos)信息返回给主库,主库接收到背库的确认消息后,在返回给用户,事务提交完成。 半同步复制只保证主库和备库的binlog同步,但主库无需等待备库应用这些binglog就会返回提交结果,从库异步地应用这些binlog,因此主库和从库的数据不是实时同步的,因此称为“半同步”。 半同步复制参数rpl_semi_sync_master_timeout用于控制主库等待备库响应的消息时间(单位ms),如果超过该阀值,则认为备库存在问题,将半同步复制修改为异步复制,避免主库的执行事务长时间等待。参数rpl_semi_sync_master_timeout的默认值为50ms。 rpl_semi_sync_master_enabled:表示主上是否开启半同步复制功能,可以动态修改。可选值:ON\OFF rpl_semi_sync_slave_enabled

Mysql基于gtid的主从复制错误:1062

倾然丶 夕夏残阳落幕 提交于 2020-03-18 07:49:11
说明: 环境 mysql-master:172.16.200.43 mysql-slave:172.16.200.44 系统:centos7 版本:MySQL5.6.35 一、基于GTID复制环境的搭建前提 主从环境的搭建和5.5没有什么区别,唯一需要注意的是:开启GTID需要启用这三个参数: #GTID gtid_mode = on enforce_gtid_consistency = 1 log_slave_updates = 1 gtid-mode用来设置是否开启GTID功能,如果要开启GTID功能,需要同时开启log-bin和log_slave_updates功能,另外还需要开启enforce_gtid_consistency功能。gtid_mode参数可以设置为on、off、upgrade_step_1、upgrade_step_2四种值,其中upgrade_step_1和upgrade_step_2是给将来mysql可能的新功能预留的,对当前的myql没有任何意义。同时,mysql建议在mysql_upgrade的时候,关闭gtid_mode功能和enforce_gtid_consistency功能,因为Mysql在upgrade期间可能会操作非事务的MyISAM存储引擎表,会引起报错。 二、配置步骤 1、43上面授权44从库的账号 MySQL [(none)]>

基于redis5的session共享:【redis 5.x集群应用研究】

隐身守侯 提交于 2020-03-18 07:24:31
基于springsession构建一个session共享的模块。 这里,基于redis的集群(Redis-5.0.3版本),为了解决整个物联网平台的各个子系统之间共享session需求,且方便各个子系统使用,将这个模块设计为一个pom组件,直接在pom.xml文件里面配置为dependency。 今天的主题,就是redis 5.0.3环境的构建。 和我之前介绍过的redis 3.2.8 (https://www.cnblogs.com/shihuc/p/7882004.html)有些类似,只是redis 5里面,不再依赖ruby脚本进行集群配置,而是直接用c程序实现,直接基于redis-cli指令完成。这些就不做介绍,直接介绍如何配置。 首先,需要修改的配置项如下: bind 10.95.200.12 protected-mode no port 7380 daemonize yes pidfile /var/run/redis_7380.pid dbfilename dump-7380.rdb appendonly yes appendfilename "appendonly-7380.aof" cluster-enabled yes cluster-config-file nodes-7380.conf cluster-node-timeout 15000 notify

Mysql主从配置

我只是一个虾纸丫 提交于 2020-03-18 07:15:09
试验环境 :   主服务器 IP:192.168.17.99   从服务器 IP:192.168.17.88 配置 : 一、主库 1.1、创建一个复制用户,具有replication slave 权限。 mysql > grant all on *.* to ‘jack@’192.168.17.88′ identified by ‘123; 1.2、编辑my.cnf文件   vi /etc/my.cnf   添加   server-id=88 # 标记不同数据库,不能与其他数据库一样   并开启 log-bin二进制日志文件   log-bin=mysql-bin   注 :需要把默认的server-id=1去掉   关闭 mysql   [root@cent] /usr/local/mysql/bin/mysqladmin -uroot -p shutdown 1.3、启动mysql数据库 /usr/local/mysql/bin/mysqld_safe –user=mysql & 1.4 、得到 binlog日志文件名和偏移量 mysql > show master status; +——————+———-+————–+——————+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +——————+———-+————–

数据库主从复制

风流意气都作罢 提交于 2020-03-18 07:09:44
步骤如下: 主服务器:从服务器ip地址分别为 192.168. 145.222、 192.168. 145.226 1、修改主服务器master: vi /etc/my.cnf [mysqld] log-bin=mysql-bin #[必须]启用二进制日志 server-id= 222 #[必须]服务器唯一ID,默认是1,一般取IP最后一段 2、修改从服务器slave: vi /etc/my.cnf [mysqld] log-bin=mysql-bin #[不是必须]启用二进制日志 server-id= 226 #[必须]服务器唯一ID,默认是1,一般取IP最后一段 3、重启两台服务器的 MySQL systemctl restart mariadb 4、在主服务器上建立帐户并授权slave: mysql mysql>GRANT REPLICATION SLAVE ON *.* to 'mysync'@ '%' identified by 'q123456'; //一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如 192.168. 145.226,加强安全。 5、登录主服务器的mysql,查询master的状态 mysql>show master status; +------------------+----------+--

mysql主从复制

被刻印的时光 ゝ 提交于 2020-03-18 07:09:08
mysql主从复制 (超简单) 怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤如下: 1、主从服务器分别作以下操作: 1.1、版本一致 1.2、初始化表,并在后台启动mysql 1.3、修改root的密码 2、修改主服务器master: #vi /etc/my.cnf [mysqld] log-bin=mysql-bin //[必须]启用二进制日志 server-id=222 //[必须]服务器唯一ID,默认是1,一般取IP最后一段 3、修改从服务器slave: #vi /etc/my.cnf [mysqld] log-bin=mysql-bin //[不是必须]启用二进制日志 server-id=226 //[必须]服务器唯一ID,默认是1,一般取IP最后一段 4、重启两台服务器的mysql /etc/init.d/mysql restart 5、在主服务器上建立帐户并授权slave: #/usr/local/mysql/bin/mysql -uroot -pmttang mysql>GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' identified by 'q123456'; //一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.145.226

Codis集群的搭建与使用

最后都变了- 提交于 2020-03-18 01:59:57
Codis集群的搭建与使用 一、简介 Codis是一个分布式的Redis解决方案,对于上层的应用来说,连接Codis Proxy和连接原生的Redis Server没有明显的区别(不支持的命令列表),上层应用可以像使用单机的Redis一样使用,Codis底层会处理请求的转发,不停机的数据迁移等工作,所有后边的一切事情,对于前面客户端来说是透明的,可以简单的认为后边连接是一个内存无限大的Redis服务。 Codis架构图: 以上我们可以看到codis-proxy是单个节点的,因为我们可以通过结合keepalived来实现高可用: codis-proxy 提供连接集群redis服务的入口 codis-redis-group 实现redis读写的水平扩展,高性能 codis-redis 实现redis实例服务,通过codis-ha实现服务的高可用 二、组件说明 codis-proxy : 是客户端连接的Redis代理服务,codis-proxy 本身实现了Redis协议,表现得和一个原生的Redis没什么区别(就像Twemproxy),对于一个业务来说,可以部署多个codis-proxy,codis-proxy本身是没状态的。 codis-config :是Codis的管理工具,支持包括,添加/删除Redis节点,添加/删除Proxy节点,发起数据迁移等操作,codis

redis 主从分布式

。_饼干妹妹 提交于 2020-03-17 15:13:35
某厂面试归来,发现自己落伍了!>>> 1.测试环境 master: 127.0.0.1 6379 slave1: 127.0.0.1 6479 slave2: 127.0.0.1 6579 master-sentinel: 127.0.0.1 26379 slave1-sentinel: 127.0.0.1 26479 slave2-sentinel: 127.0.0.1 26579 2.下载安装redis 2.8.3 cd wget http://download.redis.io/releases/redis-2.8.3.tar.gz tar –zxvf redis-2.8.3.tar.gz cd redis-2.8.3 make;make install(此处可用PREFIX参数将redis安装到其他目录) 3.配置测试环境 ----创建目录: cd /usr/local mkdir redis_cluster mkdir redis_cluster/master_6379 mkdir redis_cluster/slave_6479 mkdir redis_cluster/slave_6579 ----配置redis: master: cp –a –R –p ~/redis-2.8.3/redis.conf ./redis_cluster/master_6379/ cp

Redis 集群 Cluster Master Slave

自闭症网瘾萝莉.ら 提交于 2020-03-17 15:01:01
某厂面试归来,发现自己落伍了!>>> Cluster 1、Redis 集群的分片特征在于将键空间分拆了16384个槽位,每一个节点负责其中一些槽位 2、Redis提供一定程度的可用性,可以在某个节点宕机或者不可达的情况下继续处理命令. 3、Redis 集群中不存在中心(central)节点或者代理(proxy)节点 集群的最大节点数量也是 16384 个(推荐的最大节点数量为 1000 个),同理每个主节点可以负责处理1到16384个槽位。 集群中的每个节点都与其他节点建立起了“集群连接(cluster bus)”, 该连接是一个 TCP 连接, 使用二进制协议进行通讯。 节点之间使用 Gossip 协议 来进行以下工作: a).传播(propagate)关于集群的信息,以此来发现新的节点。 b).向其他节点发送 PING 数据包,以此来检查目标节点是否正常运作。 c).在特定事件发生时,发送集群信息。 HASH_SLOT = CRC16(key) mod 16384 目前redis支持的cluster特性 1):节点自动发现 2):slave->master 选举,集群容错 3):Hot resharding:在线分片 4):进群管理:cluster xxx 5):基于配置(nodes-port.conf)的集群管理 6):ASK 转向/MOVED 转向机制. Master