mysql主从复制

什么是主从复制

主从复制,即一个MySQL主数据库服务器的数据异步复制到一个或多个MySQL从数据库服务器的过程。

复制原理:

Mysql 中有一种日志叫做 bin 日志(二进制日志)。mysql中的任何修改都会通过自己的 I/O tread(I/O 线程)保存在该二进制日志中。

从服务器上面也会启动一个 I/O thread,通过配置好的用户名和密码, 连接到主服务器上面请求读取二进制日志,然后把读取到的二进制日志写到本地的一个Realy log(中继日志)里面。

从服务器上面同时开启一个 SQL thread 定时检查 Realy log(这个文件也是二进制的),如果发现有更新立即把更新的内容在本机的数据库上面执行一遍。

主从复制的原理其实就是把主服务器上的 bin 日志复制到从服务器上执行一遍,这样从服务器上的数据就和主服务器上的数据相同了。

主从复制配置过程:

  • 主节点:
    启用二进制日志。
    为当前节点设置一个全局唯一的server_id。
    创建有复制权限的用户账号 repl
  • 从节点:
    为当前节点设置一个全局唯一的server_id。
    使用有复制权限的用户账号连接至主节点,并启动复制线程。

测试环境:

主节点:192.168.130.128
从节点:192.168.130.129
mysql版本:mysql5.7.31
linux:centos7

配置主节点

在主服务器上,您必须启用二进制日志记录并配置唯一的服务器ID。需要重启服务器。
编辑主服务器的配置文件 my.cnf

vi /etc/my.cnf

添加如下内容

[mysqld]
log-bin=/var/log/mysql/mysql-bin
server-id=1
innodb-file-per-table =ON
skip_name_resolve=ON

创建日志目录并赋予权限

mkdir /var/log/mysql
chown mysql.mysql /var/log/mysql

重启mysql

service mysqld restart

进入mysql,查看二进制日志是否开启

show global variables like '%log_bin%';

在这里插入图片描述
在主节点上创建有复制权限的用户。
用户名为:repl
登录密码为:qwe123

create user 'repl'@'%' ;
grant replication slave on *.*  to  'repl'@'%'  identified by 'qwe123';
flush privileges;

查看主节点二进制日志列表
在这里插入图片描述
记住file和position,后续需要。
主服务器配置完成。

配置从节点

编辑从节点配置文件

[mysqld]
server-id=2

重启mysql,登录到从服务器上,添加主节点主机,访问主节点的用户名及密码,主节点二进制文件信息。
注意:主节点的二进制文件一定要是二进制列表中的最后一个二进制文件。

CHANGE MASTER TO MASTER_HOST='192.168.130.128',MASTER_USER='repl',MASTER_PASSWORD='qwe123', MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=1271;

启动从服务器的复制线程

start slave;

查看从节点的状态信息

show slave status\G

在这里插入图片描述
状态正常

检查是否成功
主服务器创建一个testdb数据库;

create database testdb;
show databases;

在这里插入图片描述
从服务器查看是否复制了数据库

show databases;

在这里插入图片描述
主从复制成功!由于从服务器仅用于同步主服务器数据,我们可以设置为只读,保持一致性

 set global read_only=1;  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值