一、单个数据库 服务器 的缺点

数据库服务器存在单点问题;

数据库服务器资源无法满足增长的读写请求;

高峰时数据库连接数经常超过上限。

二、如何解决单点问题

增加额外的数据库服务器,组建数据库集群;

同一集群中的数据库服务器需要具有相同的数据;

集群中的任一服务器宕机后,其它服务器可以取代宕机服务器。

三、 MySQL 主从复制架构

1、主库将变更写入到主库的binlog中

一些MySQL版本并不会开启二进制日志,所以一定要检查是否开启;

如果刚开始没有开启,后面再进行开启的话,需要重启数据库才能生效,而且数据库的重启往往会对业务造成很大的影响;

尽管二进制日志对性能有稍许的影响,所以还是建议大家无论是否使用复制功能,都要开启MySQL二进制日志,因为增量备份也需要二进制日志。

2、从库的IO线程在指定位置读取主库binlog内容存储到本地的中继日志(Relay Log)中

要完成二进制日志的传输过程,MySQL会在从服务器上启动一个工作线程,称为IO线程,这个IO线程会跟主数据库建立一个普通的客户端连接,然后在主服务器上启动一个特殊的二进制转储线程称为binlogdown线程。

从库上的IO线程通过这个二进制转储线程来读取主库上的二进制事件,如果该事件追赶上主库,则会进入sleep状态,直到主库发起信号通知有新事件产生时,才会被唤醒,relay log的格式和binlog格式是完全相同的,

可以使用mysqlbinlog来读取relay log中的内容。

3、从库的SQL线程读取Relay Log日志中的内容,并在从库中重放

SQL线程所执行的事件,我们可以通过配置选项来决定是否要写入到从服务器的二进制日志中。

目前MySQL支持两种复制类型:

基于二进制日志点的复制

基于GTID的复制(MySQL>=5.7推荐使用)

四、MySQL主从配置步骤

1、配置主从数据库服务器参数

有些参数配置后需要数据库重启才能生效,为了不影响数据库的正常使用,我们最好在服务器上线的同时就把参数都配置好。特别是master服务器的参数,更应该作为服务器初始参数来进行配置。

master服务器:

slave 服务器:

2、在master服务器上创建用于复制的数据库账号

用于IO线程连接master服务器获取binlog日志,需要* REPLICATION SLAVE** 权限:

create user 'repl'@'ip段' identified by 'password';

grant replication slave on *.* to 'repl'@'ip段';

3、备份master服务器上的数据并初始化slave服务器数据

建议主从数据库服务器采用相同的MySQL版本;

建议使用全库备份的方式初始化slave数据。

采用相同版本的好处:

我们可以使用全备的方式来初始化slave数据,还可以避免不同版本之间的差异造成数据库同步失败的问题。

如果我们使用的主从复制的服务器MySQL版本不同,则一定要注意master上的版本一定要低于slave服务器,不然同步的时候就可能出现错误。

由于我们演示过程中的MySQL服务器都是使用的MySQL5.7,所以我们可以使用全备的方式进行:

mysqldump --master-data=2 -uroot -p -A --single-transaction -R --triggers

4、启动基于日志点的复制链路

在slave服务器上运行,MySQL命令:

CHANGE MASTER TO

MASTER_HOST= 'master_host_ip',

MASTER_USER= 'repl',

MASTER_PASSWORD = 'password',

MASTER_LOG_FILE='mysql_log_file_name',

MASTER_LOG_POS=xxxxxx;

5、启动基于GTID的复制链路

GTID:全局事务ID,GTID可以保证每一个在主上提交的事务,在复制集群中可以生成一个唯一的ID值,要使用基于GTID的复制,我们要在主从复制的配置文件中同时加入以下配置项。

MySQL配置:

gtid_mode=on # 是否启动gtid模式,启动了此模式会在二进制日志中会额外记录每个事务的GTID标识符

enforce-gtid-consistency    # 强制gtid一致性,用于保证启动gtid后事务的安全

log-slave-updates = on    # mysql5.6一定要启用参数,5.7可以不启用

MySQL命令:

CHANGE MASTER TO

MASTER_HOST= 'master_host_ip',

MASTER_USER= 'repl',

MASTER_PASSWORD = 'password',

MASTER_AUTO_POSITION=1;

