MYSQL 增加从库方式介绍

目录
  • 一、MySQL主从复制
    • 实现细节
  • 二、增加一个slave

一、MySQL主从复制

常见的主从架构:

  • 一主一从:一个 Master,一个 Slave
  • 一主多从:一个 Master,多个 Slave

具体,参考下图:

实现细节

MySQL 在主从同步时,其底层实现细节又是什么?为此后分析主从延迟原因以及优化方案,做好理论准备。

总结来说,MySQL 的主从复制:异步单线程。

  • Master上 1 个IO线程,负责向Slave传输 binary logbinlog
  • Slave上 2 个线程:IO 线程执行SQL的线程,其中:
    • IO线程:将获取的日志信息,追加到relay log上;
    • 执行SQL的线程:检测到relay log中内容有更新,则在Slave上执行sql;

特别说明:MySQL 5.6.3 开始支持「多线程主从复制」,一个数据库一个线程多个数据库多个线程

完整的 Master & Slave 之间主从复制过程:

二、增加一个slave

需求:目前我的master上有一个数据库ucenter,需要为其增加一台slave(目前有一台slave)

分析:

  • 我这里有一个前一天的4:00的数据库备份。
  • 有一台已存在的ucenter的slave
  • 重点是寻找binlog的时间点

操作:

1、在slave机器上配置slave信息,修改mysql.cfg配置并重启slave数据库

在[mysqld]中添加

replicate-do-db = ucenter     #同步的数据库名字
slave-skip-errors=all         #同步是忽略错误
server-id       = 1112        #和master与其他slave保持不通

2、查找数据库前一天的备份,将其copy到新增的slave机器上,并导库

[root@ucenter_slave /data]# mysql ucenter < ucenter_20171102.sql[root@ucenter_slave /data]# du -sh ucenter_20171102.sql 24G    ucenter_20171102.sql

3、定位binlog时间戳(重点)

在master上查找binlog

[root@Ucenter /data/mysqldata]# ll -t *bin*
-rw-rw---- 1 mysql mysql   30709744 Nov  2 21:32 mysql-bin.000268
-rw-rw---- 1 mysql mysql        171 Nov  2 19:41 mysql-bin.index
-rw-rw---- 1 mysql mysql 1021101094 Nov  2 19:41 mysql-bin.000267
-rw-rw---- 1 mysql mysql 1073742415 Oct 30 06:07 mysql-bin.000266
-rw-rw---- 1 mysql mysql 1073742062 Oct 26 12:03 mysql-bin.000265
-rw-rw---- 1 mysql mysql 1073742636 Oct 22 19:21 mysql-bin.000264
-rw-rw---- 1 mysql mysql 1073741961 Oct 18 22:49 mysql-bin.000263
-rw-rw---- 1 mysql mysql 1073742141 Oct 15 12:47 mysql-bin.000262
-rw-rw---- 1 mysql mysql 1073742284 Oct 11 10:18 mysql-bin.000261
-rw-rw---- 1 mysql mysql 1073742184 Oct  7 09:49 mysql-bin.000260

我的备份时间是2号4点开始,所以应该在mysql-bin.000267里查找2号4点前的pos,开始定位

[root@Ucenter /data/mysqldata]# /usr/local/mysql/bin/mysqlbinlog mysql-bin.000267 |grep '3:59:' |grep -v '13:59:'
#171102 3:59:58 server id 21323 end_log_pos 824385760 Query thread_id=3023086382 exec_time=0 error_code=0
#171102 3:59:58 server id 21323 end_log_pos 824386335 Query    thread_id=3023086386    exec_time=0    error_code=0
#171102 3:59:58 server id 21323 end_log_pos 824386363 Intvar
#171102 3:59:58 server id 21323 end_log_pos 824386698 Query    thread_id=3023086386    exec_time=0    error_code=0
#171102 3:59:58 server id 21323 end_log_pos 824387706 Query    thread_id=3023086388    exec_time=0    error_code=0
#171102 3:59:58 server id 21323 end_log_pos 824387734 Intvar
#171102 3:59:58 server id 21323 end_log_pos 824388209 Query    thread_id=3023086388    exec_time=0    error_code=0
#171102 3:59:58 server id 21323 end_log_pos 824388534 Query    thread_id=3023086398    exec_time=0    error_code=0

所以定位到最后 end_log_pos 824388534

4、在另外一台slave上查看master.info

[root@LeduPass02/data/mysqldata]# cat master.info 
15
mysql-bin.000268
11367810
192.168.100.70
omsync
om@123
3306
60
0

0
0

5、在slave 配置slave,进行同步

在Slave上配置相关设置,以便告诉Slave如何去连接Master,这包括主机地址,登陆凭证等等

[root@ucenter_slave /data]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.1.51-Community-Server-log Source

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql (none)>change master to master_host='192.168.100.70',master_port=3306,master_user='omsync',master_password='om@123',master_log_file='mysql-bin.000267',master_log_pos=824388534;

