MySQL Replication主从复制—(实例)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
日志服务 SLS,月写入数据量 50GB 1个月
简介:

主从复制原理

  • MySQL Replication是一个从Master复制到一台或多台Slave的异步复制过程。

  • Master和Slave之间实现整个复制过程主要由三个线程来完成,其中一个IO线程在Master端,两个线程(SQL线程和IO线程)在Slave端。

  • 通过Master服务器打开Binary Log(二进制日志文件)的功能,Slave端从Master端获取该日志信息,然后将二进制文件解析为SQL语句,并完全顺序地执行SQL语句所记录的各种操作。(Slave获取到的二进制文件同时也会写入到自身的Relay Log文件中)


Replication概念

  • MySQL Replication技术是一个日志复制过程,在复制过程中一台服务器充当主,一台或多台其他服务器充当从服务器;

  • 从服务器到主服务器拉取二进制日志文件,将日志文件解析成相应的SQL语句,然后在从服务器上重新执行一遍主服务器的操作,通过这种方式保证数据的一致性。


主从复制配置步骤:

  • 设置server-id(服务器标识,在一组主从中不能重复)

  • 开启二进制日志并指定二进制日志文件保存的路径

  • 记录bin-log文件和bin-log(position)位置

  • 若不停在Master时,加入全局锁,将需要同步的数据库备份到Slave节点上,解除全局锁

  • 创建用于同步复制的用户

  • 使用change master 在Slave和Master建立连接(Slave节点设置主服务器)

  • 启动Slave

  • 检查Slave的状态



Step1:配置master和slave的/etc/my.cnf文件

##Master

[mysqld]
basedir=/usr/local/mysql
datadir=/data/mysql/mysql
port=3306
socket=/var/lib/mysql/mysql.sock

server-id=1                             #服务标识
log-bin=/data/mysql/binlog/mysql-bin    #binlog日志文件保存的路径
binlog-cache-size=10m                   #binlog日志缓存大小
sync-binlog=1                           #每隔N秒将缓存中的二进制日志记录写回硬盘
expire_logs_days=30                     #二进制日志文件过期时间(自动清理时间)


##Slave

[mysqld]
basedir=/usr/local/mysql
datadir=/data/mysql/mysql
port=3306
socket=/var/lib/mysql/mysql.sock

server_id=2
relay-log=/data/mysql/binlog/mysql-relay-bin
skip_slave_start
read_only=1
replicate-wild-do-table=testdb1.%        #指定需要同步的数据库
replicate-wild-do-table=testdb2.%        #指定需要同步的数据库
                                         #(与之对应的是replicate-wild-ignore-table)


Step2:手动同步数据库到slave

1、锁定Master的表的写操作(不要退出终端)

mysql> flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)


2、Master上备份数据库并传到Slave上

[root@node1 ~]# mysqldump -uroot -predhat testdb1 > /root/testdb1.sql
[root@node1 ~]# tar zcf testdb1.tar.gz testdb1.sql

[root@node1 ~]# rsync -av /root/testdb1.tar.gz 192.168.1.211:/root/
[root@node1 ~]# scp /root/testdb1.tar.gz root@192.168.1.211:/tmp/


3、Slave上创建同步的数据库并导入数据文件

[root@node2 ~]# mysql -uroot -predhat -e 'create database testdb1'
[root@node2 ~]# mysql -uroot -predhat testdb1 < testdb1.sql 
mysql> show tables;
+-------------------+
| Tables_in_testdb1 |
+-------------------+
| tt1               |
| tt2               |
+-------------------+


Step3:Master创建同步的用户

1、Master解除锁定

mysql> unlock tables;

2、创建同步用户

mysql> grant replication slave on *.* to 'repl_user'@'192.168.1.211' identified by 'repl_passwd';
mysql> flush privileges;


Step4:Slave连接Master,将node1设置为自己的主服务器

1、查看Master的master-log-file文件和position位置

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      120 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+


2、Slave上连接Master,并启动slave

mysql> 
change master to
master_host='192.168.1.210',
master_user='repl_user',
master_password='repl_passwd',
master_port=3306,
master_log_file='mysql-bin.000001',
master_log_pos=120;

mysql> start slave;


