MySQL主从数据库复制

目录

背景

解决问题

主从复制原理

主从服务器配置

创建一个有复制权限的mysql账号

启动slave库


背景

此文章只是简单记录了一次mysql主从复制的过程。

有两台MySQL数据库服务器Master和slave,Master为主服务器,slave为从服务器,初始状态时,Master和slave中的数据信息相同,当Master中的数据发生变化时,slave也跟着发生相应的变化,使得master和slave的数据信息同步,达到备份的目的。

解决问题

  • 数据分布
  • 负载均衡(读数据)
  • 数据备份
  • 高可用和故障切换

主从复制原理

这里会开启三个线程:masterIO线程、slaveIO线程、SQL线程

步骤1:主服务器(master)开启bin-log功能,之后会产生二进制日志文件,master的增删改操作会记录到日志文件中。

步骤2:从服务器(slave)把master的bin-log,position之后的内容拷贝到它的中继日志(relay log)。

步骤3:Slave再执行中继日志的内容,把master改变的数据反映到自己的数据中以保持一致。

如下图(网上K来的):

主从服务器配置

主节点:

  1. 启用二进制日志
  2. 为当前节点设置一个全局唯一的server_id
  3. 创建有复制权限的用户账号 REPLIACTION SLAVE

如图,使用vi /etc/my.cnf 命令打开mysql配置文件(我是这个路径)

在[mysqld]部分最后面填加

#主从复制配置

server-id=1  #mysql源唯一标识

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

#log_bin_index =master-bin.index

然后重启master库,运行show master status,将File和Position的值记录下来后面用。

从节点:

  1. 启用中继日志
  2. 为当前节点设置一个全局唯一的server_id
  3. 使用有复制权限的用户账号连接至主节点,并启动复制线程

从节点也类似,找到配置文件进行配置

然后重启slave库,service mysqld restart

创建一个有复制权限的mysql账号

创建账号

create user xiaoming identified by 'xiaoming123';

 授权

GRANT REPLICATION SLAVE ON *.* TO xiaoming @'%' IDENTIFIED 
BY 'xiaoming123' WITH GRANT OPTION;

注意:创建账号时如果提示密码强度不够,可以修改密码强度设置

SHOW VARIABLES LIKE 'validate_password%'; //查询密码强度

set global validate_password_policy=LOW;  //设置密码强度

启动slave库

让slave库连接master库并开始同步数据,这里不改配置文件而是使用CHANGE MASTER TO语句来执行。

change master to  master_host='8.120.22.678',master_user='xiaoming',
master_password='xiaoming123',
master_log_file='mysql-bin.000001',master_log_pos=154;

这里的master_host就是master库的ip(这里我随便写一个)账号密码就是上面所创建的,master_log_file和master_log_pos就是第3步查询到的

然后执行完,再执行show slave status\G

如图,如果此时Slave_IO_Running和Slave_SQL_Running是No,表明slave还没有开始复制过程。

这时候再执行START SLAVE;  然后再运行show slave status\G  可以看到slave已经正常

Slave_IO_Running, 和Slave_SQL_Running都为Yes时,表明slave的I/O和SQL线程都已经开始运行,而且Seconds_Behind_Master不再是NULL。日志的位置增加了,意味着一些事件被获取并执行了。如果你在master上进行修改,你可以在slave上看到各种日志文件的位置的变化,同样,你也可以看到数据库中数据的变化。

测试结果

使用Navicat客户端,无论是执行sql语句还是手动删除一条数据 还是操作数据库或表,在另一个服务器库刷新都能马上看到效果,实时性很强。

ps:我这里主库mysql是5.7版本的,从库是mysql8 [滑稽脸]

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值