锐安盾-网站安全加速服务

中国站

联系我们

400-002-9968

售前咨询

售后服务

注册 登录

博客 > MySQL知识:MySQL8从零数据开始主从复制

MySQL知识:MySQL8从零数据开始主从复制

  • 标签:
  • MySQL
  • 数据库复制
  • 主从复制

浏览量:595次评论:0次

作者:锐成网络整理时间:2024-08-08 16:35:56

MySQL中复制数据库有读写分离、备份、故障切换等诸多好处,那么MySQL如何复制数据库呢?以下是MySQL8从零数据开始主从复制详细步骤,仅供大家参考。

为什么要复制数据库?
简单来说有以下几个用处:
1. 读写分离,通过MySQL复制可以实现读写分离,将读操作分布到多个不同的服务器上,减轻服务器的压力。
2. 备份,从库可以作为数据的异地实时备份。
3. 故障切换,当主库遇到故障,系统可以切换到从库,实现故障切换。
4. 升级测试 ,从库可作为测试服务器的数据库。
主从复制图示如下:

MySQL知识:MySQL8从零数据开始主从复制


复制数据的步骤

在主库上把数据更改记录到二进制日志(Binary Log)中。

备库将主库上的日志复制到自己的中继日志(Relay Log)中。

备库读取中继日志中的事件,将其在备库上重新执行一遍。



 

MySQL知识:MySQL8从零数据开始主从复制



具体操作步骤
主服务器地址:10.145.1.17从服务器地址:10.145.1.22
分别登录主从服务器上的MySQL

 

MySQL知识:MySQL8从零数据开始主从复制


在主从服务器上分别新建数据库sync
 

MySQL知识:MySQL8从零数据开始主从复制


这样主从服务器上都新建了一个新的数据库sync。
创建复制账号repl,并赋予replication slave权限
create user 'repl'@'10.145.1.%' identified by 'Repl123!@#';
grant replication slave on *.* to 'repl'@'10.145.1.%';

 

MySQL知识:MySQL8从零数据开始主从复制



修改主备数据库的配置文件
主服务器配置
用命令 whereis my.cnf  找到my.cnf文件的位置,然后用vim打开

 

MySQL知识:MySQL8从零数据开始主从复制


在文件中添加:
log_bin = mysql-bin

server_id = 17
这里的log_bin为日志文件名,自己取一个名词, server_id 只要唯一就行。

 

MySQL知识:MySQL8从零数据开始主从复制


systemctl restart mysqld 重启mysql
 

MySQL知识:MySQL8从零数据开始主从复制


重新登录mySQL
输入命令show master status; 
可以看到file那一列变成了mysql-bin.000001,配置成功。

 

MySQL知识:MySQL8从零数据开始主从复制



从服务器配置
退出mysql,找到并编辑my.cnf文件

 

MySQL知识:MySQL8从零数据开始主从复制


添加以下内容:

log_bin = mysql-bin

server_id = 22

relay_log = /var/lib/mysql/mysql-realay-bin

log_slave_updates = 1

read_only = 1
log_bin默认情况下会使用机器名命名,这里设成和主库相同的名称,当然也可以设置成其他名称。
relay_log指定中继日志的位置和名字,log_slave_updates允许备库将其重放事件记录到自身的二进制文件中,read_only会阻止没有权限的线程修改数据。
这里其实只有server_id是必填项,其他都是选填的。

 

MySQL知识:MySQL8从零数据开始主从复制


保存好配置文件后,重启mysql
 

MySQL知识:MySQL8从零数据开始主从复制


重新进入MySQL,使用change master to命令开始复制:
change master to master_host='10.145.1.17',

master_user = 'repl',

master_password = 'Repl123!@#',

master_log_file = 'mysql-bin-000001',

master_log_pos = 0;

输入命令show slave status\G;查看状态
 

MySQL知识:MySQL8从零数据开始主从复制


在主数据库上运行 show processlist\G;显示了来自10.145.1.22的连接,并等待更多的更新。
 

MySQL知识:MySQL8从零数据开始主从复制


在从数据库上show processlist\G;显示等待主服务器的数据。
 

MySQL知识:MySQL8从零数据开始主从复制


好了,现在我们来验证一下:
刚开始都没数据,在主数据库上建表,并插入数据:

 

MySQL知识:MySQL8从零数据开始主从复制


从数据库同步了数据:
第一次show tables没数据,第二次show tables的时候已经同步了主数据库上的数据,也就有了数据。

 

MySQL知识:MySQL8从零数据开始主从复制


自此主从复制设置完成。

重要声明:本文来自编程我也会,经授权转载,有部分增减,版权归原作者所有,不代表锐成观点,转载的目的在于传递更多知识和信息。

我的评论

还未登录?点击登录

微信扫码沟通
微信扫码沟通

微信扫码沟通

售前咨询
合作
售后
return head