3、Slave上查看slave状态(Slave_IO_Running、Slave_SQL_Running和Seconds_Behind_Master

mysql> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.1.210
                  Master_User: repl_user
                  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: testdb1.%,testdb2.%
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 471
              Relay_Log_Space: 807
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0


Step5:测试主从同步功能

1、Master上创建数据库和表

mysql> insert into tt1(id,name) values(1,'hoai'),(2,'dime');

mysql> create database testdb2;


2、Slave上查看是否同步

mysql> select * from tt1;
+------+------+
| id   | name |
+------+------+
|    1 | hoai |
|    2 | dime |
+------+------+
2 rows in set (0.00 sec)


mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
| testdb1            |
| testdb2            |
+--------------------+
6 rows in set (0.00 sec)


本文转自 HMLinux 51CTO博客,原文链接:http://blog.51cto.com/7424593/1752364
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
SQL 关系型数据库 MySQL
mysql主从复制概述和配置
【10月更文挑战第22天】MySQL 主从复制是一种将主服务器的数据复制到一个或多个从服务器的技术,实现读写分离,提高系统性能和可用性。主服务器记录变更日志,从服务器通过 I/O 和 SQL 线程读取并应用这些变更。适用于读写分离、数据备份和恢复、数据分析等场景。配置步骤包括修改配置文件、创建复制用户、配置从服务器连接主服务器并启动复制进程。
179 1
|
3月前
|
存储 关系型数据库 MySQL
环比、环比增长率、同比、同比增长率 ,占比,Mysql 8.0 实例(最简单的方法之一)(sample database classicmodels _No.2 )
环比、环比增长率、同比、同比增长率 ,占比,Mysql 8.0 实例(最简单的方法之一)(sample database classicmodels _No.2 )
179 1
|
3月前
|
SQL 前端开发 关系型数据库
全表数据核对 ,行数据核对,列数据核对,Mysql 8.0 实例(sample database classicmodels _No.3 )
全表数据核对 ,行数据核对,列数据核对,Mysql 8.0 实例(sample database classicmodels _No.3 )
75 0
全表数据核对 ,行数据核对,列数据核对,Mysql 8.0 实例(sample database classicmodels _No.3 )
|
20天前
|
NoSQL 关系型数据库 Redis
《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群
《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群
81 14
|
1月前
|
关系型数据库 MySQL 数据库
docker高级篇(大厂进阶):安装mysql主从复制
docker高级篇(大厂进阶):安装mysql主从复制
107 24
|
3月前
|
存储 关系型数据库 MySQL
MySQL主从复制原理和使用
本文介绍了MySQL主从复制的基本概念、原理及其实现方法,详细讲解了一主两从的架构设计,以及三种常见的复制模式(全同步、异步、半同步)的特点与适用场景。此外,文章还提供了Spring Boot环境下配置主从复制的具体代码示例,包括数据源配置、上下文切换、路由实现及切面编程等内容,帮助读者理解如何在实际项目中实现数据库的读写分离。
200 1
MySQL主从复制原理和使用
|
3月前
|
SQL 关系型数据库 MySQL
Mysql中搭建主从复制原理和配置
主从复制在数据库管理中广泛应用,主要优点包括提高性能、实现高可用性、数据备份及灾难恢复。通过读写分离、从服务器接管、实时备份和地理分布等机制,有效增强系统的稳定性和数据安全性。主从复制涉及I/O线程和SQL线程,前者负责日志传输,后者负责日志应用,确保数据同步。配置过程中需开启二进制日志、设置唯一服务器ID,并创建复制用户,通过CHANGE MASTER TO命令配置从服务器连接主服务器,实现数据同步。实验部分展示了如何在两台CentOS 7服务器上配置MySQL 5.7主从复制,包括关闭防火墙、配置静态IP、设置域名解析、配置主从服务器、启动复制及验证同步效果。
135 0
Mysql中搭建主从复制原理和配置
|
2月前
|
关系型数据库 MySQL 数据库
【赵渝强老师】启动与关闭MySQL数据库实例
MySQL数据库安装完成后,可以通过命令脚本启动、查看状态、配置开机自启、查看自启列表及关闭数据库。本文提供了详细的操作步骤和示例代码,并附有视频讲解。
|
3月前
|
存储 关系型数据库 MySQL
mysql 8.0 的 建表 和八种 建表引擎实例
mysql 8.0 的 建表 和八种 建表引擎实例
44 0
|
3月前
|
存储 关系型数据库 MySQL
Key_Value 形式 存储_5级省市城乡划分代码 (mysql 8.0 实例)
本文介绍了如何使用MySQL8.0数据库中的Key_Value形式存储全国统计用区划代码和城乡划分代码(5级),包括导入数据、通过数学函数提取省市区信息,以及查询5级行政区划的详细数据。
46 0