集群之mysql主从配置(windows和linux版)

起因

  由于网站进一步开发运行的需求,要求主机7*24小时运行正常,同时要求能够防止数据库灾难。考虑到后期的开发程度和业务量,准备向高可用系统进行改变,同时通过负载均衡提高网络性能。于是第一步就考虑到了数据库的集群问题。

集群和数据库主从复制

集群

  通过多个物理机服务器共同处理和完成同一个业务功能,能很好的提高网站性能和可靠性。不同的环境下需要采用不同的集群策略,集群主要分为以下几种:

(1)高可用集群:节点间以主备形式实现数据库容灾,在宕机情况下能快速恢复,节点间共享资源。

(2)负载均衡集群:节点间相互独立不共享资源,通过一定的算法和模式将业务操作分到不同的节点,充分利用每个节点的资源,能够提高扩展性,加强了网络数据处理能力。

(3)科学计算集群:相对串行计算而言的,多台计算机执行多个指令达到单台计算机无法达到了计算速度。

主从复制

  对上面高可用集群的理解,实现高可用集群可以配置服务器的主从关系,通过了解准备使用Mycat来对数据库进行管理,在此之前需要对数据库进行主从配置。

(1)主从配置:为了将mysql的数据库分不到多个系统中,最简单的实现方式就是复制了。而mysql内建有一种复制方式,即指定一台或多台服务器为主机master,另外一台或多台服务器作为从机master。当master存在更新的时候,master将更新写入二进制文件,并维护了一个索引文件跟踪日志。当slave连接到主服务器之后,slave会通知master进行同步,master通过索引找日志文件上一次同步的位置,然后将这段时间内的更新数据发送给slave进行同步。

(2)mysql主从复制支持类型:

a. 基于sql的支持:通过将matser日志文件中更新的sql语句复制到slave上,slave执行。

b. 基于行的支持:当sql不精确或者记录丢失时,mysql会将改变的行直接复制到slave上

c. 混合支持:默认使用a方式

(2)主从复制优缺点

优点:高可用,提高容错率,数据分布,负载均衡。

缺点:单向同步,无法解决主机宕机问题

主从配置

  为了方便演示,采用单主单从的主从配置,单主多从的配置原理一样。双主配置能很好地避免主服务器的宕机情况,配置比较复杂,下次有空演示。

Windows配置

测试环境

  windows 7,mysql 5.5.28,为了避免因为版本不一致带来的麻烦,主从数据库用同一版本数据库库

  主机ip:192.168.1.234  从机ip:192.168.1.244

准备条件

(1)关闭防火墙

(2)保证两台主机的mysql远程连接开启(必须)

(3)3306端口(数据库端口号,不固定,按自己的配置去确定)是否公开

(4)在主机和从机上创建test数据库

主机配置

(1)在mysql的安装文件夹中找到mysql.ini文件,在该文件的mysqld标签下添加以下属性(还有其他很多属性可以自行了解):

server-id=66    #服务器id不固定,整数即可
log-bin=C:\Program Files\MySQL\MySQL Server 5.5\mysql-bin  #同步日志的文件存放路径
binlog-do-db=test  #备份哪些些数据库的二进制日志
#binlog-ignore-db=...  #也可以直接设置哪些数据库不同步

配置完成后重启mysql,这时候会在这个时候在C:\Program Files\MySQL\MySQL Server 5.5\下会看到mysql-bin.index和mysql-bin.00001两个文件,很明显前面的文件时索引文件,用以记录第二个文件,第二个是二进制的日志文件,该文件每次重启数据库均会产生新的日志文件,这些日志文件的索引被以文件名为索引的索引文件所维护,在索引文件中可以看到所有日志文件的坐标。

(2)登陆mysql,给从机配置登录名,登陆,密码和权限

grant replication slave,reload,super on *.*  to [email protected]  identified by ‘qwer‘;

这条语句意思是给ip为192.168.1.244(从机ip)的远程服务器配置登录名是slave,密码是qwer,并赋予slave,super,reload权限

(3)查看主机状态

show master status;

查出主机的file和postin在从机配置中需要使用,记住即可。

致此,主机配置完成。

从机配置

(1)在从机mysql安装目录下找到mysql.ini文件,在该文件的mysqld标签下添加如下:

server-id=88   #同样随机,保证整数唯一即可
replicate-do-db=test1  #复写(同步)哪一个数据库

配置好之后重启数据库

(2)测试主机的远程连接是否成功(必要测试)如果不成功立即排除问题,不然不进行下一步操作

