热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

rhel6系统中,mysql5.6复制新特性下主从复制配置[基于GTID]

更多博文请关注:没有伞的孩子必须努力奔跑(www.xuchanggang.cn)1.mysql5.6在复制方面的新特性:(1).支持多线程复制:事实上是针对每个database开启相应的独立线

更多博文请关注:没有伞的孩子必须努力奔跑(www.xuchanggang.cn)1.mysql5.6在复制方面的新特性:(1).支持多线程复制:事实上是针对每个database开启相应的独立线

(2).支持启用GTID,在配置主从复制,传统的方式里,你需要找到binlog和POS点,然后change master to指向.在mysql5.6里,无须再知道binlog和POS点,只需要知道master的IP/端口/账号密码即可,因为同步复制是自动的,mysql通过内部机制GTID自动找点同步.

(3).基于Row复制只保存改变的列,大大节省Disk Space/Newwork resources和Memory usage.

(4).支持把Master 和Slave的相关信息记录在Table中,原来是记录在文件里,记录在表里,增强可用性

(5).支持延迟复制

注:

关于 server_uuid 的解释:服务器身份ID。在第一次启动Mysql时,会自动生成一个server_uuid并写入到数据目录下auto.cnf文件里,官方不建议修改。

[root@client102 ~]# cat /home/mysql/data/auto.cnf [auto] server-uuid=14be3ddd-4e92-11e3-8335-000c299c1b31

(5).不支持CREATE TABLE ... SELECT语句。因为该语句会被拆分成create table 和insert两个事务,,并且这个两个事务被分配了同一个GTID,这会导致insert被备库忽略掉[这条语句在游戏数据库用的比较多,通常用来将大表分成小表]


4.基于GTID(全局事务标识符)mysql主从复制配置演示:

(1).默认主DB server和从DB server数据库都已经安装好,我的两台DB server都已经安装好(5.6.14版本),都会是双实例[这里我使用3307端口的实例]

注:两台机器的的selinux都是disable(永久关闭selinux,请修改/etc/selinux/config,将SELINUX改为disabled),防火墙可以选择关闭,开启的话也行[不行的话,添加防火墙策略]

主DB server:192.168.1.102:3307

从DB server:192.168.1.100:3307


(2).修改主DB server的配置文件(/etc/my.cnf) [client102为主DB server] --> 主DB sever的配置文件和从DB server文件基本一样,方便搭建HA

[root@client102 ~]# vim /etc/my.cnf # 在[mysqld]里加入如下代码[里面原代码保留,有重复的部分,以这部分为准] # 设置server_id,一般建议设置为IP,或者再加一些数字[在以前版本为server-id] server_id =1021 # 二进制日志的格式:有row、statement和mixed三种 # 注:当设置隔离级别为READ-COMMITED必须设置二进制日志格式为ROW,MySQL官方认为STATEMENT这个已经不再适合继续使用;但mixed类型在默认的事务隔离级别下,可能会导致主从数据不一致; 推荐使用 row binlog-format=ROW # 这个选项允许应用程序只能对行的镜像数据进行复制,而不在关心行是否已经进行了DML操作.这提高了主从机器的复制吞吐量,减少了二进制日志所占用的磁盘空间、网络资源和内存占用. binlog-row-image = minimal # 开启二进制日志功能,可以随便取,最好有含义 log-bin=mysql3307-bin # log-slave-updates/gtid-mode/enforce-gtid-consistency/report-port/report-host:用于启动GTID及满足附属的其它需求[其中启动GTID必须同时设置gtid-mode/enforce-gtid-consistency/] report-host=192.168.1.102 report-port=3307 gtid-mode=on enforce-gtid-cOnsistency=true log-slave-updates=true # master-info-repository/relay-log-info-repository都设置为TABLE,mysql.slave_master_info与 mysql.slave_relay_log_info 中,table都是innodb类型的,支持事务,比文件安全 # 默认值是FILE, 比如master info就保存在master.info文件中,relay log info保存在relay-log.info文件中,如果服务器意外关闭,正确的relay info 没有来得及更新到 relay-log.info文件,这样会造成数据丢失 master-info-repository=TABLE relay-log-info-repository=TABLE # 启用之后,使binlog在每N次binlog写入后与硬盘 同步 sync-master-info=1 # 以下是对二进制日志一些设置 binlog_cache_size = 4M max_binlog_size = 1G max_binlog_cache_size = 2G # 以下这几个参数是启用binlog/relaylog的校验,防止日志出错 binlog-checksum=CRC32 slave_allow_batching = 1 master-verify-checksum=1 slave-sql-verify-checksum=1 # 启用这个参数,可用于在二进制日志记录事件相关的信息,可降低故障排除的复杂度 # 只对row binlog格式有效.启用后,会向binlog中写入更多的调试信息,比如sql语句自身都会被写进去. mysqlbinlog -vv 可以看到. binlog-rows-query-log_events=1 # 开启基于库的多线程复制.默认是0,不开启,最大并发数为1024个线程 slave-parallel-workers=4 # 这两个是启用relaylog的自动修复功能,避免由于网络之类的外因造成日志损坏,主从停止. relay_log_purge = 1 relay_log_recovery = 1

