MySQL主从复制认识

  • MySQL主从复制作用
    1)、什么是MySQL主从复制
    MySQL主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个MySQL数据库从节点。MySQL默认采用异步复制方式,这样从节点不用一直访问主服务器来更新自己的数据,数据的更新可以在远程连接上进行,从节点可以复制主数据库中的所有数据库或者特定的数据库。
    2)、MySQL主从复制作用
    一、数据热备
    作为备数据库,当主数据库服务器发生故障后,可切换到从数据库继续工作,避免数据丢失。
    二、读写分离
    可支持MySQL数据库服务器支持更大的并发。数据读写操作可分配在不同的服务器间进行。如操作报表中尤其重要,由于部分报表SQL语句非常的慢,会导致锁表,影响前台服务。使用主从复制,前台使用master,负责写,报表使用slave,负责读,那么报表SQL将不会造成前台锁表,保证了前台正常运行。
    三、架构扩展
    随着业务量越来越大,I/O访问频率过高,单机可能无法满足。此时做多库的存储,如一主多从方式,以降低磁盘I/O访问,提高单个机器的I/O性能。
  • MySQL主从复制原理
    MySQL数据复制的基础是二进制日志文件(binary log file)。一台MySQL数据库一旦启用二进制日志后,其作为master节点,数据库中所有操作都会以“事件”的方式记录在二进制日志中,其他数据库作为slave通过一个I/O线程与主服务器保持通信,并监控master的二进制日志文件的变化,如发现master二进制日志文件发生变化,则会把变化复制到自己的中继日志中,然后slave的一个SQL线程会把相关的“事件”执行到自己的数据库中,以此实现从数据库和主数据库的一致性,也就实现了主从复制。

    总结如下:
    1)、master将操作语句记录到binlog日志中,然后授予slave远程连接的权限(master上创建授权的用户,开启binlog二进制日志功能;通常为了数据安全考虑,slave也开启binlog功能)。
    2)、slave开启两个线程:IO线程和SQL线程。IO线程负责读取master的binlog内容到中继日志relay log里;SQL线程负责从relay log日志里读出binlog内容,并更新到slave的数据库里,这样就能保证slave数据和master数据保持一致了。
    3)、Mysql主从复制至少需要两个Mysql服务,当然Mysql服务可以分布在不同的服务器上,也可以在一台服务器上启动多个MySQL服务。
    4)、Mysql主从复制最好确保master和slave服务器上的Mysql版本相同。
  • MySQL主从形式
    常见的主从形式:
    一主一从

    一主两从、一主多从

    联级复制
  • MySQL主从复制操作
    OS:CentOS7
    主从形式:一主一从
    实现MySQL主从复制需要进行的配置:
    主服务器
    开启二进制日志
    配置唯一的server-id
    获得master二进制日志文件名及位置
    创建一个用于slave和master通信的用户账号
    从服务器
    配置唯一的server-id
    使用master分配的用户账号读取master二进制日志
    启用slave服务
    具体操作:
    主服务器操作
    1)、修改主数据库服务器配置文件my.cnf
    server_id = 1                #唯一标识,主库从库不能重复
    log_bin = mysql-bin          #开启日志
    binlog_format=MIXED         #日志记录的格式
    max_binlog_size = 512M     #单个日志文件最大
    expire_logs_day = 3          #日志有效期(天)
    binlog_do_db = test1,test2     #日志记录那些数据库
    binlog_ignore_db = mysql,performance_schema,information_schema   #日志记录忽略那些数据库

    2)、创建用于同步账户

    mysql> CREATE USER ‘user‘@‘10.10.10.11‘ IDENTIFIED BY ‘passwd‘;    #创建用户
    mysql> GRANT REPLICATION SLAVE ON *.* TO ‘user‘@‘10.10.10.11‘;    #分配权限,只能10.10.10.11从服务器连接
    mysql>flush privileges;

    3)、查看master状态
    show master status命令记录二进制文件名(mysql-bin.000003)和position位置(77)。

    mysql > SHOW MASTER STATUS;
    +------------------+----------+--------------+------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000003 | 77       | test         | manual,mysql     |
    +------------------+----------+--------------+------------------+

    从服务器操作
    1)、修改从数据库服务器配置文件my.cnf

    server_id = 2
    log_bin = mysql-bin     #开启日志
    binlog_format=MIXED     #日志记录的格式
    max_binlog_size = 512M     #单个日志文件最大
    expire_logs_day = 3   #日志有效期(天)
    replicate_do_db = test1,test2     #slave上配置,指定slave要复制哪个库
    replicate-ignore-db=mysql,performance_schema,information_schema     #slave上配置,指定slave要忽略哪些库
    relay_log_recovery = 1     #从库建议开启,有利于数据一致性
    log_slave_updates = 1      #如果从库还会用做主库,建议开启

    2)、设置同步信息
    先停止同步

    mysql>stop slave;

    设置同步信息

    mysql> CHANGE MASTER TO
    ->     MASTER_HOST=‘10.10.10.10‘,
    ->     MASTER_USER=‘user‘,
    ->     MASTER_PASSWORD=‘passwd‘,
    ->     MASTER_LOG_FILE=‘mysql-bin.000003‘,
    ->     MASTER_LOG_POS=77;

    其中master_log_file 和 master_log_pos为上面主库show master status命令记录的信息。
    3)、启动slave 同步进程

    mysql>start slave;

    4)、slave状态查看
    show slave status\G 命令查看,主要查看这几项:

    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
    Master_Log_File: mysql-bin.000003
    Relay_Master_Log_File: mysql-bin.000003
    Read_Master_Log_Pos: 2720
    Exec_master_log_pos: 2720

    Slave_IO_Running和Slave_SQL_Running都为YES,表示主从同步设置成功了。
    验证操作,如在master数据库的test数据库的一张表中插入一条数据,在slave的test库的相同数据表中查看是否有新增的数据,即可验证主从复制功能是否有效,还可以关闭slave(mysql>stop slave;),然后再修改master,看slave是否也相应修改(停止slave后,master的修改不会同步到slave),就可完成MySQL主从复制功能的验证了。

  • 原文地址:https://blog.51cto.com/10874766/2468557

    时间: 2024-08-26 10:27:20

    MySQL主从复制认识的相关文章

    mysql主从复制与读写分离

    MySQL主从复制与读写分离 MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践 Mysql作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过.但在实际的生产环境中,由单台Mysql作为独立的数据库是完全不能满足实际需求的,无论是在安全性,高可用性以及高并发等各个方面. 因此,一般来说都是通过 主从复制(Master-Slave)的方式来同步数据,再通过读写分离(MySQL-Proxy)来提升数据库的并发负载能力 这样的方案来进行部

    42-4 mysql主从复制

    04 mysql主从复制架构及实现 实战:主主复制 [[email protected] ~]# systemctl stop mariadb.service  [[email protected] ~]# systemctl stop mariadb.service [[email protected] ~]# rm -rf /var/lib/mysql/* [[email protected] ~]# rm -rf /var/lib/mysql/* [[email protected] ~]

    MySQL主从复制、读写分离、高可用集群搭建

    MySQL主从复制.读写分离.高可用集群搭建  一.服务介绍   1.1 Keepalived     Keepalived,见名知意,即保持存活,其目的是解决单点故障,当一台服务器宕机或者故障时自动切换到其他的服务器中.Keepalived是基于VRRP协议实现的.VRRP协议是用于实现路由器冗余的协议,VRRP协议将两台或多台路由器设备虚拟成虚拟设备,可以对外提供虚拟路由器IP(一个或多个),即漂移IP(VIP). 1.2 ProxySQL ProxySQL是一个高性能,高可用性的MySQL

    MySQL主从复制介绍

    1.1 MySQL主从复制原理介绍 MySQL的主从复制是一个异步的复制过程(虽然一般情况下感觉是实时的),数据将从一个MySQL数据库(我们称之为Master)复制到另一个MySQL数据库(我们称之为Slave),在Master与Slave之间实现整个主从复制的过程是由三个线程参与完成的,其中有两个线程(SQL线程和IO线程)在Slave端,另外一个线程(I/O线程)在Master端. 要实现MySQL的主从复制,首先必须打开Master端的binlog记录功能,否则就无法实现.因为整个复制过

    mysql主从复制延迟问题的相关知识与解决方案

    一.如何监控发生了主从延迟? 在从库机器上,执行show slave status,查看Seconds_Behind_Master值,代表主从同步从库落后主库的时间,单位为秒,若同从同步无延迟,这个值为0. Mysql主从延迟一个重要的原因之一是:mysql是以单线程串行执行. 主从复制数据时,在从服务器上的mysql,是一个线程在同步数据. 串行的方式,它是指,执行一个后才继续执行下一个.如果一个卡住了,要等待时间,才会继续下一个.串行与并行是相反的. 二.同步延迟发生的场景 当主库的TPS并

    生产环境 MySQL主从复制(同步)

    服务器信息 1.主服务器信息 [email protected]:~$ lsb_release -a No LSB modules are available. Distributor ID:  Ubuntu Description:     Ubuntu 14.04.4 LTS Release:   14.04 Codename:  trusty [email protected]:~$ mysql -V mysql  Ver 14.14 Distrib 5.5.50, for debian-

    linux笔记 第四十课 mysql主从复制

    1.MYSQL复制的基础概念 2.MYSQL复制的实现 3.MYSQL复制架构及双主模型演示 4.MYSQL复制监控/常见问题及解决方案 5.MariaDB  GTID及多源复制 6.MariaDB  GTID读写分离及mysql-proxy的使用 一.MySQL主从复制的基础知识 二.MySQL主从复制实现(以mariadb 5.5.36为例) 实验环境:主服务器(node1)172.16.100.7 从服务器(node2)172.168.100.8 软件:mariadb-5.5.36-lin

    浅谈mysql主从复制的高可用解决方案

    1.熟悉几个组件(部分摘自网络)1.1.drbd     —— DRBD(Distributed Replicated Block Device),DRBD号称是 "网络 RAID",开源软件,由 LINBIT 公司开发.DRBD 实际上是一种块设备的实现,主要被用于Linux平台下的高可用(HA)方案之中.他是有内核 模块和相关程序而组成,通过网络通信来同步镜像整个设备,有点类似于一个网络RAID的功能.也就是说当你将数据写入本地的DRBD设备上的文件系统 时, 数据会同时被发送到网

    Mysql主从复制排错案例一

    MYSQL主从复制排错案例一: 问题:主从无法同步现象:MASTER: mysql> show master status;              Empty set (0.00 sec)      SLAVE:  mysql> show slave status \G;              Slave_IO_Running: Connecting              Slave_SQL_Running: Yes              Seconds_Behind_Mast

    mysql主从复制--mysql-5.5异步、半同步配置

    背景介绍 mysql5.5之前版本,mysql主从复制比较简单 mysql5.6:gtid,multi-thread replication master 1 启用二进制日志 log-bin = master-bin log-bin-index = master-bin.index 2 选择一个唯一的server id server-id = [0~2^32] 3 创建具有复制权限的用户 replication slave,复制的从节点 replication client,联系master,获