当前位置: 首页 > 编程日记 > 正文

精通mysql_《深入精通Mysql(五)》实战:Mysql实现主从复制

深入精通Mysql系列其他文章推荐:

一、前言

随着应用业务数据不断的增大,应用的响应速度不断下降,在检测过程中我们不难发现大多数的请求都是查询操作。

此时,我们可以将数据库扩展成主从复制模式,将读操作和写操作分离开来,多台数据库分摊请求,从而减少单库的访问压力,进而应用得到优化。本次测试使用两个虚拟机: ip:192.168.2.21(主) ip:192.168.2.22(从)

二、主从复制原理

同步操作通过 3 个线程实现,其基本步骤如下:

主服务器将数据的更新记录到二进制日志中(记录被称作二进制日志事件)-- 主库线程;

从库将主库的二进制日志复制到本地的中继日志(relay log)-- 从库 I/O 线程;

从库读取中继日志中的事件,将其重放到数据中 -- 从库 SQL 线程。

三、配置主库

# 3.1 创建用户

为了安全起见,准备创建一个新用户用于从库连接主库。

# 创建用户

create user 'repl'@'%' identified by 'repl';

# 授权,只授予复制和客户端访问权限

grant replication slave,replication client on *.* to 'repl'@'%' identified by 'repl';

# 3.2 修改配置文件

1)vim /etc/my.cnf 在[mysqld]下添加:

log-bin = mysql-bin

log-bin-index = mysql-bin.index

binlog_format = mixed

server-id = 21

sync-binlog = 1

character-set-server = utf8

2)保存文件并重启主库:

service mysqld restart

配置说明:

log-bin:设置二进制日志文件的基本名;

log-bin-index:设置二进制日志索引文件名;

binlog_format:控制二进制日志格式,进而控制了复制类型,三个可选值

-STATEMENT:语句复制

-ROW:行复制

-MIXED:混和复制,默认选项

server-id:服务器设置唯一ID,默认为1,推荐取IP最后部分;

sync-binlog:默认为0,为保证不会丢失数据,需设置为1,用于强制每次提交事务时,同步二进制日志到磁盘上。

# 3.3 备份主数据库数据

若主从数据库都是刚刚装好且数据都是一致的,直接执行 show master status 查看日志坐标。

若主库可以停机,则直接拷贝所有数据库文件。

若主库是在线生产库,可采用 mysqldump 备份数据,因为它对所有存储引擎均可使用。

1)为了获取一个一致性的快照,需对所有表设置读锁:

flush tables with read lock;

2)获取二进制日志的坐标:

show master status;

返回结果:

+------------------+----------+--------------+------------------+-------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+--------------+------------------+-------------------+

| mysql-bin.000001 | 120 | | | |

+------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

3)备份数据:

# 针对事务性引擎

mysqldump -uroot -ptiger --all-database -e --single-transaction --flush-logs --max_allowed_packet=1048576 --net_buffer_length=16384 > /data/all_db.sql

# 针对 MyISAM 引擎,或多引擎混合的数据库

mysqldump -uroot --all-database -e -l --flush-logs --max_allowed_packet=1048576 --net_buffer_length=16384 > /data/all_db.sql

4)恢复主库的写操作:

unlock tables;

四、配置从库

# 4.1 修改配置文件

1)vim /etc/my.cnf 在[mysqld]下添加:

log-bin = mysql-bin

binlog_format = mixed

log-slave-updates = 0

server-id = 22

relay-log = mysql-relay-bin

relay-log-index = mysql-relay-bin.index

read-only = 1

slave_net_timeout = 10

2)保存文件并重启从库:

service mysqld restart

配置说明:

log-slave-updates:控制 slave 上的更新是否写入二进制日志,默认为0;若 slave 只作为从服务器,则不必启用;若 slave 作为其他服务器的 master,则需启用,启用时需和 log-bin、binlog-format 一起使用,这样 slave 从主库读取日志并重做,然后记录到自己的二进制日志中;

relay-log:设置中继日志文件基本名;