(3).启动数据库服务器,并登陆数据库,授予相应的用户用于同步

# 查看GTID是否开启[enforce_gtid_consistency/gtid_mode 为ON,表示已经开启] mysql> show global variables like '%gtid%'; +--------------------------+-------+ | Variable_name | Value | +--------------------------+-------+ | enforce_gtid_consistency | ON | | gtid_executed | | | gtid_mode | ON | | gtid_owned | | | gtid_purged | | +--------------------------+-------+ # 我这里是多实例mysql,所以启动是这样的,如果大家是单实例的,就直接启动就可以[/etc/init.d/mysqld start] [root@client102 ~]# mysqld_multi start 3307 # 登陆mysql 服务器 [root@client102 ~]# mysql -uroot -S /usr/local/mysql/mysqld3307.sock -p # 授予用户权限用于主从同步 mysql> grant replication slave on *.* to 'kongzhong'@'192.168.1.100' identified by 'kongzhong'; # 刷新授权表信息 mysql> flush privileges;


(4).从DB server配置文件添加代码如下,和主基本一样

[root@client100 ~]# vim /etc/my.cnf # 在[mysqld]下添加如下代码[里面原代码保留,有重复的部分,以这部分为准] server_id =1002 # 此处和主DB server不一样,唯一值 binlog-format=ROW binlog-row-image = minimal log-bin=mysql33071-bin # 此处和主DB server不一样 report-host=192.168.1.100 # 此处和主DB server不一样 report-port=3307 gtid-mode=on enforce-gtid-cOnsistency=true master-info-repository=TABLE relay-log-info-repository=TABLE sync-master-info=1 slave-parallel-workers=4 binlog_cache_size = 4M max_binlog_size = 1G max_binlog_cache_size = 2G binlog-checksum=CRC32 master-verify-checksum=1 slave-sql-verify-checksum=1 binlog-rows-query-log_events=1 log-slave-updates=true relay_log_purge = 1 relay_log_recovery = 1
推荐阅读
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 众筹商城与传统商城的区别及php众筹网站的程序源码
    本文介绍了众筹商城与传统商城的区别,包括所售产品和玩法不同以及运营方式不同。同时还提到了php众筹网站的程序源码和方维众筹的安装和环境问题。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • MyBatis错题分析解析及注意事项
    本文对MyBatis的错题进行了分析和解析,同时介绍了使用MyBatis时需要注意的一些事项,如resultMap的使用、SqlSession和SqlSessionFactory的获取方式、动态SQL中的else元素和when元素的使用、resource属性和url属性的配置方式、typeAliases的使用方法等。同时还指出了在属性名与查询字段名不一致时需要使用resultMap进行结果映射,而不能使用resultType。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
author-avatar
orzxy_966
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有