MySQL 5.6.10 跨平台GTID复制实践

根据业务需要,建立MySQL复制来实现数据冗余。

MySQL 5.6.10版本提供了更方便的基于GTID的复制功能,MySQL可以通过GTID自动识别上次同步的点,极大地方便了运维人员,减少出错的几率。

在官方文档中提到,最保险可靠的复制方式,是基于row的复制,所以宁可牺牲一些性能也要保证数据的安全。

现实环境中,master主数据库MySQL 5.6.10(msi安装方式)安装在Windows 2008 Server x64上,slave从服务器是一台老旧的DELL服务器,运行CentOS 6.4 x64系统,源码编译安装MySQL 5.6.10的Linux版本,安装过程可以参考我以前的博文:http://www.cnblogs.com/jlzhou/archive/2013/03/09/2951544.html

不同平台下,MySQL是有一些差异的,要小心处理。

第一个问题是,Windows平台下,文件名大小写不敏感,造成对应的MySQL的数据表名称默认都采用小写字母方式,同时大小不写敏感,参考我以前的博文:http://www.cnblogs.com/jlzhou/archive/2013/03/18/2966106.html 为了能将数据同步复制到Linux平台的MySQL,我们需要设置Linux平台下MySQL的数据表名称设置:(修改my.cnf文件)

[mysqld]lower_case_table_names=1

第二个问题是,自增字段0值的问题。因为现有数据库是MSSQL,业务逻辑需要某些表的自增字段从0开始。参考我以前的博文:http://www.cnblogs.com/jlzhou/archive/2013/03/18/2965384.html 为了在Windows平台和Linux平台的MySQL之间复制数据,增加全局变量设置,在my.ini和my.cnf中分别添加NO_AUTO_VALUE_ON_ZERO设置到sql-mode行:

//my.ini 该文件默认在Windows7或Windows2008操作系统中位于 C:/ProgramData/MySQL/MySQL Server 5.6 目录下(采用MSI安装方式),如果你自定义了数据目录,则该配置文件在数据目录下。# Set the SQL mode to strictsql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_AUTO_VALUE_ON_ZERO"

现在开始配置GTID复制,先配置master端的my.ini文件,加入下述配置,然后重启master的MySQL服务:

binlog-format=ROWlog-bin=master-bin.loglog-bin-index=master-bin.indexlog-slave-updates=truegtid-mode=onenforce-gtid-consistency=truemaster-info-repository=TABLErelay-log-info-repository=TABLEsync-master-info=1slave-parallel-workers=2binlog-checksum=CRC32master-verify-checksum=1slave-sql-verify-checksum=1binlog-rows-query-log-events=1server-id=1sync_binlog=1

再修改slave端的my.cnf文件,加入下述配置,然后重启slave的MySQL服务:

binlog-format=ROWlog-bin=slave-bin.loglog-bin-index=slave-bin.indexlog-slave-updates=truegtid-mode=onenforce-gtid-consistency=truemaster-info-repository=TABLErelay-log-info-repository=TABLEsync-master-info=1slave-parallel-workers=2binlog-checksum=CRC32master-verify-checksum=1slave-sql-verify-checksum=1binlog-rows-query-log-events=1server-id=2sync_binlog=1

其实,并不需要在slave端启用binlog,但是为了在master故障时,方便的转换slave到master,并且方便建立slave的slave,所以采用和主服务器类似的配置。

复制设置会将用于复制的用户和密码以明文形式保存在master.info文件中,最好为复制建立专用的用户,授予 REPLICATION SLAVE 权限。

在master端执行:

GRANT REPLICATION SLAVE ON *.* TO 'repluser'@'192.168.1.101' IDENTIFIED BY '12345678';

最后,在slave执行指向master的命令,并开启slave复制。

CHANGE MASTER TO MASTER_HOST='192.168.1.100', MASTER_PORT=3306, MASTER_USER='repluser',MASTER_PASSWORD='12345678', master_auto_position=1;

START slave;

这时就可以测试在master上建立数据库,建表,然后监控slave的复制状态了。

本文中没有涉及到已有数据库在master上的情况,请参考这篇博文:http://www.zhaokunyao.com/archives/4131

时间: 2024-09-20 05:35:25

MySQL 5.6.10 跨平台GTID复制实践的相关文章

PostgreSQL 10.0 逻辑复制原理与最佳实践

标签 PostgreSQL , logical replication , 逻辑复制 , 最佳实践 背景 PostgreSQL 从2010年发布的9.0开始支持流式物理复制,备库可以作为只读库打开,提供给用户使用. 物理复制的好处 1. 物理层面完全一致,这是许多商业数据库的惯用手段.例如Oracle的DG. 2. 延迟低,事务执行过程中产生REDO record,实时的在备库apply,事务结束时,备库立马能见到数据.不论事务多大,都一样. 3. 物理复制的一致性.可靠性达到了金融级的需求,不