GTID复制的限制:

无法再使用create table ... select语句建立表,只能先create表,再insert数据;

无法在事务中使用create temporary table建立临时表;

无法使用关联更新同时更新事务表和非事务表。

4和5中选一个执行即可。

五. MySQL主从复制演示

1. 先对主服务器进行配置

由于主服务器一直在运行着,在生产环境中主服务器是很少会重启的,如果主服务器重启,会造成正常的业务访问的中断,所以在服务器启动之前就启动了二进制日志。

这里不需要重启主服务器了,由于主服务器的默认server_id=1,我们虽然在配置文件中更改了它的值 ,但实际运行环境中并没有改变。

我们可以查看一下当前server_id:

mysql> show variables like '%server_id%';

可以通过以下命令动态的进行修改:

mysql> set global server_id = 100;

2. 再对从服务器进行配置

修改完从服务器配置后,重启MySQL服务器。如果使用的是MySQL5.7版本的需要注意:

MySQL5.7增加了server-uuid值,默认情况下载auto.cnf文件中,如果是使用的镜像的方式安装,可能大家的uuid一样 ,所以需要把auto.cnf文件删除掉。MySQL重启后会自动重新生成uuid的值,这样就可以保证不同服务器上的MySQL实例的uuid的值是不一样的;

如果server-uuid的值相同,主从复制会出现问题。

以上我们就完成了主从复制的配置,接下来我们要在主服务器上建立复制账号。

3. 在MySQL主服务器上建立MySQL复制账号

mysql> create user 'dba_repl'@'192.168.3.%' identified by '123456';

mysql> grant replication slave on *.* to 'dba_repl'@'192.168.3.%';

4. 建立好复制账号以后,通过mysql主服务器上的全备初始化从服务器上数据

进行全备:

[root@localhost data]# cd /data/db_backup/

[root@localhost db_backup]#  mysqldump -uroot -p --master-data=1 --single-transaction --routines --triggers --events  --all-databases > all.sql

Enter password:

将其拷贝到从服务器上:

[root@localhost db_backup]# scp all.sql root@192.168.3.101:/root

在从服务器上恢复备份进行初始化:

[root@Node2 ~]# mysql -uroot -p < all.sql

初始化完成后,准备。

5. 从服务器进行基于日志点的复制链路的配置

mysql> change master to master_host='192.168.3.100',

-> master_user='dba_repl',

-> master_password='123456',

->MASTER_LOG_FILE='mysql-bin.000017',MASTER_LOG_POS=663;

MASTER_LOG_FILE和MASTER_LOG_POS的值从全备文件中的CHANGE MASTER中获取

以上复制链路的配置完成。

启动slave:

mysql> start slave;

检查是否启动成功状态:

mysql> show slave status \G

显示:

Relay_Master_Log_File: mysql-bin.000017

Slave_IO_Running:Yes

Slave_SQL_Running: Yes

说明启动成功了,可以在主服务器上插入数据,在从服务上查看数据是否同步过来了。

六. 主从复制的一些缺点

虽然主从复制增加了一个数据库副本,但从数据库和主数据库的数据最终会是一致的。之所以说是最终一致,因为MySQL复制是异步的,正常情况下主从复制数据之间会有一个微小的延迟。

通过这个数据库副本看似解决了数据库单点问题,但并不完美:因为这种架构下,如果主服务器宕机,需要手动切换从服务器,业务中断不能忍受,不能满足应用高可用的要求。

如大家对内容有更多想法及建议,欢迎留言交流~

