美文网首页
走向DBA之主从复制(搭建)

走向DBA之主从复制(搭建)

作者: 国王12 | 来源:发表于2019-06-30 16:31 被阅读0次

一、介绍

依赖于二进制日志的,准实时备份的一个多节点架构

二、主从复制的前提(如何搭建)

至少两个或多个实例
不同的server_id
主库需要开启二进制日志
主库需要授权一个专用复制用户
先把主库前期的数据做备份,先恢复到从库
开启专用复制线程

三、搭建主从复制(采用单机多实例模式)

3.1.准备多实例

准备多实例 参照第二天的笔记
并启动两台多实例

3.2.检查server_id

mysql -uroot -p -S /data/3307/mysql.sock -e "select @@server_id;"
mysql -uroot -p -S /data/3308/mysql.sock -e "select @@server_id;"

注意:两台实例的server_id不能重复
配置方法:
vim /data/3307/my.cnf
server_id=7
。。。。

3.3.查看主库二进制日志状态(必须开启)

[root@mysql52 ~] mysql -uroot -p -S /data/3307/mysql.sock -e "show variables like '%log_bin%'"
+---------------------------------+----------------------------+
| Variable_name                   | Value                      |
+---------------------------------+----------------------------+
| log_bin                         | ON                         |
| log_bin_basename                | /data/3307/mysql-bin       |
| log_bin_index                   | /data/3307/mysql-bin.index |
| log_bin_trust_function_creators | OFF                        |
| log_bin_use_v1_row_events       | OFF                        |
| sql_log_bin                     | ON                         |
+---------------------------------+----------------------------+

3.4.主库创建专用复制用户

mysql> grant replication slave on *.* to repl@'10.0.0.%' identified by '123456';

3.5.对进行主库数据备份

mysqldump -uroot -p123456 -S /data/3307/mysql.sock -A --master-data=2 -R -E --triggers --single-transaction >/tmp/3307full.sql

3.6.数据恢复到从库(3308)

mysql> set sql_log_bin=0;                    临时关闭二进制日志记录
mysql> source /tmp/3307full.sql;          恢复数据
mysql> set sql_log_bin=1;                   重新打开二进制日志记录,或退出重进一个效果

7 配置3308从库

mysql> help change master to  获取基本参数,然后修改根据情况修改,
修改后录入MySQL即可,如下:

  mysql> CHANGE MASTER TO
  MASTER_HOST='10.0.0.51',
  MASTER_USER='repl',
  MASTER_PASSWORD='123456',
  MASTER_PORT=3307,
  MASTER_LOG_FILE='mysql-bin.000008',
  MASTER_LOG_POS=444,
  MASTER_CONNECT_RETRY=10;
  
  mysql> start slave;
  
  从000008文件开始主从复制
  从444gtid号开始主复制
  这些数据需要查看全备的文件中查看获取
  
  vim /tmp/3307full.sql 
22 -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000008', MASTER_LOG_POS=444;

如果上述信息不小心写错了,别害怕:

mysql> stop slave;         停止主从复制

mysql> reset slave all;    关闭主从复制

mysql> CHANGE MASTER TO    重新录入连接主库的信息
  MASTER_HOST='10.0.0.51',
  MASTER_USER='repl',
  MASTER_PASSWORD='123456',
  MASTER_PORT=3307,
  MASTER_LOG_FILE='mysql-bin.000008',
  MASTER_LOG_POS=444,
  MASTER_CONNECT_RETRY=10;
  
  mysql> start slave;   启动主从

查看从库是否正常

mysql>  show slave status\G   
 Slave_IO_Running: Yes
Slave_SQL_Running: Yes
如上两个是yes代表成功,其它参数见下文

主从搭建就算OK了,下文讲解 主从复制工作过程

四、主从复制工作过程

4.1名词认识

文件
    主库:binlog
    从库:relay-log       中继日志
         master.info     主库信息文件
         relay-log.info  中继日志应用信息
线程
    主库:binlog_dump_thread 二进制日志投递线程  
    mysql -uroot -p -S /data/3307/mysql.sock -e "show processlist"   #查看主库线程是否正常 出现binlog dump为正常
    从库:IO-Thread    :从库IO线程         : 请求和接受binlog
         SQL_Thread   : 从库的SQL线程     :  回放(运行)日志   

4.2工作原理

开局上图

来自老师:
主从oard.png
主从d.png 主从复制原理图.png
(1)从库执行 change master to 语句,会立即将主库信息(IP、端口、gtip号等)记录到master.info中
(2)从库执行 start slave语句,会立即生成IO_T和SQL_T(IO线程和SQL线程)
(3)IO_T 读取master.info文件,获取到主库信息
(4)IO_T 连接主库,主库会立即分配一个DUMP_T(dump线程与从库进行联系),进行交互 
(5)IO_T 根据master.info binlog信息,向DUMP_T请求最新的binlog 
(6)主库DUMP_T,经过查询,如果发现有新的,截取并反回给从库IO_T
(7)从库IO_T会收到binlog,存储在TCP/IP缓存中,在网络底层返回ACK
(8)从库IO_T会更新master.info ,重置binlog位置点信息
(9)从库IO_T会将binlog,写入到relay-log中
(10)从库SQL_T 读取Relay-log.info 文件,获取上次执行过的位置点
(11)SQL_T按照位置点往下执行relaylog日志
(12)SQL_T执行完成后,重新更新relay-log.info
(13)relaylog定期自动清理的功能。

细节:
主库发生了信息的修改,更新二进制日志完成后,会发送一个“信号”给Dump_T,Dump_T通知给IO_T线程

相关文章

  • 走向DBA之主从复制(搭建)

    一、介绍 二、主从复制的前提(如何搭建) 三、搭建主从复制(采用单机多实例模式) 3.1.准备多实例 3.2.检查...

  • DBA(MySQL)学习-主从复制基础

    1. 主从复制 1.1 介绍 1.2 主从复制的前提(如何搭建主从复制) 2. 搭建主从复制 2.1 搭建多实例 ...

  • 走向DBA之索引

    前言:如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车...

  • Day011-MySQL主从复制

    1. 主从复制介绍 2. 主从复制的前提(搭建主从复制) 3. 搭建主从复制步骤 3.1 准备多实例 3.2 检查...

  • 主从复制(基础)

    01,主从复制简介 02,主从搭建简述 03,主从复制搭建(Classic replication) 1 清理主库...

  • redis集群

    一,主从复制搭建 哨兵

  • 数据库的主从复制

    1.介绍 2.主从复制的前提 3、搭建主从复制

  • mysql 主从复制

    mysql 主从复制 网易数据库 石勇 提纲 什么是主从复制 主从复制的原理 主从复制的用途 主从复制的搭建 主从...

  • 基于Docker搭建MySQL主从复制

    基于Docker搭建MySQL主从复制

  • DBA与MySQL简介

    1、MySQL-DBA工作职责 开发DBA 运维DBA 初级 安装、搭建 中级 数据库管理员、用户权限、索引管理、...

网友评论

      本文标题:走向DBA之主从复制(搭建)

      本文链接:https://www.haomeiwen.com/subject/gzkdcctx.html