开启slave

mysql (none)>start slave;

查看slave状态:

完成。

到此这篇关于MYSQL 增加从库方式介绍的文章就介绍到这了,更多相关MYSQL增加从库内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • MySQL主库binlog(master-log)与从库relay-log关系代码详解

    主库binlog: # at 2420 #170809 17:16:20 server id 1882073306 end_log_pos 2451 CRC32 0x58f2db87 Xid = 32880 COMMIT/*!*/; # at 2451 #170814 11:07:18 server id 1882073306 end_log_pos 2528 CRC32 0x40774a4b Query thread_id=92 exec_time=0 error_code=0 SET TIM

  • MySQL中从库延迟状况排查的一则案例

    今天给一个客户巡检的情况下发从库没有业务的情况mysqld的cpu的一个core占用100%.查主库慢查询也没有关于写的SQL. 可以说是典的单进程复制把一个cpu占满造成的.知道原因了,就好分析了. 分析一下binlog中写的什么,看看有什么地方可以优化或是加速的.利用工具:pasrebinlog 利用show slave status\G; 查当前同步的到节点,然后对日值进行解析. git clone https://github.com/wubx/mysql-binlog-statisti

  • 通过两种方式增加从库——不停止mysql服务

    一般在线增加从库有两种方式,一种是通过mysqldump备份主库,恢复到从库,mysqldump是逻辑备份,数据量大时,备份速度会很慢,锁表的时间也会很长.另一种是通过xtrabackup工具备份主库,恢复到从库,xtrabackup是物理备份,备份速度快,不锁表.为什么不锁表?因为自身会监控主库日志,如果有更新的数据,就会先写到一个文件中,然后再回归到备份文件中,从而保持数据一致性. 现在生产环境MySQL数据库是一主一从,由于业务量访问不断增大,故再增加一台从库.前提是不能影响线上业务使用,

  • mysql主从库不同步问题解决方法

    遇到这样的错误如:"Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'"等或由于清数据导致主从库不同步了,解决办法如下: 先进入slave中执行:"slave stop;"来停止从库同步: 再去master中执行:"flu

  • 逐步分析MySQL从库com_insert无变化的原因

    大家都知道com_insert等com_xxx参数可以用来监控数据库实例的访问量,也就是我们常说的QPS.并且基于MySQL的复制原理,所有主库执行的操作都会在从库重放一遍保证数据一致,那么主库的com_insert和从库的com_insert理论上应该是相等的.如下面显示,第二列代表主库,第三列代表从库: 复制代码 代码如下: com_select              22                 1138com_update              36           

  • MYSQL主从库不同步故障一例解决方法

    于是: 1.在主库中创建一个临时库,将需要导入的表文件复制过来 2.执行 create database tmpdb; create table tmptable; cp mysql_date_file master_data_file //shell command 复制数据表文件到master data_dir下 insert into master.tmptable select * from tmpdb.tmptable; 执行完后,主库中数据导入正常 再看slave status sh

  • shell使用mysqld_multi自动做多实例从库脚本

    复制代码 代码如下: # cat doallslave.sh#!/bin/sh#code by scpman#mail:scpman@live.com#blog:http://www.scpman.com#name:"doallslave.sh"helpinfo(){echo -e '\t\thelp 查看帮助信息'echo -e '\t\t自动做allslave从库脚本使用帮助'echo -e '\t\tslavename 只能是xxx_xxx这种命令例如:zq2013_test1'

  • MySQL的从库Seconds_Behind_Master延迟总结

    目录 MySQL从库Seconds_Behind_Master延迟总结 一.延迟分类 1.第一类(成服务器有较高的负载) 2.第二类(不会造成服务器有较高的负载) 二.相关测试 1.Innodb层的行锁造成的延迟 2.MySQL层的MDL LOCK造成的延迟 三.总结 MySQL从库Seconds_Behind_Master延迟总结 一.延迟分类 延迟我们可将其分为两类: 1.第一类(成服务器有较高的负载) 这一类延迟情况可能造成服务器有较高的负载,可能是CPU/IO的负载.因为从库在实际执行E

  • MYSQL 增加从库方式介绍

    目录 一.MySQL主从复制 实现细节 二.增加一个slave 一.MySQL主从复制 常见的主从架构: 一主一从:一个 Master,一个 Slave 一主多从:一个 Master,多个 Slave 具体,参考下图: 实现细节 MySQL 在主从同步时,其底层实现细节又是什么?为此后分析主从延迟原因以及优化方案,做好理论准备. 总结来说,MySQL 的主从复制:异步单线程. Master上 1 个IO线程,负责向Slave传输 binary log(binlog) Slave上 2 个线程:I

  • MySQL运行状况查询方式介绍

    SHOW STATUS 直接在命令行下登陆MySQL运行SHOW STATUS;查询语句,详细如下图  同样的语句还有SHOW VARIABLES;,SHOW STATUS是查看MySQL运行情况,和上面那种通过pma查看到的信息基本类似. SHOW VARIABLES SHOW VARIABLES是查看MySQL的配置参数,还可以使用类似SHOW VARIABLES LIKE 'Key%' SHOW PROCESSLIST SHOW PROCESSLIST是查看当前正在进行的进程,对于有锁表等

  • 深入浅析MySQL从删库到跑路_高级(一)——数据完整性

    一.数据完整性简介 1.数据完整性简介 数据冗余是指数据库中存在一些重复的数据,数据完整性是指数据库中的数据能够正确反应实际情况. 数据完整性是指数据的可靠性和准确性,数据完整性类型有四种: A.实体完整性:实体的完整性强制表的标识符列或主键的完整性(通过唯一约束,主键约束或标识列属性). B.域完整性:限制类型(数据类型),格式(通过检查约束和规则),可能值范围(通过外键约束,检查约束,默认值定义,非空约束和规则). C.引用完整性:在删除和输入记录时,引用完整性保持表之间已定义的关系.引用完

  • MySql忘记密码修改方式适应5.7以上版本

    1.先停止mysqld.exe的进程 2.打开cmd进入到你mysql的bin目录下输入此命令: mysqld --skip-grant-tables 输入完成后这个cmd窗口就不能用了 另外在打开一个  如图: 3.同样进入到mysql的bin目录下直接输入mysql然后回车   现在是跳过密码验证链接到了数据库如图: 4.查看库 这个mysql这个里面的user表就放我们登陆的用户名和密码的 感兴趣可以自己查看一下 5.这里就要特别注意了在5.7以上的版本中user表里面没有password

  • 用 Python 连接 MySQL 的几种方式详解

    尽管很多 NoSQL 数据库近几年大放异彩,但是像 MySQL 这样的关系型数据库依然是互联网的主流数据库之一,每个学 Python 的都有必要学好一门数据库,不管你是做数据分析,还是网络爬虫,Web 开发.亦或是机器学习,你都离不开要和数据库打交道,而 MySQL 又是最流行的一种数据库,这篇文章介绍 Python 操作 MySQL 的几种方式,你可以在实际开发过程中根据实际情况合理选择. 1.MySQL-python MySQL-python 又叫 MySQLdb,是 Python 连接 M

  • 浅谈mysql增加索引不生效的几种情况

    增加索引可以提高查询效率. 增加索引就是增加一个索引文件,存放的是数据的地址,类似与我们文档的目录,在查找过程中可以不用从书的内容查找,直接根据目录对应的页码查找.索引是根据地址查找. 创建索引,索引使用的数据结构也有很多种.常见的是B-tree,哈希等.mysql默认使用的数据库索引是innerDB,innerDB的索引结构是B-tree. 但是在使用过程中哪些情况增加索引无法达到预期的效果呢?下面列举几种常见情况: 假设name age address 都已经加了索引.索引名字分别为 ind

  • mysql数据库之索引详细介绍

    目录 思维导图 简单理解 索引模型的演变 二叉查找树 自平衡二叉树 B树 B+树 聚集索引与二级索引 总结 如果你想深入了解为什么mysql可以快速的进行检索数据,那么你一定要来了解一下mysql的索引原理 思维导图 简单理解 你可以把索引理解为一本书的目录,我们可以通过索引快速的找到我们需要的数据,大概就像下面这个图,索引就像是右边的二叉树,每个节点指向具体的数据的物理地址,先通过二叉树找到数据的位置,然后再去物理磁盘中获取数据. 但是不同的二叉树的特性不同,我们还要选择合适的树来作为索引,所

  • mysql远程跨库联合查询的示例

    目录 情况一2个库在同一台物理主机 情况二2个库不在同一台物理主机(即2个库分别在不同的物理主机) 注意:myemployees库和shoppingCart库在同一台物理主机,如果不在同一台物理主机该怎么办呢?下面我会介绍到. 情况一2个库在同一台物理主机 联合查询(不同的2个库,myemployees库和shoppingCart库),这2个库在同一台物理主机上,都在我本机. #联合查询(不同的2个库,myemployees库和shoppingCart库) SELECT emp01.`emplo

  • Mysql四种分区方式以及组合分区落地实现详解

    目录 一.问题 1.分区是什么 2.Mysql为什么要使用分区 3.Mysql中分区原理 4.Mysql中分区局限 二.分区落地实现 1.Range分区 2.Hash分区 3.Key分区 4.Mysql中如何落地List分区 5.Mysql中如何落地组合分区 三.Mysql如何管理分区 1.删除分区 2.重建分区 2.1RANGE 分区重建 2.2 LIST 分区重建 2.3 HASH/KEY 分区重建 3. 新增分区 3.1 新增 RANGE 分区 3.2 新增 HASH/KEY 分区 3.3

随机推荐