mysql replication(主从复制)(一)MS模式

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介:

1、理论部分

1.1、mysql replication的概念:

enables data from one mysql database server(the master) to be replicated to one or more mysql database servers(the slaves).

1)可以将数据从一台数据库服务器(master)复制到一到多台数据库服务器(slave)

2)默认情况下,属于异步复制。因此无需维持长连接。

3)通过配置,你可以复制所有的库或者某几个库,甚至库中的几个表。

wKioL1YA4G6zIfwrAAENUmMX6Bs957.jpg

1.2、mysql replication的实现基础:

Binary Log(二进制日志)是实现mysql主从复制的基础

Binary Log的概念:所有的、无论是明确的或隐含的可以引起数据库发生改变的语句都要记录于Binary Log。

主从备份涉及的日志文件有:

Binary log(二进制日志)

Relay log(中继日志)

简单的说,就是master将数据库的改变写进二进制日志,slave同步这些二进制日志,并根据这些二进制日志进行数据库操作。

wKioL1YA4Jey1H3ZAABXQUhjG1Y416.jpg

1.3、mysql Replication的用途

1)Fail Over(故障切换)

2)Backup Server(备份服务,不能应对错误的命令操作)

3)High Perfomance(高性能)

1.4、mysql replication的分类:

1)主从(M-S)

2)主主(M-M)

1.5、mysql replication的商业价值:

首先服务器的扩展方式有:

1)scale up:提高原有应用的服务器性能

2)scale out:原有服务器以及应用不变,增加服务器。

服务器遇到性能瓶颈,向上扩展(scale up)的成本过高,假设服务器现有价格是M,性能扩展N倍,成本往往是M*N倍还要多的多的代价才能提高N倍的性能。

wKioL1YA4MfTWL5_AAJmAtONtSI303.jpg

1.6、mysql的集群类型

cluster分类:

1)Load Balancing(负载均衡集群),两台服务器均同时提供服务。

2)High Availability(高可用集群),属于冗余机制,只单台提供服务。

3)High Preformance(高性能集群),例子如超级计算机,将非常大的运算需求,自动分割成N片,每一片交给一台计算机处理,处理完成后再返回结果给切割的计算机重新整合。

mysql既有负载均衡能力,又有高可用的特征,从某种意义来讲,负载均衡本身就具有高可用的特征,但高可用并不能提供负载均衡的能力。

1.7、mysql的同步异步问题

同步异步概念:

Async(异步)-通讯无确认信号返回,发送方无需等待接收方回应任务即中止,异步可以提供更好的性能表现。

Sync(同步)-通讯有确认信号返回,发送方需等待接收方回应任务才中止。

mysql主从架构属于异步架构

1.8、实现主从复制的相关线程

mysql主从的线程:

1)Dump thread,负责把数据倾泻给从服务器的线程。

2)I/o thread,负责接收主服务器倾泻过来的线程。

3)sql thread,从中继日志中读取数据并在本地应用数据的线程。

wKioL1YA4PyDS6hkAAFaxPaiI_8602.jpg

2、实验部分

2.1、实验环境

2.1.1、基本信息

1)mysql主服务器(Master):

ipaddress=10.168.0.103

hostname=sql-m

2)mysql从服务器(Slave):

ipaddress=10.168.0.104

hostname=sql-s

2.1.2、mysql的安装与初始化

In Master&Slave:

以上主机均需要先安装mysql相关rpm包:

1
2
3
4
yum -y  install  mysql-server mysql-devel mysql
chkconfig mysqld on
/etc/init .d /mysqld  start
mysql_secure_installation

初始化步骤如下(请根据实际情况选):

wKiom1YA3wHSw-NKAAIFED6_9nc456.jpg

wKioL1YA4WKzbcSfAAJaTMPrYr8142.jpg

wKiom1YA3yTwEufbAAEobaPoK-s347.jpg

初始化完成后,做登录测试:

1
mysql -uroot -p

wKiom1YA31fzWxfqAAG54Hx7jtw762.jpg

2.1.2、防火墙配置

In Master&Slave:

vim编辑/etc/sysconfig/iptables文件:

1
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

编辑完成效果:

wKiom1YA3_ngFHX6AAGQpl6bevU671.jpg

重启防火墙:

1
/etc/init .d /iptables  restart

wKioL1YA4mLhWdvnAAC7qWNI_yQ645.jpg

2.1.3、percona xtrabackup的安装

In Master&Slave:

1
2
yum  install  http: //www .percona.com /downloads/percona-release/redhat/0 .1-3 /percona-release-0 .1-3.noarch.rpm
yum  install  percona-xtrabackup

以上如果安装后执行innobackupex指令提示不支持mysql版本错误,请改为20版本:

1
2
yum -y remove percona-xtrabackup
yum -y  install  percona-xtrabackup-20

2.2、实验步骤

2.2.1、step1

Slave是通过mysql连接登录到Master上读取二进制日志的。因此需要在Master上给Slave配置权限。

In Master:

数据库设置:

1
2
mysql> grant  replication slave  on  *.*  to  'repl' @ '10.168.0.104'  identified  by  'repl' ;
mysql>flush  privileges ;

wKiom1YA37yyU5uiAABgmqtvCz4707.jpg

In Slave:

做如下测试:

1
mysql>mysql -h10.168.0.103 -urepl -prepl

wKiom1YA4FyzIsabAAF6cUiX44Y196.jpg

2.2.2、step2

In Master:

1)打开二进制日志,并标识server-id

2)server-id用于唯一标识主机,数字取值范围1至2的32处方减1

vim编辑/etc/my.cnf:

1
2
3
4
5
[mysqld]
log-bin                   #开启二进制日志
binlog- format =row         #指定二进制日志以row格式记录(增加实物支持性、增加同步性能)
sync -binlog=1             #官方推荐打开的参数
server- id =1               #设定server id

wKioL1YA4suDDp0cAAEw2ScJkv4450.jpg

重新启动mysqld服务:

1
/etc/init .d /mysqld  restart

wKiom1YA4LmzUpBEAABbvII6St8357.jpg

检查设置是否成功:

1
ls  /var/lib/mysql/

wKioL1YA4y2wg6lrAAB26irlj54265.jpg

2.2.3、step3

In Master:

制作一个Master的完整备份,并执行prepare.

1
2
mkdir  /var/lib/backup
innobackupex --user=root --password=xxx  /var/lib/backup/

wKioL1YA417wGtAyAAMHufte5jg312.jpg

1
innobackupex --use-memory=500m --apply-log  /var/lib/backup/2015-09-21_07-18-34

wKiom1YA4UvSs-Z4AAMjeF55C3A007.jpg

以上工具可以记录二进制编号,从服务器导入数据后再后执行同步会从该编号后面开始执行。

2.2.4、step4

把备份拷贝到slave,并放入数据库文件目录。

In Slave

1
mkdir  /var/lib/backup

In Master:

1
scp  -r  /var/lib/backup/2015-09-21_07-18-34  10.168.0.104: /var/lib/backup/

wKiom1YA4ZiyMZ0-AAIieH4aZ_M263.jpg

In Slave:

1
2
3
4
5
6
/etc/init .d /mysqld  stop
cd  /var/lib/backup/2015-09-21_07-18-34
cp  -R *  /var/lib/mysql
chown  -R mysql:mysql  /var/lib/mysql
/etc/init .d /mysqld  start
mysql -uroot -p

登录后做数据库检查:

1
2
mysql>show databases;
mysql> exit

2.2.5、step5

In Slave:

在Slave上配置server-id,标识服务器。

vim编辑/etc/my.cnf

1
2
[mysqld]
server- id =2

配置效果:

wKioL1YA5DeQMI5aAAD90D2ZoCk317.jpg

配置完成后重启服务:

1
/etc/init .d /mysqld  restart

wKioL1YBZCqQfaJhAAB3BOIj0Rs369.jpg

2.2.6、step6

In Slave:

查看并记录二进制日志中的position ID。

1
2
cd  /var/lib/mysql
cat  xtrabackup_binlog_info

wKiom1YA4lTg88uiAABFPcWYHKU926.jpg

记录下以上标红部分,step7要用。

2.2.7、step7

配置Slave Replication。

In Slave:

1
2
3
4
5
6
mysql>change master  to
   ->master_host= '10.168.0.103' ,
   ->master_user= 'repl' ,
   ->master_password= 'repl' ,
   ->master_log_file= 'mysqld-bin.000004' ,
   ->master_log_pos=106;

2.2.8、step8

启动Replication,并检查结果。

In Slave:

1
2
mysql>start slave;
mysql>show slave status\G;

wKiom1YA4prwVSbTAALnfDo5lf4564.jpg

红标部分都要为Yes

wKiom1YA4rzB9rfjAAIYJBxjV88741.jpg

In Master

wKioL1YA5RmiAfN7AAIUPVm5FiU631.jpg

In Master

1
2
3
4
mysql -uroot -p
show databases;
create  database  cmdschool;
show databases;

In Slave

1
show databases;

对比效果如下(左Master,右Slave):

wKiom1YA41LAUJQMAAHUP34rS3A059.jpg

MSS模式请参阅博文:

http://cmdschool.blog.51cto.com/2420395/1697067

开启GTIDs技术请参阅:

http://cmdschool.blog.51cto.com/2420395/1697570

MM模式请参阅博文:

http://cmdschool.blog.51cto.com/2420395/1699623









本文转自 tanzhenchao 51CTO博客,原文链接:http://blog.51cto.com/cmdschool/1696474,如需转载请自行联系原作者

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
SQL 存储 关系型数据库
MySQL的主从复制&主从同步
MySQL的主从复制&主从同步
38 0
|
26天前
|
负载均衡 容灾 关系型数据库
mysql主从复制
mysql主从复制
38 1
|
2月前
|
SQL 存储 运维
MySQL高可用性:主从复制和集群
MySQL高可用性:主从复制和集群
48 0
|
4天前
|
设计模式 容灾 关系型数据库
MySQL 主从复制架构
MySQL 主从复制架构
|
25天前
|
SQL 关系型数据库 MySQL
mysql主从复制
mysql主从复制
|
2月前
|
SQL 关系型数据库 MySQL
923.【mysql】 only full group by 模式
923.【mysql】 only full group by 模式
22 1
|
2月前
|
SQL 网络协议 关系型数据库
【怒怼大厂面试官】听说你精通MySQL?来说说MySQL主从复制
面试官:MySQL主从复制了解吧?嗯嗯了解的。主要是利用了MySQL的Binary Log二进制文件。那我把二进制文件丢给从库,从库复制整个文件吗。噢噢不是的。
48 1
【怒怼大厂面试官】听说你精通MySQL?来说说MySQL主从复制
|
2月前
|
监控 负载均衡 关系型数据库
|
3月前
|
监控 负载均衡 关系型数据库
MySQL技能完整学习列表13、MySQL高级特性——1、分区表(Partitioning)——2、复制(Replication)——3、集群(Clustering)
MySQL技能完整学习列表13、MySQL高级特性——1、分区表(Partitioning)——2、复制(Replication)——3、集群(Clustering)
53 0
|
4月前
|
SQL 负载均衡 关系型数据库
MySQL(六)主从复制
MySQL(六)主从复制
27 0