MySQL 5.6, 5.7并行复制测试(二)(r12笔记第10天)

  昨天花了点时间整理了下并行复制在5.6,5.7中的一些差别和测试,当然只是一个开始,因为里面还有不少需要完善的部分,总体的感觉来看MySQL 5.7里的并行复制改进很大,能够极大提高效率,充分利用资源.   那我们来简单回顾一下MySQL的复制里的一些事情,然后继续展开测试.    首先借丁奇大师总结的一个经典的主从复制的流程图来展开. 整个复制的流程中,看似存在多个节点会存在延迟的可能,而如果把这些工作都细化,那么就会有一个很本质的原因,那就是在主库端的更新是多线程,而从库端更新是单线程.

基于Docker的mysql mha 的集群环境构建实践

12月2日,云计算高级工程师王佩老师,在[DBA+社群]中间件用户组进行了一次主题为"基于Docker的mysql mha 的集群环境构建实践"的线上分享.小编特别整理出其中精华内容,供大家学习交流.同时,也非常感谢王佩老师对DBA+社群给予的大力支持.    嘉宾简介   云计算高级工程师 目前主要研究docker 相关的云计算技术   演讲实录  关于docker 想必前面的各位大牛分享的演讲讲的非常多了,今天主要跟大家分享基于docker快速构建 mysql mha 的一个实战案

使用HAProxy、PHP、Redis和MySQL支撑每周10亿请求

使用HAProxy.PHP.Redis和MySQL支撑每周10亿请求 在公司的发展中,保证服务器的可扩展性对于扩大企业的市场需要具有重要作用,因此,这对架构师提出了一定的要求.Octivi联合创始人兼软件架构师Antoni Orfin将向你介绍一个非常简单的架构,使用HAProxy.PHP.Redis和MySQL就能支撑每周10亿请求.同时,你还能了解项目未来的横向扩展途径及常见的模式. 状态 服务器 3个应用程序节点 2个MySQL+1个备份 2个Redis 应用程序 应用程序每周处理10亿请

access mysql mssql 随机 10条数据的sql语句[原创]_数据库其它

access 随机 10条数据的方法 复制代码 代码如下: select * from table order by rnd(id) 其中rnd(id)中的id为表中的自增长字段access随机显示记录(不重复)解决方案 复制代码 代码如下: <% '-------------------------数据库连接----------------------- Set objConn = Server.CreateObject("ADODB.Connection") objConn.

Ubuntu Server 12.04 安装mysql 5.6.10学习笔记

首先,下载二进制版本的mysql包: http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.10-linux-glibc2.5-x86_64.tar.gz 因为Ubuntu Server上 wget比较慢,所以我是直接在windows用迅雷下载好,然后WinSCP上传到服务器的,看各自喜好了. 上正题. 包放在~/Download目录下,全部安装命令如下: 1.解压tar.gz  代码如下 复制代码 tar –xzf mysql-5.6.10-li

MySQL 5.6, 5.7并行复制测试(r12笔记第9天)

   对于主从延迟,其实一直以来就是一个颇有争议的话题,在MySQL阵营中,如果容忍一定的延迟的场景,通过主从来达到读写分离是个很不错的方案,但是延迟率到底有多高可以接受,新版本中的并行复制效果怎么样,在不同的版本中是否有改变,我们能否找到一些参考的数据来佐证,这一点上我们可以通过一些小测试来说明.    首先来为了基本按照同一个参考标准,我们就在同一台服务器上安装了5.6,5.7的MySQL服务,另外一台服务器上搭建了从库.    数据库版本为5.6.23 Percona分支, 5.7.17

mysql dba系统学习(17)mysql的备份和恢复的完整实践

mysql的备份和恢复的完整实践 一,备份数据库之间的环境设置 1,创建数据库test1,创建表tt插入如下数据 mysql> create database test1; Query OK, 1 row affected (0.04 sec) mysql> use test1 Database changed mysql> create table tt(id int,name varchar(100),msg varchar(200)) engine=myisam; Query OK

red hat enterprise 5.4下安装mysql 5.6.10

完成上一次留下的话题,今天谈谈在red hat enterprise 5.4 下安装mysql 5.6.10 1:下载mysql 下载地址为:http://www.mysql.com/downloads/mysql/5.6.html#downloads 选择"Source Code"->"Generic Linux (Architecture Independent), Compressed TAR Archive" 当然还需要一个工具cmake(因为这个my