mysql master-slave集群搭建

mysql 主从复制模式主要为master负责接收用户的请求,DDL,DML,DCL等操作,slave主要负责同步master的二进制日志,以便备份数据。在一此数据库访问量比较大的场景,master-slave模式还可以结合mysql-proxy做读写分离,mysql-proxy负责将用户的写请求转发到master,将用户的读请求转发到slave,以分担数据库的压力。甚至更健壮的系统,一个master对应多个slave,做成高可用HA集群,当master宕机的时候,多个slave会协商出一个slave重新成为master,以达到服务的持续性。

在mysql master-slave架构中,slave会启动两个主要的线程,一个是io thread,另一个是sql thread。大家都知道,mysql的replication主要是通过slave同步master中的二进制日志,然后将二进制日志先储存在slave中的中继日志中,然后再在本地通过读取中继日志执行sql操作。io thread主要完成的工作就是第一步,而sql thread主要工作是从中继日志中读取日志,然后进行本地操作。而对于master而言,也会启动一条dump线程,该线程主要的作用是响应slave的io thread请求,将二进制日志发送到slave。主要流程图如下:

下面来一步一步搭建mysql的master-slave架构。

1、环境准备

os:centos 6.4

mysql服务器:5.5.28(2台)

ip分配:master:192.168.1.101

slave:192.168.1.108

mysql通过二进制安装包:mysql-5.5.28-linux2.6-x86_64.tar.gz

2、mysql安装

解压到/usr/local目录

tar xf mysql-5.5.28-linux2.6-x86_64.tar.gz -C /usr/local

添加软链

ln -sv /usr/local/mysql-5.5.28-linux2.6-x86_64 /usr/local/mysql

添加mysql用户,用户组

groupadd -r mysql

useradd -r -g mysql -s /sbin/nologin mysql

添加mysql数据目录

mkdir -pv /data/mysql

chown -R mysql:mysql /data/mysql

初始化mysql数据库

cd /usr/local/mysql

