IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> msyql5.7主从复制 -> 正文阅读

[大数据]msyql5.7主从复制

mysql主从复制

合理的mysql主从复制需要3台机器,每台机器上都有mysql。
3台中,一台是master节点,负责数据写入。另外两台负责读取。
绝大多数的业务场景都是高读取、低写入。所以通过3个mysql配置成组合复制就能做出一个mysql的读写分离版本。

主从原理

  1. 当Master节点进行insert、update、delete操作时,会按顺序写入到binlog中。
  2. slave从库连接master主库,Master有多少个slave就会创建多少个binlog dump线程。
  3. 当Master节点的binlog发生变化时,binlog dump 线程会通知所有的salve节点,并将相应的binlog内容推送给slave节点。
  4. I/O线程接收到 binlog 内容后,将内容写入到本地的 relay-log。
  5. SQL线程读取I/O线程写入的relay-log,并且根据 relay-log 的内容对从数据库做对应的操作。
    在这里插入图片描述
    主从复制的详细理论介绍推荐这篇博客

配置主从复制

准备3台机器,每台机器都安装了mysql5.7。编译安装方法可以参考这篇博客:
https://blog.csdn.net/qq_43626147/article/details/124732329

三台机器的ip:
10.0.0.101 master
10.0.0.102 slave1
10.0.0.103 slave2

master主节点配置

mysql -u root -p
Enter password: 123456

# 主节点上创建slave用户,用于和两台slave节点进行复制操作
mysql> CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
# 给slave用户添加复制binlog的权限
mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
# 刷新mysql权限表
mysql> flush privileges;

mysql> exit;
Bye

# 开启binlog功能,这是实现主从复制的关键功能
vim /etc/mysql/conf.d/mysql.cnf
-------------------------------
[mysqld]  # 注意这里是mysqld,不是mysql
server-id=1 # 确保每台master或slave的server id不一样。
log-bin=mysql-bin
binlog_ignore_db=mysql # 不同步mysql库的binlog
# binlog-do-db=xxxx  # 你也可以选择只对某个db进行主从复制,这样性能更好。

# 重启mysql
systemctl restart mysqld

# 查看mysql master状态
mysql -u root -p
Enter password: 123456

mysql> show master status;
# 能显示file就表示binlog启动成功
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      769 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

slave从节点配置

# 编辑配置文件
vim /etc/mysql/conf.d/mysql.cnf
-------------------------------
[mysqld] # 注意这里是mysqld,不是mysql
relay-log=slave-bin
server-id=2

# 重启
systemctl restart mysqld

# 在slave上的mysql主动连接master
mysql -u root -p
Enter password: 123456

# 下面的命令中 master_log_file 和 master_log_pos的值来自主节点配置时show master status;的返回值。
mysql> change master to master_host='10.0.0.101',master_port=3306,master_user='slave',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=769;

# 启动slave
mysql> start slave;

# 查看主从复制是否已启动 ,能出现类似如下的返回说明是正常的,如果没有,等待一会看看或者自行排错。
mysql> show processlist;
+----+-------------+-----------+------+---------+------+--------------------------------------------------------+------------------+
| Id | User        | Host      | db   | Command | Time | State                                                  | Info             |
+----+-------------+-----------+------+---------+------+--------------------------------------------------------+------------------+
|  2 | root        | localhost | NULL | Query   |    0 | starting                                               | show processlist |
|  3 | system user |           | NULL | Connect |   29 | Waiting for master to send event                       | NULL             |
|  4 | system user |           | NULL | Connect |   29 | Slave has read all relay log; waiting for more updates | NULL             |
+----+-------------+-----------+------+---------+------+--------------------------------------------------------+------------------+
3 rows in set (0.00 sec)

# 查看slave的详细信息
mysql> show slave status;

到此主从复制就完成了。
实际上这个属于异步同步模式,是mysql默认的主从复制模式,如果你想实现半同步复制和GTID模式,自行百度,然后修改配置重启mysqld即可。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-24 18:15:37  更:2022-05-24 18:17:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 19:55:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码