Linux运维必备Mysql知识

一、mysql简介

  MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司。MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。


二、mysql复制

  关于mysql复制,我是这样理解的:将某一台主机上的Mysql数据复制到其它主机(slaves)上,并重新执行一遍从而实现当前主机上的mysql数据与(master)主机上数据保持一致的过程我们可以称为复制。

  复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送到从服务器的更新。当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新。


三、mysql复制能解决什么问题

1、数据的分布(Data Distribution)

2、负载均衡(Load balancing) | mysql读写分离

3、可以实现数据的备份(Backups),但是不能当真正意义上数据备份来用

4、高可用性和容错行(比如双主模型中的互为主从能实现高可用)


四、mysql的复制原理

1、工作原理图

wKiom1QaRNnTIbXHAACQiapXQq0705.gif

从上图来看,Mysql的复制就三个步骤:

    1)在Master服务器将改变的数据记录到二进制日志(binary log)中(这些记录叫做二进制日志事件)

    2)Slave服务器将Master服务器上的二进制日志拷贝到自己的中继日志(relay-log)中

    3)Slave服务器读取中继日志中的事件,然后将改变的数据写入到自己的数据库中

2、说明三步流程

第一步:是在Master服务器上记录二进制日志。在每个更新数据的事务完成之前,Master服务器都会将数据更改记录到二进制日志中。即使事务在执行期间是交错的,Mysql也会串行地将事务写入到二进制日志中。在把事件写入二进制日志之后,Master服务器告诉存储引擎可以提交事务了

第二步:是Slave服务器把主服务器的二进制日志拷贝到自己的硬盘上,进入所谓的“中继日志”中。首先,它启动一个工作线程,叫I/O线程,这个I/O线程开启一个普通的客户端连接,然后启动一个特殊的二进制日志转储进程(它没有相应的SQL命令)。这个转储进程Master服务器的二进制日志中读取数据。它不会对事件进行轮询。如果3跟上了Master服务器,就会进入休眠状态并等待有新的事件发生时Master服务器发出的信号。I/O线程把数据写入Slave服务器的中继日志中

第三步:SQL线程读取中继日志,并且重放其中的事件,然后更新Slave服务器的数据。由于这个线程能跟上I/O线程,中继日志通常在操作系统的缓存中,所以中继日志的开销很低。SQL线程执行事件也可以被写入Slave服务器自己的二进制日志中,它对于有些场景很实用

上图中显示了在Slave服务器有两个运行的线程,在Master服务器上也有一个运行的线程:和其他普通连接一样,由Slave服务器发起的连接,在Master服务器上同样拥有一个线程

3、配置注意事项

1、Master服务器必须开启二进制日志

2、Master和Slave的Server-id不能相同

3、同一个Master的多个Slave,Server-id也不能相同

4、Binlog_format最好相同

5、在Slave服务器上配置log-slave-updates=1时,也需要开启二进制日志;如果可以推荐使用read_only选项,该选项会阻止没有权限的线程修改数据



五、mysql主从异步复制

1、软件版本

系统版本:CentOS6.4 64bit

Mysql版本:mysql-5.6.12-linux-glibc2.5-x86_64.tar.gz


2、拓扑图规划

wKioL1QaTH-xqUU7AARmib-IfAE963.jpg

3、准备工作

3.1 修改主机名

1
2
3
4
5
6
7
###MASTER执行
[root@localhost ~] # sed -i 's@\(HOSTNAME=\).*@\1master.allentuns.com@g' /etc/sysconfig/network
[root@localhost ~] # hostname master.allentuns
 
###SLAVE执行
[root@localhost ~] # sed -i 's@\(HOSTNAME=\).*@\1slave.allentuns.com@g' /etc/sysconfig/network
[root@localhost ~] # hostname slave.allentuns

3.2 配置主机名解析,这里修改hosts文件来实现

1
2
3
4
5
6
7
8
9
10
11




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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值