chown -R root.mysql ./*

scripts/mysql_install_db --user=mysql --datadir=/data/mysql

复制mysql配置文件,启动脚本

cp support-files/my-large.cnf /etc/my.cnf

cp support-files/mysql.server /etc/init.d/mysqld

chkconfig --add msyqld

3、master配置

vim /etc/my.cnf

在[mysqld]中添加:

datadir=/data/mysql

innodb_file_per_table=1 # 对innodb来说每表一个表空间文件

log-bin=master-bin #开启二进制日志功能

log-bin-index=master-bin.index #二进制日志文件的索引文件

#server_id可暂时不用改,只要不和slave中的server_id一样即可

保存退出。

4、初始化master

用mysql进入交互命令行界面

授权relication slave复制权限

mysql> grant relication slave on *.* to ‘repluser‘@‘192.168.1.%‘ identified by ‘replpass‘;

mysql> flush privileges; #读取授权表

5、安装slave

按上述相同方式安装好slave。

6、slave配置

vim /etc/my.cnf

在[mysqld]中添加:

datadir=/data/mysql

innodb_file_per_table=1 # 对innodb来说每表一个表空间文件

relay-bin=relay-bin #开启中继日志功能

relay-bin-index=relay-bin.index #中继日志文件的索引文件

read_only=1 #设置slave为只读模式

server_id=10#注意,slave中的server_id不能和master的server_id相同。

保存退出。

7、初始化slave

用mysql进入交互命令行界面

mysql> change master to

master_host=‘192.168.1.101‘,

master_user=‘repluser‘,

master_password=‘replpass‘,

master_log_file=‘master-bin.000002‘,

master_log_pos=107

#其中master_log_file和master_log_pos是在master中通过show master status命令查看到的。

#所以务必要先在master中查看对应的值后,再执行此命令。

#master_log_file:slave要同步的二进制文件

#master_log_pos:同步的起始位置

8、启动slave

mysql> start slave

#此命令会同步启动io_thread和sql_thread,也可以独启动它们。

#mysql> start slave io_thread

#mysql> start slave sql_thread

至此,mysql的master-slave模式基本搭建完成了。

在slave中可查看slave的状态信息

mysql> show slave status \G;

看到以上信息,恭喜你,master-slave已经搭建成功了。

9、测试

在master中创建一个数据库

mysql> create database leedb;

在slave中查看数据库

mysql> show databases;

可以看到刚才在master中的leedb自动同步到slave中了。以后在master中所有可能引起数据库变更

的动作都会自动同步到slave中了。当然,mysql可以对数据库或对数据表进行过滤同步,可以有选

择性地同步某个数据库或者某个数据库的某张表,这个留待后续再讨论。

时间: 2024-08-04 10:33:52

mysql master-slave集群搭建的相关文章

MySQL的Master/Slave集群安装和配置

本文讲述MySQL的Master/Slave集群安装和配置,安装的版本是最新的稳定版本GA 5.6.19. 为了支持有限的HA,我们使用Master/Slave简单的读写分离集群.有限的HA是指当Master不可用时,数据不会丢失,但在Master宕机的情况下是不可写的,必须手工处理故障.如果要支持更高的可用性,可以使用两台Master来做热切换. Master和Slave的MySQL安装是相同的,只是my.cnf的配置不同,需要配置二进制日志文件复制. 没有特殊说明,命名中带#的为root用户

MySQL优化之——集群搭建步骤具体解释

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46833179 1 概述 MySQL Cluster 是MySQL 适合于分布式计算环境的高有用.可拓展.高性能.高冗余版本号.其研发设计的初衷就是要满足很多行业里的最严酷应用要求.这些应用中常常要求数据库执行的可靠性要达到99.999%. MySQL Cluster同意在无共享的系统中部署"内存中"数据库集群,通过无共享体系结构.系统可以使用便宜的硬件,并且对软硬件无特

MySQL优化之——集群搭建步骤详解

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46833179 1 概述 MySQL Cluster 是MySQL 适合于分布式计算环境的高实用.可拓展.高性能.高冗余版本,其研发设计的初衷就是要满足许多行业里的最严酷应用要求,这些应用中经常要求数据库运行的可靠性要达到99.999%.MySQL Cluster允许在无共享的系统中部署"内存中"数据库集群,通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要

MHA MySQL 高可用集群搭建

软件版本MySQL: 5.7MHA: 0.56CentOS: 7.4 MySQL服务器Master: 192.168.1.224 mysql01Slave1: 192.168.1.225 mysql02Slave2: 192.168.1.226 mysql03 MHAManager: 192.168.1.224 mysql01Node1: 192.168.1.225 mysql02Node2: 192.168.1.226 mysql03 VIP192.168.1.221 配置主机解析 cat /

mysql复制主从集群搭建

最近搭了个主从复制,中间出了点小问题,排查搞定,记录下来 1 环境: 虚拟机: OS: centos6.5 Linux host2 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux 服务器IP 192.168.18.66 192.168.18.67 DB: mysql> select version(); +-----------+ | version() | +---

Mysql高开用集群搭建

环境 rhel6.5x64 192.168.20.11   mysql11 192.168.29.12   mysql12 拓扑 环境 关闭iptables 关闭selinux yum -y install ncurses-devel gcc gcc-c++make autoconf automake zlib zlib-devel openssl openssl-devel pcre-devel 开始安装配置mysql11 [[email protected] ~]# tar -xf MySQ

MySQL主从复制、读写分离、高可用集群搭建

MySQL主从复制.读写分离.高可用集群搭建  一.服务介绍   1.1 Keepalived     Keepalived,见名知意,即保持存活,其目的是解决单点故障,当一台服务器宕机或者故障时自动切换到其他的服务器中.Keepalived是基于VRRP协议实现的.VRRP协议是用于实现路由器冗余的协议,VRRP协议将两台或多台路由器设备虚拟成虚拟设备,可以对外提供虚拟路由器IP(一个或多个),即漂移IP(VIP). 1.2 ProxySQL ProxySQL是一个高性能,高可用性的MySQL

高可用mysql集群搭建

对web系统来说,瓶颈大多在数据库和磁盘IO上面,而不是服务器的计算能力.对于系统伸缩性我们一般有2种解决方案,scale-up(纵向扩展)和scale-out(横向扩展).前者如扩内存,增加单机性能,更换ssd等,虽然看似指标不治本而且比较昂贵,但确实是非常有效的,大多数应用的数据规模不是很大,当内存足够缓存下所有数据的时候,磁盘就没有什么压力了:后者譬如各类分布式解决方案,冗余磁盘阵列等. 在我看来,mysql读写分离是一个scale-up和scale-out的结合体,通过多个机器服务来提升

mysql 主从复制集群搭建

话说一个正确的文章能敌千钧万马,一句善意的点拨能敌百万雄狮,一个好友的帮助能让你拨开云雾见青天.搭建mysql主从同步,这两天看网上的博客教程很多,当然,错误的文章会误导你很多,我就被误导了.现将这两天的搭建过程详细记录: 前期准备:关闭防火墙 关闭SELINUX 关闭SELINUX vi /etc/selinux/config #SELINUX=enforcing #注释掉 #SELINUXTYPE=targeted #注释掉 SELINUX=disabled #增加 :wq  #保存退出 s

2-20 MySQL集群搭建实现高可用

MySQL集群概述和安装环境 MySQL Cluster是MySQL适合于分布式计算环境的高实用.高冗余版本.Cluster的汉语是"集群"的意思.它采用了NDB Cluster 存储引擎,允许在1个 Cluster 中运行多个MySQL服务器. MySQL Cluster 是一种技术,该技术允许在无共享的系统中部署"内存中"数据库的 Cluster .通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求.此外,由于每个组件有自己的内存和磁盘,不存在单