Mysql双主架构安装手册
- 格式:pdf
- 大小:484.23 KB
- 文档页数:19
mysql的双主模式配置第⼀台:192.168.0.160第⼆台:192.168.0.170主从配置,第⼀步:192.168.0.160 作为主数据库,192.168.0.170作为从数据库,配置如下:========192.168.0.160配置=======f配置⽂件server-id=1log-bin=mysql-bin-master #启⽤mysql⼆进制⽇志⽂件binlog-do-db=HA #指定允许从同步的数据库binlog-ignore-db=mysql #指定不允许从同步的数据库mysql> grant replication slave on *.* to 'slave'@'192.168.0.170' identified by 'password';mysql> show master status;mysql> flush privilegesmysql> select * from er where user='slave';============================================192.168.0.170=============f配置⽂件server-id=2mysql>stop slave;mysql> change master to master_host='192.168.0.160',master_user='slave',master_password='password'; mysql>flush privileges;mysql> start slave;===================================~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~测试:在192.168.0.160上创建数据库mysql> create database test;myql> show databases;在192.168.0.170上查询数据库mysql>show slave status; #io进程和sql进程都必须为yes,表⽰配置正确。
mysql+mycat搭建稳定⾼可⽤集群,负载均衡,主备复制,读写分离数据库性能优化普遍采⽤集群⽅式,oracle集群软硬件投⼊昂贵,今天花了⼀天时间搭建基于mysql的集群环境。
主要思路简单说,实现mysql主备复制-->利⽤mycat实现负载均衡。
⽐较了常⽤的读写分离⽅式,推荐mycat,社区活跃,性能稳定。
测试环境MYSQL版本:Server version: 5.5.53,到官⽹可以下载WINDWOS安装包。
注意:确保mysql版本为5.5以后,以前版本主备同步配置⽅式不同。
linux实现思路类似,修改f即可。
A主mysql。
192.168.110.1:3306, ⽤户root,密码root。
操作系统:win7 x64,内存:4g安装路径:C:\Program Files\MySQL\MySQL Server 5.5\binB备mysql。
192.168.110.2:3306, ⽤户root,密码root。
操作系统:win2003 x64,内存:1g安装路径:C:\Program Files\MySQL\MySQL Server 5.5\binA主、B备的mysql中创建sync_test数据库实现mysql主备复制主要思路:A主mysql开启⽇志,B备mysql读取操作⽇志,同步执⾏。
⼀般为主备同步,主主同步不推荐使⽤。
配置A主mysql1)修改my.ini。
需要在log-bin="C:/Program Files/MySQL/MySQL Server 5.5/log/mysql-bin.log"的相关位置创建log⽬录,以及mysql-bin.log⽂件。
[mysqld]server-id=1 #主机标⽰,整数port=3306log-bin="C:/Program Files/MySQL/MySQL Server 5.5/log/mysql-bin.log" #确保此⽂件可写read-only=0 #主机,读写都可以binlog-do-db=sync_test #需要备份数据库,多个写多⾏binlog-ignore-db=mysql #不需要备份的数据库,多个写多⾏2)允许MYSQL远程访问#登录mysql console进⼊%home%/bin,执⾏mysql -uroot -proot#授权。
MySQL之MyCat Mycat 可以简单概括为⼀个彻底开源的,⾯向企业应⽤开发的⼤数据库集群⽀持事务、ACID、可以替代MySQL的加强版数据库⼀个可以视为MySQL集群的企业级数据库,⽤来替代昂贵的Oracle集群⼀个融合内存缓存技术、NoSQL技术、HDFS⼤数据的新型SQL Server结合传统数据库和新型分布式数据仓库的新⼀代企业级数据库产品⼀个新颖的数据库中间件产品Mycat⼯作原理Mycat的原理中最重要的⼀个动词是"拦截",它拦截了⽤户发送过来的SQL语句,⾸先对SQL语句做了⼀些特定的分析:如分⽚分析、路由分析、读写分离分析、缓存分析等,然后将此SQL发往后端的真实数据库,并将返回的结果做适当的处理,最终再返回给⽤户Mycat应⽤场景Mycat适⽤的场景很丰富,以下是⼏个典型的应⽤场景单纯的读写分离,此时配置最为简单,⽀持读写分离,主从切换分表分库,对于超过1000万的表进⾏分⽚,最⼤⽀持1000亿的单表分⽚多租户应⽤,每个应⽤⼀个库,但应⽤程序只连接Mycat,从⽽不改造程序本⾝,实现多租户化报表系统,借助于Mycat的分表能⼒,处理⼤规模报表的统计替代Hbase,分析⼤数据作为海量数据实时查询的⼀种简单有效⽅案,⽐如100亿条频繁查询的记录需要在3秒内查询出来结果,除了基于主键的查询,还可能存在范围查询或其他属性查询,此时Mycat可能是最简单有效的选择Mycat长期路线图强化分布式数据库中间件的⽅⾯的功能,使之具备丰富的插件、强⼤的数据库智能优化功能、全⾯的系统监控能⼒、以及⽅便的数据运维⼯具,实现在线数据扩容、迁移等⾼级功能进⼀步挺进⼤数据计算领域,深度结合Spark Stream和Storm等分布式实时流引擎,能够完成快速的巨表关联、排序、分组聚合等 OLAP⽅向的能⼒,并集成⼀些热门常⽤的实时分析算法,让⼯程师以及DBA们更容易⽤Mycat实现⼀些⾼级数据分析处理功能不断强化Mycat开源社区的技术⽔平,吸引更多的IT技术专家,使得Mycat社区成为中国的Apache,并将Mycat推到Apache基⾦会,成为国内顶尖开源项⽬,最终能够让⼀部分志愿者成为专职的Mycat开发者,荣耀跟实⼒⼀起提升Mycat不适合的应⽤场景设计使⽤Mycat时有⾮分⽚字段查询,请慎重使⽤Mycat,可以考虑放弃!设计使⽤Mycat时有分页排序,请慎重使⽤Mycat,可以考虑放弃!设计使⽤Mycat时如果要进⾏表JOIN操作,要确保两个表的关联字段具有相同的数据分布,否则请慎重使⽤Mycat,可以考虑放弃!设计使⽤Mycat时如果有分布式事务,得先看是否得保证事务得强⼀致性,否则请慎重使⽤Mycat,可以考虑放弃!MyCat的⾼可⽤性:需要注意: 在⽣产环境中, Mycat节点最好使⽤双节点, 即双机热备环境, 防⽌Mycat这⼀层出现单点故障.可以使⽤的⾼可⽤集群⽅式有:Keepalived+Mycat+MysqlKeepalived+LVS+Mycat+MysqlKeepalived+Haproxy+Mycat+Mysqlmycat安装⽬录结构:bin mycat命令,启动、重启、停⽌等catlet catlet为Mycat的⼀个扩展功能conf Mycat 配置信息,重点关注lib Mycat引⽤的jar包,Mycat是java开发的logs ⽇志⽂件,包括Mycat启动的⽇志和运⾏的⽇志version.txt mycat版本说明logs⽬录:wrapper.log mycat启动⽇志mycat.log mycat详细⼯作⽇志Mycat的配置⽂件都在conf⽬录⾥⾯,这⾥介绍⼏个常⽤的⽂件:server.xml Mycat软件本⾝相关的配置⽂件,设置账号、参数等schema.xml Mycat对应的物理数据库和数据库表的配置,读写分离、⾼可⽤、分布式策略定制、节点控制rule.xml Mycat分⽚(分库分表)规则配置⽂件,记录分⽚规则列表、使⽤⽅法等Mycat 主要配置⽂件说明server.xml存放Mycat软件本⾝相关的配置⽂件,⽐如:连接Mycat的⽤户,密码,数据库名称等server.xml⽂件中配置的参数解释说明:参数说明user ⽤户配置节点name 客户端登录MyCAT的⽤户名,也就是客户端⽤来连接Mycat的⽤户名。
一、数据库架构原则1.高可用2.3.高性能4.5.一致性6.7.扩展性8.二、常见的数据库架构方案方案一:主备架构,只有主库提供读写服务,备库冗余作故障转移用jdbc:mysql://vip:3306/xxdb1、高可用分析:高可用,主库挂了,keepalive(只是一种工具)会自动切换到备库。
这个过程对业务层是透明的,无需修改代码或配置。
2、高性能分析:读写都操作主库,很容易产生瓶颈。
大部分互联网应用读多写少,读会先成为瓶颈,进而影响写性能。
另外,备库只是单纯的备份,资源利用率50%,这点方案二可解决。
3、一致性分析:读写都操作主库,不存在数据一致性问题。
4、扩展性分析:无法通过加从库来扩展读性能,进而提高整体性能。
5、可落地分析:两点影响落地使用。
第一,性能一般,这点可以通过建立高效的索引和引入缓存来增加读性能,进而提高性能。
这也是通用的方案。
第二,扩展性差,这点可以通过分库分表来扩展。
方案二:双主架构,两个主库同时提供服务,负载均衡jdbc:mysql://vip:3306/xxdb1、高可用分析:高可用,一个主库挂了,不影响另一台主库提供服务。
这个过程对业务层是透明的,无需修改代码或配置。
2、高性能分析:读写性能相比于方案一都得到提升,提升一倍。
3、一致性分析:存在数据一致性问题。
请看,一致性解决方案。
4、扩展性分析:当然可以扩展成三主循环,但笔者不建议(会多一层数据同步,这样同步的时间会更长)。
如果非得在数据库架构层面扩展的话,扩展为方案四。
5、可落地分析:两点影响落地使用。
第一,数据一致性问题,一致性解决方案可解决问题。
第二,主键冲突问题,ID统一地由分布式ID生成服务来生成可解决问题。
方案三:主从架构,一主多从,读写分离jdbc:mysql://master-ip:3306/xxdbjdbc:mysql://slave1-ip:3306/xxdbjdbc:mysql://slave2-ip:3306/xxdb1、高可用分析:主库单点,从库高可用。
Docker实现Mysql主从复制实战(⼀主⼀从、双主双从):---------------------------------⽬录----------------------------------前期扯淡:mysql主从复制和集群区别⼀、 Mysql数据库主从复制⼀主⼀从⼆、 Mysql数据库主从复制双主双从-----------------------------------------------------------------------哈哈!欢迎你的到来,俗话说磨⼑不误砍柴⼯,来吧,咱们先看看Mysql的主从复制和集群概念的区别。
MySQL集群是⼀个⽆共享的(shared-nothing)、分布式节点架构的存储⽅案,其⽬的是提供容错性和⾼性能。
集群所涉及到的三个概念: SQL节点(多个):应⽤程序和数据节点的⼀个桥梁,应⽤程序不能直接访问数据节点,只能先访问SQL节点,然后SQL节点再去访问数据节点来返回数据,Cluster中可以有多个SQL节点,通过每个SQL节点查询到的数据都是⼀致的,⼀般来说,SQL节点越多,分配到每个SQL节点的负载就越⼩,系统的整体性能就越好; 数据节点(多个):⽤于存储数据,数据存放内存中,数据节点中数据保存后⾃动复制并存储到其他节点,数据节点之间采⽤的是同步复制来保证各节点之间的数据⼀致性 管理节点(⼀个):主要负责管理数据节点和SQL节点,还有集群配置⽂件和集群⽇志⽂件。
它监控其他节点的⼯作状态,能够启动、关闭或者重启某个节点。
其他节点从管理节点检索配置数据,当数据节点有新事件就把事件信⼼发送给管理节点并写⼊集群⽇志。
同步复制流程:a) Master执⾏提交语句时,事务被发送到Slave,Slave开始准备事务的提交。
b) 每个slave都要准备事务,然后向Master发送OK(或ABORT)消息,表明事务已经准备好(或者⽆法准备该事务)。
c) Master等待所有Slave发送OK或ABORT消息,如果Master收到所有Slave的OK消息,它就会向所有Slave发送提交消息,告诉Slave提交该事务;如果 Master收到来⾃任何⼀个Slave的ABORT消息,它就向所有 Slave发送ABORT消息,告诉Slavee) 每个Slave等待来⾃Master的OK或ABORT消息。
一、下载地址:/downloads/下载版本:Windows (x86, 32-bit), MSI Installer 二、安装步骤: (一)、系统要求:首先确保系统中安装了Microsoft .NET Framework 4.0(二)、安装步骤:注1:安装类型设置Developer Default 默认安装类型 Server only 仅作为服务器 Client only 仅作为客户端Full 完全安装类型Custom 用户自定义安装类型Installation Path 应用程序安装路径 Data Path 数据库数据文件的路径注2:服务器配置1、Server Configuration TypeConfig Type 下拉列表项用来配置当前服务器的类型。
选择哪种服务器将影响到MySQL Con figuration Wizard(配置向导)对内存、硬盘和过程或使用的决策,可以选择如下所示的3种服务器类型:(1)Developer Machine(开发机器):该选项代表典型个人用桌面工作站。
假定机器上运行着多个桌面应用程序。
将MySQL服务器配置成使用最少的系统资源。
(2)Server Machin e(服务器):该选项代表服务器,MySQL服务器可以同其它应用程序一起运行,例如FTP、email和web服务器。
MySQL服务器配置成使用适当比例的系统资源。
(3)Dedicated MySQL Server Machine(专用MySQL服务器):该选项代表只运行MySQL服务的服务器。
假定运行没有运行其它应用程序。
MySQL服务器配置成使用所有可用系统资源。
作为初学者,选择“Developer Machine”(开发者机器)已经足够了,这样占用系统的资源不会很多。
2、Enable TCP/IP Networking左边的复选框中可以启用或禁用TCP/IP网络,并配置用来连接MySQL服务器的端口号,默认情况启用TCP/IP网络,默认端口为3306。
MySQL主备双活安装说明一、MySQL主备工作原理MySQL主备集群模式采用日志回放的模式,将主服务器上执行过的日志信息,在备机上重新进行一次回放,确保主备服务器数据的一致性。
简单而言就是把一个服务器上执行过的sql语句在别的服务器上也重复执行一遍,只要两个数据库的初态是一样的,那么它们就能一直同步。
对于一个mysql服务器,一般有两个线程来负责复制和被复制。
1. 作为主服务器Master,会把自己的每一次改动都记录到二进制日志Binarylog 中;2. 作为从服务器Slave,会用master上的账号登陆到master上,读取master的Binarylog,写入到自己的中继日志Relaylog,然后自己的sql线程会负责读取这个中继日志,并执行一遍。
MySQL主备双活即主服务器负责写入读取,从服务器则只能进行读取操作。
MySQL主主双活则在主备的基础上,采用互为备份的方式。
二、MySQL双活配置2.1. 环境说明两台服务器,IP地址分别为10.68.19.182(以下简称A机)、10.68.19.183(以下简称B机),操作系统Ubuntu 14.04。
2.2. MySQL安装在两台服务器上分别安装MySQL服务器。
$ sudo apt-get install mysql-server2.3. 创建备份用户在A机上执行mysql>grant replication slave on*.*to'repl'@'10.68.19.183'identified by'replpwd';mysql> flush privileges;在B机上执行mysql>grant replication slave on*.*to'repl'@'10.68.19.182'identified by'replpwd';mysql> flush privileges;2.4. 修改MySQL配置在A机上修改配置文件$ sudo vi /etc/mysql/f#bind-address = 127.0.0.1server-id = 101log_bin = /var/log/mysql/mysql-bin.logexpire_logs_days = 10max_binlog_size = 100M#binlog_do_db = include_database_namebinlog_ignore_db = mysqlbinlog_ignore_db = information_schemalog-slave-updatessync_binlog=0auto-increment-increment= 2auto-increment-offset = 1备注说明:1、bind-address注释掉或者修改为本地IP地址,否则外部机器无法连接到MySQL服务器;2、server-id为服务器的ID值,两台不同的MySQL服务器,必须配置成不同;3、binlog_do_db为需要同步的数据库,当前部署采用采用排除模式,不进行设置;4、binlog_ignore_db设定忽略哪些数据库的日志,当前的配置排除了系统自带的数据库;5、log-slave-updates这个参数用来配置从服务器的更新是否写入二进制日志,例如A->B B->A,在B中设置log_slave_updates后还可以B->C. 这样A,C中的数据也是一致的,在主主互备的方式中,日志会自动过滤自己发送给其它服务器的日志;6、sync_binlog对应的数值为0或任意整形数据,如果大于0,当每个sync_binlog写入该二进制日志后,MySQL服务器将它的二进制日志同步到硬盘上(fdatasync())。
数据库之MySQL集群⽅案策略(⼀)零、为什么需要群集? 在现在的科技环境下,我们的项⽬中往往会处理越来越多的数据量,随着数据量的递增,单⼀的数据库已经⽆法满⾜我们的业务要求,因此为了解决这⼀系列的数据库瓶颈,我们有了集群的搭建⽅案。
⼀、MySQL版本 引擎对⽐: 1、myisam没有事务⽀持 MariaDB针对MyISAM改进,Aria占⽤空间⼩,并且允许在系统之间轻松进⾏复制。
2、innodb提供事务⽀持,innodb在做任何操作时,会做⼀个⽇志操作,便于恢复。
它是MariaDB 10.2(以及MySQL)的默认存储引擎。
3、xtradb是innodb存储引擎的增强版本,拥有更⾼性能。
MariaDB在10.0.9版本起使⽤XtraDB来代替MySQL的InnoDB。
在MariaDB 10.1之前XtraDB是最佳选择,它是InnoDB的性能增强分⽀,并且是MariaDB 10.1之前的默认引擎。
版本对⽐: 1、Percona提供了⾼性能XtraDB引擎,还提供了PXC⾼可⽤解决⽅案,并且附带了percona-toolkit等DBA管理⼯具箱。
2、MariaDB在10.2.6版本⾥移除Percona XtraDB,换回默认InnoDB,现在10.5默认是InnoDB。
综合多年使⽤经验和性能对⽐,⾸选Percona分⽀,其次是MariaDB,如果你不想冒险,那就选择MYSQL官⽅版本。
推荐MariaDB⼆、Mysql群集⽅案 ⽅案⼀:共享存储 ⼀般共享存储采⽤⽐较多的是 SAN/NAS ⽅案。
SAN:共享存储,主库从库⽤的⼀个存储。
SAN的概念是允许存储设施和解决器(服务器)之间建⽴直接的⾼速连接,通过这种连接实现数据的集中式存储。
优点: 1、保证数据的强⼀致性; 2、与mysql解耦,不会由于mysql的逻辑错误发⽣数据不⼀致的情况; 缺点: 1、SAN价格昂贵; ⽅案⼆:操作系统实时数据块复制 这个⽅案的典型场景是 DRBD,DRBD架构(MySQL+DRBD+Heartbeat) DRDB:这是linux内核板块实现的快级别的同步复制技术。
mysql双主单写原理
MySQL双主单写原理是指在两台服务器之间建立主从复制的关系,其中一台作为主服务器(Master),另一台作为从服务器(Slave)。
在双主单写模式中,主服务器可以写入数据,而从服务器可以读取数据。
同时,从服务器也可以充当主服务器,从而保证了系统的高可用性。
为了实现双主单写,通常会使用KeepAlived等高可用组件来检测两端的MySQL是否存活。
如果挂载了虚拟IP(VIP)的那个主服务器出现故障,KeepAlived会将VIP转移到另一个主服务器上。
双主单写模式可以提高系统的可用性和可靠性,但也需要注意数据一致性等问题。
在实际应用中,需要根据具体需求和场景来选择合适的数据库架构。
Mysql5.7.21+双主架构安装XX年XX月XX日修订历史记录(A-添加,M-修改,D-删除)目录1概述 (4)1.1简介 (4)1.2术语和缩写词 (7)2使用场景 (7)3安装 (8)3.1系统要求 (8)3.2JDK环境以及其他依赖包 (8)3.3前期准备(https:///downloads/mysql/) (8)3.4安装包名称 (9)3.5部署步骤(以下使用InnoDB存储引擎) (9)3.6验证方案 (18)4常用操作 (18)5原理以及实现方式 (18)1概述1.1简介1.1.1什么是MySQLMySQL是一种关系型数据管理系统;关系模型及二维关系,二维关系主要是表,表是由行(row)、列(column)组成,为了能够加速表中的数据查询,给表创建索引(index)1.1.2MySQL的存储引擎是什么?MySQL中的数据以各种不同的方法存储在内存或者文件中。
这些方法中的每一种技术都使用不同的存储机制、索引方式、锁机制并且最终提供不同的功能和能力。
通过选择不同的技术,能够获得额外的效率提升,从而改善整体应用功能;这些不同的技术结合相关的功能在MySQL中被称作为存储引擎,一般也被称为表类型;MySQL中有的表简单,有的表复杂,有的表不需要来存储任何长期数据,有的表读取时非常快,但是插入数据特别慢;而在实际使用过程中,就可能需要各种各样的表,不同的表,就意味着存储不同类型的数据,数据的处理也会存在差异。
那么对于MySQL来说,他提供了多种类型的存储引擎。
1.1.3MySQL主流存储引擎MySIAM、InnoDB区别a:存储结构MySIAM:数据在磁盘上存储成3个文件。
文件的名字以表的名字开始,扩展名指出文件类型。
Frm文件存储表定义。
数据文件的扩展名是MYD。
索引文件的扩展名是MYIInnoDB:所有的表都存储在一个数据文件中,也可能是多个文件,或者是独立的表空间文件,InnoDB表的大小只受限于操作系统文件的大小,一般为2Gb:可移植性、备份及恢复MySIAM:数据是以文件的形式存储,所以在跨平台的数据转移会很方便。
在备份和恢复时可单独针对某个表进行操作。
InnoDB:免费的方案可以是拷贝数据文件、备份binlog、或者用mysqldumpc:表锁差异MySIAM:只支持表级锁,用户在操作MySIAM表时,执行select、update、delete、insert语句都会给表自动加锁,如果加锁以后的表满足insert高并发的情况下,可以在表的尾部插入新的数据InnoDB:行级锁。
行锁大幅度提高了多用户并发操作,但是InnoDB 的行锁只是在WHERE的主键是有效的,非主键的WHERE都会锁全表d:事务支持MySIAM:强调的是性能,每次查询具有原子性,执行速度比InnoDB更快,但是不提供事务支持InnoDB:提供事务、支持事务。
具有事务、回滚和崩溃修复能力的安全事务1.1.4MySQL事务简介事务由单个或多个SQL语句组成,在整个语句中,每个SQL语句都是相互依赖的。
而整个语句做为一个不可分割的整体,如果其中某个SQL语句一旦执行失败或者产生错误,则整个语句将会回滚。
所有受到影响的数据将返回到事务开始以前的状态;如果整个语句中的所有SQL语句均执行成功,则事务被顺利进行;事务具有四个特性:原子性:事务是由一个或多个相关联的SQL语句组成,这些语句被认为是一个不可分割的单元。
主要用来管理insert、update、delete语句,要么全部执行成功,要不全部不执行;事务在执行过程中发生错误,会被回滚到事务开始前的状态,就像这个事务重来没有执行过一样一致性:在事务开始前和事务结束后,对于数据库的修改是一致的,数据库的完整性没有被破坏;即多个客户查询的数据是一样的。
一致性主要由MySQL的日志机制处理,他记录数据的变化,为事务恢复提供跟踪记录;隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行由于交叉执行而导致数据的不一致。
事务隔离分为不同级别,包括读未提交(Read Uncommitted)、读提交(Read Committed)、可重复度(Repeatable Read)和串行化(Serializable)持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会消失1.2术语和缩写词数据库:数据库是关联表的集合数据表:数据的存储矩阵,类似于电子表格主键:主键是唯一的,一个数据表中只能包含一个主键,一般使用主键查询数据外键:外键用于关联2个表索引:索引是对数据表中一列或多列的值进行排序的一种结果。
类似于书籍的目录I/O Thread:从master请求二进制日志事件SQL Thread:从中继日志中读取事件,在本地完成重放Dump Thread:为每个I/O线程开启一个此线程,用于传输二进制事件Bin-log:MySQL二进制日志Relay-log:MySQL中继日志Server-id:MySQL集群全局唯一idSlow_query_log_file:查询日志记录Slow_query_log:SQL慢查询开关2使用场景MySIAM:R/W > 100:1 且update的相对较少并发量不高表数据量较小硬件资源有限InnoDB:R/W 较多,频繁更新大字段表数据量较大(1000w),并发高安全性和可用性较高3安装3.1系统要求CentOS 6 yum安装默认5.5(如果想yum安装可配置5.7源)CentOS 7 yum安装默认5.73.2JDK环境以及其他依赖包无3.3前期准备(https:///downloads/mysql/)3.3.1虚拟机两台CentOS 6.9 虚拟机10.10.x.x3.3.2安装依赖包yum install lrzsz ntpd(win和linux之间传输包)3.3.3时间同步集群时间保持一致,避免复制出现问题方法一:统一对外同步方法二:其中一台对外同步时间,其他节点向他同步时间节点一开启ntpd服务(开启ntpd服务之前先同步windows源)Ntpdate ##step time serverService ntpd start ## udp 123节点二将节点一做为时间源,进行同步ntpd $ip ##如果想实时同步可加入crontab3.4安装包名称mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz3.5部署步骤(以下使用InnoDB存储引擎)3.5.1创建数据存储路径、创建mysql组、用户(2台master操作一致)mkdir -m /data ##创建数据存储路径groupadd mysql ##创建mysql组useradd -g mysql -d /data/mysql mysql ##添加mysql用户,家目录在data下3.5.2创建MySQL服务所需要的目录,编辑权限修改为mysql(2台master操作一致)mkdir -m 755 /data/{binlog,errorlog,pid,relaylog,slowlog,sock,tmpdir}-m:避免出现系统环境的umask非022,导致数据存储路径权限不足binlog:MySQL二进制日志存储路径Errorlog:MySQL应用日志存储路径Pid:MySQL进程pid文件存储路径Relaylog:MySQL中继日志存储路径Slowlog:MySQL慢日志存储路径Sock:MySQL套接字文件存储路径Tmpdir:MySQL临时表存储路径chown -R mysql.mysql /data ##将数据存储路径属主、数组修改为mysql用户3.5.3解压tar包(2台master操作一致)pwd:/roottar -xf mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz -C /usr/local/3.5.4将解压后的目录重命名为mysql或者软连接为mysql(以下方式为软连接),并将软连接的目录权限修改为mysqlpwd:/usr/localln -sv mysql-5.7.21-linux-glibc2.12-x86_64/ mysqlchown mysql.mysql mysqlchown -R mysql.mysql mysql/*3.5.5节点一创建MySQL配置文件(以下为简洁配置,确保能正常启动配置集群)vim /etc/f[client] ##客户端选项(使用MySQL连接时可不用指定以下参数)port=38383 ##指明MySQL服务监听的TCP端口socket=/data/sock/mysql.sock ##指明MySQL服务套接字文件default-character-set=utf8 ##指定连接MySQL使用的字符集,避免出现登陆成功后,查看MySQL中文数据是乱码[mysqld] ##应用端选项server-id=1 ##配置全局唯一ID,同一集群内的此参数不能一样port = 38383 ##指明MySQL的TCP端口socket = /data/mysql/mysql.sock ##指明MySQL套接字文件路径pid_file = /data/mysql/pid/mysql.pid ##指明MySQL进程文件路径datadir = /data/mysql ##指明MySQL数据存储路径default_storage_engine = InnoDB ##指明MySQL存储类型character_set_server = utf8 ##指明MySQL字符集类型,注意此配合和客户端配置不同log-error = /data/mysql/errorlog/mysql_error.log ##指明MySQL应用日志路径bin-log = /data/mysql/binlog/mysql-bin ##指明MySQL二进制日志存储路径slow_query_log = 1 ## 指定MySQL开启慢查询功能,此参数支持布尔型值slow_query_log_file = /data/slowlog/mysql_slow_query.log ##指明MySQL慢日志存储路径long_query_time = 3 ##MySQL判定语句是否为慢查询的时间阀值relay-log = /data/relaylog/relay-log ##指定MySQL中继日志存储路径auto_increment_offset = 1 ##设置自增长ID,参数是起始值,双主均有写操作,禁止read_only,防止写入数据时重复;auto_increment_increment = 2 ##自增长ID的偏移位3.5.6节点二创建MySQL配置文件vim /etc/f[client] ##客户端选项(使用MySQL连接时可不用指定以下参数)port=38383 ##指明MySQL服务监听的TCP端口socket=/data/sock/mysql.sock ##指明MySQL服务套接字文件default-character-set=utf8 ##指定连接MySQL使用的字符集,避免出现登陆成功后,查看MySQL中文数据是乱码[mysqld] ##应用端选项server-id=2 ##配置全局唯一ID,同一集群内的此参数不能一样port = 38383 ##指明MySQL的TCP端口socket = /data/mysql/mysql.sock ##指明MySQL套接字文件路径pid_file = /data/mysql/pid/mysql.pid ##指明MySQL进程文件路径datadir = /data/mysql ##指明MySQL数据存储路径default_storage_engine = InnoDB ##指明MySQL存储类型character_set_server = utf8 ##指明MySQL字符集类型,注意此配合和客户端配置不同log-error = /data/mysql/errorlog/mysql_error.log ##指明MySQL应用日志路径bin-log = /data/mysql/binlog/mysql-bin ##指明MySQL二进制日志存储路径slow_query_log = 1 ## 指定MySQL开启慢查询功能,此参数支持布尔型值slow_query_log_file = /data/slowlog/mysql_slow_query.log ##指明MySQL慢日志存储路径long_query_time = 3 ##MySQL判定语句是否为慢查询的时间阀值relay-log = /data/relaylog/relay-log ##指定MySQL中继日志存储路径auto_increment_offset = 2 ##设置自增长ID,参数是起始值,双主均有写操作,禁止read_only,防止写入数据时重复;auto_increment_increment = 2 ##自增长ID的偏移位3.5.7为MySQL服务添加全局变量(2台master操作一致)echo "export PATH=/usr/local/mysql/bin:$PATH" >> /etc/profilesource /etc/profile3.5.8对MySQL数据库进行初始化,并确认初始密码(2台master操作一致)pwd:/usr/local/mysqlmysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/--user:指明初始化用户--basedir:指明MySQL服务路径--datadir:指明MySQL数据存储路径grep "temporary password" /data/errorlog/mysql_error.log ##获取密码,此密码对应的默认用户是root3.5.9生成SSL秘钥,server-key.pem、client-key.pem(这是5.7的新特性,初始化不在是免秘钥登陆,2台master 操作一致))pwd:/usr/local/mysqlmysql_ssl_rsa_setup --basedir=/usr/local/mysql --datadir=/data/mysql/ 3.5.10将MySQL配置到系统环境(2台master操作一致)pwd:/usr/local/mysqlcp support-files/mysql.server /etc/init.d/mysqldchkconfig --add mysqld ##将MySQL服务添加至系统中chkconfig mysqld on ##设置MySQL服务开机自动启动(可基于chkconfig --list查看查看)3.5.11启动MySQL服务(2台master操作一致)service mysqld start ###...............SUCCESS3.5.12修改配置文件;重启MySQL;修改root用户密码(进入MySQL命令行端执行命令的前提:必须要重置密码,才能有执行权限,2台master一致)echo "skip-grant-tables" &>> /etc/f ##添加此配置,登陆MySQL免秘钥service mysqld reload ##修改配置后,对MySQL进行重启操作mysql ##进入mysql命令行端use mysql ##进入mysql库,查看user表update user set authentication_string=PASSWORD('Umfintech_0PS') where User='root'; ##将root用户的密码修改为Umfintech_0PS此时退出MySQL命令行端,并重新登录,执行命令抛出异常"You must reset your password using ALTER USER statement before executing this statement",需要再次修改密码mysqlmysql> SET PASSWORD = PASSWORD('Umfintech_0PS'); ##再修改密码sed -i '/skip/d' /etc/f ##将免秘钥登陆配置删除service mysqld restart ##重启MySQL服务,并用修改后的密码尝试登陆3.5.13为双方节点创建复制权限账号,创建完后可基于创建的账号登陆检测是否有效节点一:mysql> grant replication slave,replication client on *.* to 'Umfintech_123'@'10.10.%.%' identified by 'wtc';节点二:mysql> grant replication slave,replication client on *.* to 'Umfintech_789'@'10.10.%.%' identified by 'wtc';3.5.14确认双方节点的当前二进制日志文件及最后一个事件的position ID(确保二进制日志开启)节点一:进入MySQL命令行,show master status\G;File: mysql-bin.000012 ##当前二进制日志文件Position: 479 ##当前事件的position IDBinlog_Do_DB:Binlog_Ignore_DB:Executed_Gtid_Set:节点二:进入MySQL命令行,show master status\G;File: mysql-bin.000010 ##当前二进制日志文件Position: 479 ##当前事件的position IDBinlog_Do_DB:Binlog_Ignore_DB:Executed_Gtid_Set:3.5.15双方节点配置复制账号权限节点一配置节点二的复制账号节点二配置节点一的复制账号节点一:change master to master_host='10.10.87.15',master_port=38383,master_user='Umfintech_789' ,master_password='wtc',master_log_file='mysql-bin.000010',master_log_pos =479;节点二:mysql> change master to master_host='10.10.87.14',master_port=38383,master_user='Umfintech_123' ,master_password='wtc',master_log_file='mysql-bin.000012',master_log_pos =479;master_host:指明使用复制账号节点的IPmaster_port:指明使用复制账号节点的端口,如果端口是3306,可不指明master_user:指明复制账号用户master_password:指明复制账号密码master_log_file:指明使用复制账号节点的当前二进制文件master_log_pos:指明使用复制账号节点的当前事件ID3.5.16启动复制线程,并核实(2台master操作一致)mysql> start slave;mysql> show slave status\G;Slave_IO_Running: Yes ##Yes表示IO线程远程连接okSlave_SQL_Running: Yes ##SQL线程表示重放中继日志OKSeconds_Behind_Master: 0 ##主从延时3.6验证方案3.6.1在节点一上创建测试数据库,并导入info、channel、product三张表mysql> create database Umfintech_MM_Test character set utf8;3.6.2核实数据4常用操作DDL命令(数据定义语言,面向表)Alter、create、dropDML命令(数据操作语言,面向数据)Select、update、delete、insert5原理以及实现方式该过程的第一部分就是master记录二进制日志。