mysql master -slave缺点_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。主要流程图如下:de474c597a62caf98da747c47c255a84.png

下面来一步一步搭建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 [email protected]%‘ 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;

529ce3dfff04900decae7580f5719303.png

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

9、测试

在master中创建一个数据库

mysql> create database leedb;

在slave中查看数据库

mysql> show databases;

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

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

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

原文:http://crazytechnology.blog.51cto.com/6906973/1640197

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值