首页 > 数据库 >Mysql主从复制

Mysql主从复制

时间:2023-03-26 21:03:46浏览次数:39  
标签:主从复制 二进制 数据库 Mysql mysql 日志 data

一、主从复制

1、主从复制作用

主从复制:主设备通过二进制日志传输到从设备,从设备通过二进制日志和主同步数据。

作用:负载均衡读操作,备份(实时备份,不能替换手动的备份),高可用和故障切换,数据分布,Mysql升级。

2、主从复制原理

 

1主节点负责用户的写操作,用户发起写操作后,会修改数据库
2.数据库修改后,会更新主节点上的二进制日志
3.主服务器会产生一个 dump线程, 一边读取二进制日志
一边将二进制日志通过 网络传给从服务器
4.从服务器会开启io线程,接收主服务器的二进制日志
5 如果数据量较大,不会存在内存中 ,会写入中继日志,这时只是生成
了一个文件,并没有同步
6.从服务器再开启 sql线程将 中继日志中 操作写入数据库完成更新

 

MySQL主从复制实战

master:192.168.10.136 server_id=120

slave:192.168.10.135 server_id=130

实验之前得保证两台机器能够通过ssh远程连接

关闭2台服务器的firewalld以及selinux,重置mysql密码为Admin@123

[root@localhost ~]#vim  /etc/my.cnf
#修改文件
[mysqld]
server_id=100
log-bin=/data/mysql/mysql-bin

[root@localhost ~]#mkdir /data/mysql/   -p
#建立文件夹
[root@localhost ~]#chown mysql.mysql /data/ -R
#注意修改权限
[root@localhost ~]#systemctl restart mysqld


mysql -uroot -p'Admin@123' 

  

主节点配置

vim  /etc/my.cnf
[mysqld]下一行添加内容:
server_id=11
#serverid建议配置为ip地址最后8位
log-bin=/data/mysql/mysql-bin
#指定二进制日志文件保存位置为/data/mysql/,保存后退出
mkdir  -p /data/mysql
#创建保存二进制文件的目录
chown mysql:mysql -R /data/
#目录的属主属组都给到mysql用户
systemctl restart mysqld
#重启数据库
mysql -uroot -p'Admin@123'
#登录数据库
grant replication slave on *.* to test@'192.168.30.%' identified by 'Admin@123';
#创建复制用户只要是192.168.30开头的地址都可使用用户名test密码Admimin@123登录数据库。
show  master status;
#查看主从复制从那个二进制日志的那个初始节点开始,从服务器配置需要依赖此条查看结果,如下图

  

从节点配置

vim  /etc/my.cnf
[mysqld]下一行添加内容:
server_id=12
#serverid建议配置为ip地址最后8位
log-bin=/data/mysql/mysql-bin
#指定二进制日志文件保存位置为/data/mysql/
relay-log=relay-log-bin#开启中继日志
relay-log-index=slave-relay-bin.index#添加,定义中继日志文件的位置和名称,保存后退出
mkdir  -p /data/mysql
#创建保存二进制文件的目录
chown mysql:mysql -R /data/
#目录的属主属组都给到mysql用户
systemctl restart mysqld
#重启数据库
mysql -uroot -p'Admin@123'
#登录数据库
help change master to
#可以查看配置帮助复制出来修改,或直接复制下面模板
CHANGE MASTER TO
  MASTER_HOST='192.168.30.11', 
#主服务器主机ip
  MASTER_USER='test',
#主从复制登录用户名
  MASTER_PASSWORD='Admin@123',
#主从复制登录用户名的密码
  MASTER_PORT=3306,
#主服务器数据库端口
  MASTER_LOG_FILE='mysql-bin.000001',
#从那个二进制日志开始复制,show master status;看到的结果
  MASTER_LOG_POS=448;
#从二进制日志的那个at节点开始复制,show master status;看到的结果
start slave;
#开启主从复制
show  slave status\G
#查看主从复制状态,找到Slave_IO_Running: Yes    Slave_SQL_Running: Yes 此2个参数为yes则主从复制开启完成。
 

  

实验结果

主数据库:
create  databases   test1;
#创建一个test1测试库
备数据库:
show  databases;
#查看是否同步到test1库

  

 

标签:主从复制,二进制,数据库,Mysql,mysql,日志,data
From: https://www.cnblogs.com/trist-commot/p/17245038.html

相关文章

  • 搭建主备MySQL
    拉取镜像dockerpullmysql:5.7创建主备容器dockerrun-itd--namemysql-master--cpu-period=1000000--cpu-quota=500000--memory512M--rm-eMYSQL_ROOT_PASSWO......
  • Mysql--底层结构、Redolog/Undolog/Binlog详解与区别、通过Binlog恢复数据、主从复制
    一、MySQL底层执行原理详解MySQL的内部组件结构大体来说,MySQL可以分为Server层和存储引擎层两部分。1、Server层主要包括连接器、查询缓存、分析器、优化器、执行器等,涵......
  • MySQL主从复制架构
    MySQL主从复制架构一、MySQL集群概述1、集群的主要类型高可用集群(HighAvailableCluster,HACluster)高可用集群是指通过特殊的软件把独立的服务器连接起来,组成一个能够提供......
  • MySQL 基础
    基础入门MySQL数据库三大范式为了建立冗余较小,结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就成为范式。a.第一范式确保每列......
  • mysql8.0远程连接不上怎么回事?
    我的环境:Ubuntu18 我的连接不上,后来发现是配置问题。sudovim/etc/mysql/mysql.conf.d/mysqld.cnf把bind-address改为0.0.0.0  重启mysql服务sudosystemct......
  • mysql 8.0如何创建用户并赋予权限?
    下面1,2,3命令都是在mysql里面敲,4是在linux敲1.创建用户createuser'liqi'@'%'identifiedby'liqi1234';参数说明:%代表通配所有host地址权限(可远程访问)by后......
  • Python--模块--pymysql
    如何使用?建立连接--》建立游标--》执行命令...#pip3installpymysqlimportpymysqlconn=pymysql.connect(host="127.0.0.1",port=3306,database="day35",user......
  • mysql 学习笔记
    ......
  • Mysql练习题
    ......
  • 【Python】连接MySQL报错:RuntimeError 'cryptography' package is required for sha25
    ✨报错提示RuntimeError:'cryptography'packageisrequiredforsha256_passwordorcaching_sha2_passwordauthmethods✨解决方案pipinstallcryptography......