Home  >  Article  >  Database  >  rhel6系统中,mysql 5.6复制新特性下主从复制配置[基于GTID]

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

WBOY
WBOYOriginal
2016-06-07 17:37:48810browse

更多博文请关注:没有伞的孩子必须努力奔跑(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
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn