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 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MySQL-----主从复制 Slave_SQL_Running:no -> 正文阅读

[大数据]MySQL-----主从复制 Slave_SQL_Running:no

?? ? ?主从复制的原理图:?

? ? ? ??主服务器是将数据更新(增删改查语句)写入二进制日志(binary log) 后,master通知存储引擎提交事务。

从服务器有两个线程,I/O线程和SQL线程。从服务器通过I/O线程(工作线程)读取主服务器中的二进制日志后并写入中继日志(relay log),relay log存放数据,保证二进制日志中的事件,数据不会丢失,SQL线程把relay log转换成SQL语句并从relay log中读取事件,同时重放其中的事件更新slave数据,保证slave和master数据一致。

主从复制特点:

? ? ? ? 1、异步复制

? ? ? ? 2、主从复制不一致比较常见

? ? ? ?主从复制的实战

环境说明:?

  • 两台CentOS7虚拟机(Master,Slave)这儿是作为我自己的虚拟机的IP
  • Master_IP:192.168.21.131
  • Slave_IP:192.168.21.135
  • 注意:UUID不相同,防火墙要关闭

复制的基本原则

  • 每个Slave只有一个Master
  • 每个Slave只能有一个唯一的服务ID
  • 每个Master可以有多个Slave

主服务器的配置:

在配置文件/etc/my.cnf [mysqld]部分下插入:

[mysqld]

log-bin=mysql-bin? ?#开启二进制日志

server-id=131? ?#设置server-id,建议使用ip的最后三位

?? ? ? 从服务器slave配置:

在配置文件/etc/my.cnf [mysqld]部分下插入:

[mysqld]

relay-log=mysql-relay? ?#开启中继日志

server-id=135??#设置server-id,建议使用ip的最后三位

最后两台服务器配置完成后要重启MySQL服务? ?systemctl restart mysqld.server?

? ? ? ? 在主机上建立账户并授权slave

create user 'root'@'%'identified with mysql_native_password by '自己的数据库密码'; #建立复制root用户授权root用户
select host,user from mysql.user; #查看建立的账户
grant replication slave on *.* to 'root'@'%'; #授权slave
flush privileges;  #刷新权限
show master status\G; #查询master的状态

记录结果中的file和position的值

注意:执行完此步骤后不要在操作主服务器MySQL,防止主服务器状态值发生变化。

从服务器操作(告知从服务器二进制文件名与位置)

mysql> change master to master_host = '192.168.21.131',  #主库的IP地址 
    -> master_user = 'root',   #在主库上创建的复制账号
    -> master_password = '你的密码',  #在主库上创建的复制账号密码
    -> master_log_file = 'mysql-bin.000001',   #开始复制的二进制文件名(从主库查询结果中获取)
    -> master_log_pos = 534;  #开始复制的二进制文件位置(从主库查询结果中获取)

? ? ? 查看从服务器状态

start slave;   //开启复制
show slave status\G;   //查看主从复制是否配置成功

当显示出图片中的这三个表示状态正常。

学习过程中的错误

错误一:?从服务器Slave_SQL_Running:no 代表salve不同步

解决办法:

stop slave;#先停掉slave
set global sql_slave_skip_counter=1;  #跳过错误步数,后面步数可变  
start slave; #在启动slave
show slave status\G;#查看同步状态 

显示线程都为yes了,可以主从复制了。

错误二:主从root用户授权并改动密码插件为mysql_native_password

因为数据库是8的版本,默认caching_sha2_password,我们连接客户端需要数据插件为mysql_native_password

mysql> update user set authentication_string = '' where user='root';
mysql> alter user 'root'@'%' identified with mysql_native password by '密码';
mysql> flush privileges;
mysql> select user,host,plugin from mysql.user;

? 错误三:slave_IO_Running:connecting 或no slave_SQL_Running:no 查看自 己的防火墙是否为关闭状态

systemctl start firewalld //启动

systemctl enable firewalld //开机启动

systemctl stop firewalld //关闭

systemctl disable firewalld //取消开机启动

在进入Mysql之后,查看同步状态 show status\G;

slave_IO_Running和slave_SQL_Running都为yes就显示同步成功。

写入数据测试:

使用数据库的命令,在主服务器写入数据。

从服务器查看数据是否同步?

?在主服务器创建的数据在从服务查询出来就表示成功。

总结:主从复制之前先关闭防火墙,selinux并iptables的规则的注意。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-02-07 13:47:24  更:2022-02-07 13:48: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/24 13:07:44-

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