relay-log-index:设置中继日志索引文件名;

read-only:设置 slave 为只读,但具有super权限的用户仍然可写;

slave_net_timeout:设置网络超时时间,即多长时间测试一下主从是否连接,默认为3600秒,即1小时,这个值在生产环境过大,我们将其修改为10秒,即若主从中断10秒,则触发重新连接动作。

4.2 导入备份数据

如果 3.3 步骤中没进行备份,忽略此步骤。

mysql -uroot -p < /data/all_db.sql

4.3 统一二进制日志的坐标

根据 3.3 步骤获取的坐标,统一到从库中:

change master to

master_host='192.168.2.21',

master_user='repl',

master_password='repl',

master_port=3306,

master_log_file='mysql-bin.000001',

master_log_pos=120;

注意:此处使用的是新创建的账户。

4.4 启动主从复制

1)启动从库 slave 线程:

start slave;

2)查看从服务器复制功能状态:

show slave status\G;

返回结果:

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.2.21

Master_User: repl

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000001

Read_Master_Log_Pos: 120

Relay_Log_File: mysql-relay-bin.000002

Relay_Log_Pos: 283

Relay_Master_Log_File: mysql-bin.000001

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 120

此处只张贴部分返回结果。

结果说明:

Slave_IO_Running:此进程负责 slave 从 master 上读取 binlog 日志,并写入 slave 上的中继日志。

Slave_SQL_Running:此进程负责读取并执行中继日志中的 binlog 日志。

这两个进程的状态需全部为 YES,只要有一个为 NO,则复制就会停止。

当 Relay_Master_Log_File = Master_Log_File 且 Read_Master_Log_Pos = Exec_Master_Log_Pos 时,则表明 slave 和 master 处于完全同步的状态。

五、验证

使用一个简单的例子:

在主库创建名为 mysql_test 的数据库,如果同步成功,那么在从库中也能查询出名为 mysql_test 数据库。

深入精通Mysql系列其他文章推荐:

相关文章:

一个开发团队、软件公司,团队工作氛围很重要,没有好氛围难出好产品、好项目...

接触软件行业很多年有些年头了&#xff0c;展望过去的岁月&#xff0c;总想写点儿东西&#xff0c;总结总结&#xff0c;我也不怕拍砖了&#xff0c;曾经也换过很多公司、跳过很多槽&#xff0c;现在想想&#xff0c;总结出来&#xff1a;“天下的乌鸦是一样黑的”&#xff0c;…

Matlab编程与数据类型 -- 奇数阶魔方矩阵的编程

本微信图文详细介绍了利用Matlab实现奇数阶魔方矩阵的编程。

Apache Hive 快速入门 (CentOS 7.3 + Hadoop-2.8 + Hive-2.1.1)

2019独角兽企业重金招聘Python工程师标准>>> 本文节选自《Netkiller Database 手札》 第 63 章 Apache Hive 目录 63.1. 安装 Apache Hive 63.1.1. MySQL 63.1.2. Hadoop 63.1.3. Hive 63.1.4. 启动 Hive 63.1.5. 访问 Hive 63.2. 管理 Hive 63.2.1. 表管理 63.2.1.…

mysql的profile_Mysql分析-profile详解

一。前言当我们要对某一条sql的性能进行分析时&#xff0c;可以使用它。Profiling是从 mysql5.0.3版本以后才开放的。启动profile之后&#xff0c;所有查询包括错误的语句都会记录在内。关闭会话或者set profiling0 就关闭了。(如果将profiling_history_size参数设置为0&#x…

2003網域升級到2008網域以及遷移DNS

2003網域升級到2008網域以及遷移DNS 如圖這是我們現在的拓撲&#xff0c;cc從現用的LCS2008網域升級到2008網域&#xff0c;並一步步截圖給大家示範說明。隨便抓了臺虛擬機&#xff0c;是以前做LCS試驗用的&#xff0c;現在不用了&#xff0c;正好給大家示範2003升級到2008網域…

FPGA管脚约束

