美文网首页
Mysql-主从复制

Mysql-主从复制

作者: 枫之沫翊 | 来源:发表于2020-10-22 09:19 被阅读0次

Mysql主从复制的基本原理

核心:Slave从Master读取binlog进行数据同步
Mysql主从复制过程:

  • Master将二进制日志事件写入到binary log日志
  • Slave将二进制日志事件写入到它的relay log中
  • Slave重新执行relay log中的日志事件,将改变应用到数据库

复制的基本原则

  • 每个Slave只有一个Master
  • 每个Slave只能有一个服务器Id
  • 每个Master可以有多个Slave

环境准备

准备两台服务器
192.168.10.241(主)、192.168.10.242(从)

安装mysql

# 查看是否已经安装mysql
rpm -qa|grep -i mysql
# 查找到mysql的文件
find / -name mysql
# 删除存在的mysql文件
rm -rf /etc/selinux/targeted/active/modules/100/mysql /usr/lib64/mysql /usr/share/mysql
# 下载mysql的RPM安装包
cd /opt
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-community-server-5.7.31-1.el7.x86_64.rpm
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-community-client-5.7.31-1.el7.x86_64.rpm
# 使用rpm命令安装
rpm -ivh mysql-community-server-5.7.31-1.el7.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-client-5.7.31-1.el7.x86_64.rpm --force --nodeps

下载mysql


image.png

配置时间同步

# 查看时间
date
# 安装网络时钟
yum install -y ntp
# 设置定时任务
crontab -e
# 输入
*/1 * * * * /usr/sbin/ntpdate ntp4.aliyun.com;

登陆mysql

# 登陆
mysql -u root -p
# 此时没有密码会报错,编辑my.cnf文件,实现免密登陆
vi /etc/my.cnf
# 在[mysqld]下添加
skip-grant-tables
# 重启mysql
service mysqld restart
# 重新登陆mysql
mysql -u root -p
# 刷新系统权限表
flush privileges;
# 设置密码
alter user 'root'@'localhost' identified by 'root';
# 刷新系统权限表
flush privileges;
# 配置远程链接
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
# 刷新系统权限表
flush privileges;
# 退出mysql
exit

主从复制

配置主服务器

vi /etc/my.cnf
# 添加以下内容
log_bin=master_bin
# 日志文件的格式
binlog-format=ROW
# 配置服务器的id(一定要是唯一的)
server_id=1
# 对应需要实现主从复制的数据库(具体的数据库名称)
binlog_do_db=test
# 设置不要复制的数据库
binlog-ignore-db=mysql
# 添加完上述配置后,需要进入到数据库为从库添加授权
grant replication slave on *.* to 'root'@'192.168.10.%' identified by 'root';
# 在这里可能出现1819错误,可能是数据库密码长度导致的
# 查看要求的密码长度
select @@validate_password_length;
# 修改密码长度
set global validate_password_length=4;
set global validate_password_policy=0;
# set global validate_password_mixed_case_count=0;
# set global validate_password_number_count=0;
# 具体可查看 SHOW VARIABLES LIKE 'validate_password%';
# 刷新系统权限表
flush privileges;

配置从服务器

vi /etc/my.cnf
# 添加以下内容
log_bin=master_bin
# 日志文件的格式
binlog-format=ROW
# 配置服务器的id(一定要是唯一的)
server_id=2
# 如果要配置双机热备的话
# log-slave-updates=true

验证主从复制

# 重启主服务器和从服务器
service mysqld restart
# 登陆主服务器,查看主服务器的状态
show master status;
image.png

File:生成的日志文件名
Position:偏移量
Binlog_Do_DB:需实现主从复制的数据库

# 登陆从服务器,执行(指定了主服务器的相关信息,log文件和偏移量,方便文件传输和复制)
change master to master_host='192.168.10.241',master_user='root',master_password='root',master_log_file='master_bin.000001',master_log_pos=600;
# 启动slave的数据同步
start slave;
# 关闭slave的数据同步
stop slave;
# 查看slave的配置信息
show slave status\G;
# 重置slave配置信息
rest slave;
# 重新配置主从
reset master;
image.png

发现slave端一直处在connecting状态
可能原因:1.端口未开放 2.远程连接未授权
解决办法:开放端口并配置远程连接即可

最终效果

image.png

相关文章

  • mysql(十二)

    MySQL-主从复制 主从复制原理 主从复制的前提 1)两台或两台以上的数据库实例2)主库要开启二进制日志3)主库...

  • Mysql-主从复制

    Mysql主从复制的基本原理 核心:Slave从Master读取binlog进行数据同步Mysql主从复制过程: ...

  • mysql-主从复制

    三步骤: 1、master将改变记录到二进制日志。这些记录过程叫做二进制日志事件,binary log event...

  • Mysql-主从复制

    主从复制 by shihang.mai 主从数据间延迟解决方案 业务的持久化层的实现采用分库架构,mysql服务可...

  • mysql-主从复制

    准备工作 现在我有两台mysql服务,一台在windows,一台在liunx虚拟机。 复制的基本原理 slave会...

  • MySQL-主从复制基础

    0.企业高可用性标准 *** 0.1 全年无故障率(非计划内故障停机) 0.2 高可用架构方案 1. 主从复制简介...

  • MySQL-主从复制高级进阶

    半同步复制(了解) 3 解决主从数据一致性问题 半同步复制工作原理的变化 配置半同步复制 过滤复制 说明 主库: ...

  • MySQL-主从复制&读写分离

    零、本文纲要 一、MySQL主从复制 主从复制 主从复制过程 配置主从复制 二、MySQL读写分离 读写分离 Sh...

  • MySQL-数据库主从复制

    0、企业高可用性标准(全年无故障率) 0.1 企业级高可用方案 1、主从复制简介 基于二进制日志复制的主库的修改...

  • 08 MySQL-初识MySQL-事务-隔离鉴别

    如果没有特别说明,都是默认autocommit=1 根据我的第三篇03 MySQL-初识MySQL-事务隔离级别提...

网友评论

      本文标题:Mysql-主从复制

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