mysql -uslave -h 192.168.1.234 -pqwer

连接成功后退出主机mysql,进入从机mysql

(3)修改(第一次应该叫指定)主机信息

stop slave;      关闭从机同步连接
change master to master_host = ‘192.168.1.234‘, master_user=‘slave‘, master_ password =‘qwer‘, master_log_file=‘mysql-bin.000001‘,master_log_pos=593;

将主机地址,主机名,主机密码,二进制文件地址,刚刚截图的主机file和position指定到主机信息中(上面的change语句)

注意:这个步骤如果出现警告,请查看日志文件进行排查,不然后续合同无法成功。修改完成后

start slave;     开启同步连接
show slave status\G;   查看主从机连接信息

查看同步状态会有:

图中的IO状态表示主从数据库是否连接成功,sql表示两个同步文件和slave从机是够连接成功,参考第一张图的IO和sql

如果两个都是yes即表示同步配置成功,之后自己可以再test数据库下测试。如果出现任何问题可以留言。

linux配置

测试环境

mysql版本5.7  两台服务器的版本要求一致,以免后续出现不可预知的问题

主机 ubuntu 16.04   ip:192.168.1.116

从机 CentOS 6.5      ip:192.168.1.254

准备条件

(1)关闭防火墙

sudo service ufw stop

(2)保证两台服务器的mysql远程连接成功

(3)保证3306端口可以正常使用

a. 查看3306端口是否被绑定本地

netstat -an|grep 3306

上图是正确的,如果出现的是127.0.0.0:::3306说明端口被本机绑定了,这种情况下需要修改mysqld的配置

注意:这里是修改mysqld配置文件配置,仅仅在my.cnf中修改是不起作用的

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf    进入mysqld的配置文件

将mysqld下的这行代码注释掉即可

(4)创建test同名数据库

主机配置

(1)找到my.cnf文件

  与windows上不同,linux的配置文件时my.cnf,这个文件默认是在/etc上,如果找不到会在.xx/nysql/目录下寻找。如果你找不到my.cnf可以输入以下命令(在根目录下输入此命令):

find -name ‘my.cnf‘  #找到当前目录下my.cnf的位置

(2)配置my.cnf

  如果是第一次安装mysql(不知道怎么安装的请点击《linux下的mysql安装》),第一次进入my.cnf会发现该文件下没有任何标签,这时候可以在其他的地方(官网上或者靠谱点的网站上)复制my.cnf的头文件或者样式,如果嫌麻烦可以直接在my.cnf下增加一个[mysqld]标签(必要的)否则会报错的。然后再mysqld标签下添加以下配置:

server_id=66
log-bin=mysql-bin
binlog-do-db=test

之后重启mysql,跟windows相同。

(3)授权(跟windows相同)

grant replication slave,reload,super on *.*  to [email protected]  identified by ‘qwer‘;

(4)记录主机配置

show master status;

从机配置。。。相同

在my.cnf文件下的sqld标签(跟主机一样没有的话添加上)下配置:

server-id=88
replicate-do-db=test1  #复写(同步)哪一个数据库

重启mysql。。。

mysql -uslave -h 192.168.1.116 -pqwer    #测试主机连接
stop slave;      #关闭从机同步连接
change master to master_host=‘192.168.1.234‘,master_user=‘slave‘,master_password=‘qwer‘, master_log_file=‘mysql-bin.000001‘,master_log_pos=593;  #填写刚刚截图信息
start slave;     #开启同步连接
show slave status\G;   #查看主从机连接信息

完成后会查出同步状态:

两个是yes就代表同步成功,如果有no分析日志解决问题,或者留言也可



以上两个版本的配置算是结束了

注意

  按照以上的配置,主机对从机的权限之后DQL和DML,也就是读写权限,而并不具备DDL操作权限。也就是说只有的那个两个同名数据库中存在同名表时候,改变主机表的数据,才会同步到从机。如果需要创建表等的权限,可以再数据库中mysql数据库的user表中修改权限。

也可以使用授权语句,授予远程主机所有权限:

grant all privileges on *.* to [email protected] identified by ‘qwer‘;  #授予所有权限flush privileges;    #刷新数据库

这样一来,主数据库中建表等操作也能同步到从库

时间: 2024-10-09 13:30:49

集群之mysql主从配置(windows和linux版)的相关文章

MySQL+PHP配置 Windows系统IIS版