Edit → language templates &#xff1a; 打开即可查看基本语法。 一、xilinx中的约束文件 1、约束的分类 利用FPGA进行系统设计常用的约束主要分为3类。 &#xff08;1&#xff09;时序约束&#xff1a;主要用于规范设计的时序行为&#xff0c;表达设计者期望满足的时序条件&…

Matlab数据的可视化 -- 线性图函数plot

本篇微信图文主要介绍Matlab数据可视化方面的内容。

日志文件和mysql同步到kafka_logstash_output_kafka:Mysql同步Kafka深入详解

0、题记实际业务场景中&#xff0c;会遇到基础数据存在Mysql中&#xff0c;实时写入数据量比较大的情景。迁移至kafka是一种比较好的业务选型方案。而mysql写入kafka的选型方案有&#xff1a;方案一&#xff1a;logstash_output_kafka 插件。方案二&#xff1a;kafka_connector…

TPYBoard自制微信远程智能温湿度计

2019独角兽企业重金招聘Python工程师标准>>> 智能时代一夜间什么都能远程了。创业者想着如何做智能产品&#xff0c;如何做远程控制。DIY爱好者也想着如何自制各种奇妙的工具。这里和大家一起学习制作一款廉价的智能温湿度计。说它廉价是因为共计花费不过40元&#…

Matlab数据的可视化 -- 简易线性函数图

本篇微信图文主要介绍Matlab数据可视化方面的内容。

浏览器tab关闭事件_Python--使用Pyqt5实现简易浏览器(最新版本测试过)

Python--使用Pyqt5实现简易浏览器(最新版本测试过)博客说明文章所涉及的资料来自互联网整理和个人总结&#xff0c;意在于个人学习和经验汇总&#xff0c;如有什么地方侵权&#xff0c;请联系本人删除&#xff0c;谢谢&#xff01;准备环境首先我们需要的是我们的开发环境&…

JS 中 URL 编码的问题.

URL 编码 为什么要对 URL 编码 1. 避免解析错误 我们的 queryString 的形式是使用 ?开始, keyvalue 传递参数, key-value pairs 之间使用 & 连接.比如: ?postid5038412&t1450591802326服务器会 根据 & 解析 key-value pairs 根据 解析 key,value 那么如果 key或…

通用权限管理模块系列——需求分析——列举需求

以RBAC为理论基础 以低耦合为设计原则 我们计划设计一个独立的权限模块 碰到一些难题&#xff0c;后面另外开文章来讨论 本文主要是列举目前收集到的权限方面的需求信息&#xff0c;如果各位有能提供的用例&#xff0c;请不吝赐教。 各种需求都是从网络或零碎项目里提取的&…

Matlab数据的可视化 -- 散点图

本篇微信图文主要介绍Matlab数据可视化方面的内容。scatter

koa连接mysql_CentOS 环境 Node + Koa2 连接 MySQL (ECS系列三)

Koa 搭建服务新建一个文件夹 koa_server&#xff0c;进入后cnpm i -S koa会生成 node_modules 依赖包&#xff0c;以及 package.json创建文件 server.js&#xff0c;并写入const Koa require(koa);const app new Koa();app.use( async ( ctx ) > {ctx.body hello koa2})a…

Python CRC32 文件校验

binascii.crc32(s [,crc])返回CRC32校验。参数crc指定初始值用于循环。例如&#xff1a;Code>>> import binascii>>> crc binascii.crc32(spam)>>> binascii.crc32( and eggs, crc)739139840>>> binascii.crc32(spam and eggs)739139840C…

国家智慧城市战略实施 保温材料等建材万亿市场待挖掘

近年来&#xff0c;国家多部委联合发布《国家新型城镇化规划(2014—2020)》《关于促进智慧城市健康发展的指导意见》&#xff0c;提出到2020年建成一批特色鲜明的智慧城市。国家智慧城市建设与发展上升为国家战略。2014年中国智慧城市的市场规模达到800多亿元&#xff0c;其中不…

Matlab数据的可视化 -- 极坐标图及其与直角坐标图的转换