mysql主从 单点_MySQL主从复制虽好,能完美解决数据库单点问题吗?相关推荐

  1. 1主5从mysql数据库_MySQL主从复制虽好,能完美解决数据库单点问题吗?

    一.单个数据库服务器的缺点 数据库服务器存在单点问题: 数据库服务器资源无法满足增长的读写请求: 高峰时数据库连接数经常超过上限. 二.如何解决单点问题 增加额外的数据库服务器,组建数据库集群: 同一 ...

  2. mysql 主从 问题_Mysql主从复制的问题与解决

    主从复制的原理 主库将变更的操作写入bin-log日志中(增,删,改操作). 从库中的I/O线程将主库的bin-log拷贝到本地,写入relay-log(中继日志中) 从库的SQL线程从中继日志中读取 ...

  3. mysql主从应用_MySQL主从复制应用、主从复制原理

    mysql主从复制安装配置 1.基础设置准备 #操作系统: centos6.5 #mysql版本: 5.7 #两台虚拟机: node1:192.168.85.111(主) node2:192.168. ...

  4. MySQL主从复制虽好,能完美解决数据库单点问题吗?

    点击上方"朱小厮的博客",选择"设为星标" 回复"1024"获取独家整理的学习资料 一.单个数据库服务器的缺点 数据库服务器存在单点问题: ...

  5. MySQL主从复制能完美解决数据库单点问题吗?

    一.单个数据库服务器的缺点 数据库服务器存在单点问题: 数据库服务器资源无法满足增长的读写请求: 高峰时数据库连接数经常超过上限. 二.如何解决单点问题 增加额外的数据库服务器,组建数据库集群: 同一 ...

  6. mysql 主从 均衡_Mysql主从复制

    ​好在,别人如何分析我,跟我本身是一点关系也没有的.(by 三毛) 主从复制的常见用途 1.数据备份 对备份来说,复制是一项很有意义的技术补充,但复制既不是备份也不能取代备份 2.负载均衡(读写分离) ...

  7. mysql 主从 编码_Mysql 主从复制

    MySQL Replication 主从复制(也称 AB 复制)允许将来自一个MySQL数据库服务器(主服务器)的数据复制到一个或多个MySQL数据库服务器(从服务器). 复制是异步的 从站不需要永久 ...

  8. mysql主从授权_MySQL主从复制(10)读写分离授权多种方案

    一.生产场景mysql主从复制读写分离授权方案及实战 当配置和好MySQL主从复制以后,所有对数据库内容的更新就必须在主服务器上进行. 那么,为什么所有的更新都要在主服务器上进行呢?这是因为数据复制是 ...

  9. mysql主从北_mysql主从复制(超简单)

    怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤如下: 1.主从服务器分别作以下操作: 1.1.版本一致 1.2.初始化表,并在后台启动mysql 1.3.修改root的密码 2.修改主服 ...

最新文章

  1. 基于梯度方向、极化变换和聚类算法的图像主特征直线检测
  2. 2018年计算机学校迎新标语,2018大学新生开学迎新标语大全 创意迎新横幅标语
  3. SliverLight注册字典转换器方法
  4. [转]HTTP请求模型和头信息
  5. java 爬虫框架_不知道Python爬虫?这篇文章丢给他(内含框架结构)
  6. GetCurrentDirectory和SetCurrentDirectory函数
  7. python-object-twoxml-html_1
  8. 绝缘端子行业调研报告 - 市场现状分析与发展前景预测
  9. 世界互联网大会发布15项领先科技成果
  10. 一个c语言源程序至少包含,一个C源程序必须包含一个main函数
  11. excel数据透视表之交叉表分组
  12. linux geos 动态库,未经sudo许可在linux上安装GEOS库
  13. 手机的1G,2G,3G和4G区别识记
  14. 上游任务upstream task
  15. 【无人机知识】吐血整理:史上最全最完整的飞机基本参数名称详解
  16. MySQL主从- slave跳过错误
  17. 5.5 进入编辑模式 5.6 vim命令模式 5.7 vim实践
  18. 基于STM32单片机环境光强度检测系统光敏电阻LCD1602
  19. 创业者回忆和乔布斯谈判:说错一个字就被臭骂拉黑
  20. 微信小程序——云函数三方库request-promise的使用详解

热门文章

  1. 1 分钟记住 docker 镜像和容器常用基本命令
  2. Colima:MacOS 上的极简容器运行时和 Kubernetes
  3. 2021全球权威AI性能竞赛MLPerf最新榜单: 浪潮获18项冠军几近半壁江山
  4. 官宣丨中国移动云能力中心新增5项可信云认证,斩获2项大奖!
  5. Hive 热门数据分析面试题解析
  6. 大数据从哪里来?| 技术头条
  7. 刚出炉!AI指数报告:AI人才需求暴涨35倍,薪酬问鼎No.1
  8. Cloud一分钟 | 北京13部门召开座谈会,要求阿里京东等平台规范开展双11促销活动...
  9. python连等号_Python比较2列表和2元组用等号
  10. Flowable 数据库表结构 ACT_HI_ACTINST