MySQL+PHP配置 Windows系统IIS版 1.下载 MySQL下载地址:http://dev.mysql.com/downloads/mysql/5.1.html->Windows (x86, 32-bit), MSI Installer Essentials - Recommended(不包含文档)-> No thanks, just start my download.(无需登录注册 直接下载) PHP下载地址:www.php.net->5.4.44版本->选择Win

基于Windows服务器集群的Redis主从配置指南

前段时间一个项目因并发量大.因防止宕机做了主从备份,首页的表连接查询又非常的耗时.故此拿出利器Redis缓存这个查询结果,并随着用户操作而更新. 因官方目前只有linux版,Windows版下载:  https://github.com/ServiceStack/redis-windows/tree/master/downloads 下载完成后解压进入redis目录 设置Redis主服务器    1.安装主服务器缓存:Master Redis 新建一个bat文件:redis-server --s

Redis集群_1.redis主从配置

Redis主从配置(Master-Slave) 一. Redis Replication的特点: 1):一个Master可以同步多个Slave 2):不仅Master可以同步多个Slave,Slave也可以同步其它Slave,可以构成一个图形结构,同时还能分担Master的同步压力 3):Redis Replication使用的是异步复制.从2.8开始,Slave会周期性发起一个Ack确认replication stream被处理进度 4):复制在Master Server是以非阻塞模式完成数据

MySQL集群架构以及本人配置过程中出现的问题及解决办法

首先说下MySQL的优缺点 优点 解决单点故障 自动实现数据冗余 缺点就是维护起来太麻烦. 集群的条件就是所有的机器上都要安装MySQL的集群软件,我安装的是MySQL-Cluster-gpl-7.3.5-1.el6.x86_64.rpm的rpm包,不是源码包安装.如果系统里面安装了mysql-server等数据库服务软件的要自行写在掉即可. MySQL集群中有三种角色,下面是三种角色以及其的作用 角色 数据节点:ndbd节点 存储在表里的数据(表中的记录) SQL节点:不存储数据,供用户访问和

windows环境下mysql主从配置

原文:windows环境下mysql主从配置 mysql主从配置. 相关理论知识可以百度一下,这里就不多说了,直接说如何配置. 一.环境介绍及说明 主库所在的操作系统:win7 主库的版本:mysql-5.6.24-winx64.zip 主库的ip地址:127.0.0.1 主库的端口:3306 从库所在的操作系统:win7 从库的版本:mysql-5.6.38-winx64.zip 从库的ip地址:127.0.0.1 从库的端口:3307 下载地址:https://www.mysql.com/d

解读mysql主从配置及其原理分析(Master-Slave)

在windows下配置的,后面会在Linux下配置进行测试,需要配置mysql数据库同步的朋友可以参考下. 1.在主数据库服务器为从服务器添加一个拥有权限访问主库的用户:GRANT REPLICATION SLAVE ON *.* TO ' test'@'%' IDENTIFIED BY 'test'; (%表示允许所有IP,可设置指定从服务器IP)添加用户后:可在从服务器上用mysql -h127.0.0.1 -utest -ptest; 来测试是否有权限访问主数据库 2.在主据库配置文件加上

Mysql主从配置,实现读写分离

大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢失的话,后果更是 不堪设想.这时候,我们会考虑如何减少数据库的联接,一方面采用优秀的代码框架,进行代码的优化,采用优秀的数据缓存技术如:memcached,如果资金丰厚的话,必然会想到假设服务器群,来分担主数据库的压力.Ok切入今天微博主题,利用MySQL主从配置,实现读写分离,减轻数据库压力.这种

搭建高可用mongodb集群(一)——配置mongodb

搭建高可用mongodb集群(一)--配置mongodb 在大数据的时代,传统的关系型数据库要能更高的服务必须要解决高并发读写.海量数据高效存储.高可扩展性和高可用性这些难题.不过就是因为这些问题Nosql诞生了. NOSQL有这些优势: 大数据量,可以通过廉价服务器存储大量的数据,轻松摆脱传统mysql单表存储量级限制. 高扩展性,Nosql去掉了关系数据库的关系型特性,很容易横向扩展,摆脱了以往老是纵向扩展的诟病. 高性能,Nosql通过简单的key-value方式获取数据,非常快速.还有N

mysql主从配置,读写分离

Mysql主从配置,实现读写分离 大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢失的话,后果更是 不堪设想.这时候,我们会考虑如何减少数据库的联接,一方面采用优秀的代码框架,进行代码的优化,采用优秀的数据缓存技术如:memcached,如果资金丰厚的话,必然会想到假设服务器群,来分担主数据库的压力.Ok切入今天微博主题,利用MySQL主从配置,