本篇微信图文主要介绍Matlab数据可视化方面的内容。polar、pol2cart、cart2pol

mysql 主从复制 性能_zabbix监控mysql各项性能,主从复制

######################################################监控mysql(默认监控模板不能用&#xff0c;再agentd.conf开启自定义key&#xff0c;自己编写脚本)在zabbix_agentd.conf尾部添加(注意相关文件路径&#xff0c;以及脚本权限等问题)vim zabbix_agentd.confUserParameter…

SQL Server基础知识之:设计和实现视图

设计和实现视图可谓是数据库物理设计中的一个非常重要的步骤。从一般意义上说&#xff0c;设计和实现视图应该遵循下面的一些建议和原则。 以下内容摘在文档&#xff0c;我对某些重点进行了补充说明&#xff08;红色部分&#xff09; 只能在当前数据库中创建视图。 但是&#x…

Matlab数据的可视化 -- 条形图

本篇微信图文主要介绍Matlab数据可视化方面的内容。bar、barh

全球SDN测试认证中心发布OpenDaylight测试报告

随着软件定义网络(Software Defined Network, SDN)商业部署速度地加快,关乎整个SDN 网络性能表现的控制平面核心组件——SDN 控制器也越来越成为网络用户关心的焦点。日前&#xff0c;天地互连-全球SDN测试认证中心&#xff08;SDNCTC&#xff0c;www.sdnctc.com&#xff09;正…

mysql可以做日期处理吗_mysql可以做日期处理吗

最近一个项目&#xff0c;需要写很多的sql语句。涉及到很多与时间相关的处理&#xff0c;现在做一下简单的总结。1.时间格式&#xff1a;在这个项目中&#xff0c;或许是由不同的人建立的数据库表结构吧&#xff0c;对时间的格式步统一&#xff0c;有的表中存储的long类型的时间…

大型网站采用什么系统架构保证性能稳定性

from http://www.bobd.cn/design/web/Theory/200904/31145.html 千万级的注册用户&#xff0c;千万级的帖子&#xff0c;nTB级的附件&#xff0c;还有巨大的日访问量&#xff0c;大型网站采用什么系统架构保证性能和稳定性&#xff1f; 首先讨论一下大型网站需要注意和考虑的问…

Matlab数据的可视化 -- 饼图

本篇微信图文主要介绍Matlab数据可视化方面的内容。pie

Rushcrm:企业部署CRM系统做什么

现在很流行的一个词就是大数据&#xff0c;很多企业开始重视数据的开发利用。CRM在这样的环境背景下诞生了&#xff0c;但这并不意味着所有的企业都能很好的利用好CRM系统(客户关系管理系统)。CRM带来的效益是显而易见的&#xff0c;但是购置了CRM系统仅仅是第一步&#xff0c;…

slot没有毁灭的问题_解析flink之perjob模式下yn参数不生效问题

概要&#xff1a;0. 问题背景1. Stream Job的切分2. 计算资源的调度 & 任务的执行3. 最后的总结0. 问题背景&#xff1a;开始用flink处理流式作业的时候&#xff0c;用yarn-cluster模式提交作业的时候&#xff0c;脚本如下&#xff1a;$FLINK_BIN run -m yarn-cluster -yqu…

获取access中表的相关信息

就用到两条.net自带的获取数据库信息的语句 OleDbConnection con new OleDbConnection(connection); // OleDB数据库连接实例 // 获取数据库中表的相关信息DataTable dt con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new Object[] { null, null, null, "Table"…

Matlab数据的可视化 -- 茎干图

本篇微信图文主要介绍Matlab数据可视化方面的内容。stem

Wink发布Wink Hub2家庭物联网控制中心

智能家居主要厂商之一Wink宣布推出Wink Hub2家庭物联网控制中心&#xff0c;支持更多的家庭物联网产品&#xff0c;更广泛的互联互通&#xff0c;以及提供更好用的控制程序。Wink Hub2主要作用是连接第三方家庭物联网产品&#xff0c;并从一个集中的应用程序进行控制。 Wink Hu…