2024年1月25日发(作者:)
老男孩教育-mysql实践进阶案例精讲-19-mysql主从复制实践详解
我们在实际的项目中,经常遇到多台服务器同时访问同一个数据库的场景。这时候,我们就需要考虑如何让数据同步到各个服务器,以保证数据的一致性。Mysql主从复制便是一种可行的解决方案。
Mysql主从复制即将一个Mysql实例作为主库,其它的实例作为从库,通过将主库的变更同步到从库来实现数据的异地备份和读写分离。当有大量的读操作时,从库可以为主库减轻负担,并且从库也可以作为灾备库,在主库故障时起到保障作用。
下面我们来看一下如何实现Mysql主从复制。
1.配置主库
首先需要在主库的配置文件中加入以下配置:
[mysqld]
log-bin=mysql-bin
server-id=1
其中log-bin代表开启二进制日志记录,server-id则是该实例的唯一标识。
然后在Mysql客户端中使用如下命令创建一个拥有访问权限的从库用户:
grant replication slave on *.* to 'slave'@'%' identified
by '123456';
slave用户的权限是用于连接从库,并获取主库的变更日志。
接着在Mysql客户端中,输入以下命令开启binlog记录:
set global binlog_format='ROW';
这里指定了以行为单位记录binlog,这也是Mysql官方推荐使用的方式。
配置完主库之后,我们需要查看当前主库状态,以便在从库上同步数据。
在Mysql客户端中执行以下命令:
show master statusG
这里注意,主库只在发送第一个完整数据包时,才会记录binlog的状态,所以这里的File字段值只有在主库初次启动或执行FLUSH
LOGS指令时才会改变。
2.配置从库
接下来,我们需要在从库上配置同步主库的信息。
在从库的中加入如下配置:
[mysqld]
server-id=2
注意,这里的server-id需要和主库的server-id不一样,从库的这个值应该在整个集群中是唯一的。
接下来在从库的Mysql客户端中执行以下命令,来连接主库,并获取主库的binlog:
change master to
master_host='192.168.1.1',//主库地址
master_port=3306,//主库端口号
master_user='slave',//从库用户名
master_password='123456',//从库用户密码
master_log_file='mysql-bin.000001',//主库的binlog文件名
master_log_pos=66666;//主库binlog解析的位置
在以上命令中,我们需要替换成和自己实际情况相应的值。
然后输入以下命令,使得从库开始同步主库的数据:
start slave;
从库的一些信息可以通过以下命令进行查看:
show slave statusG
这个命令可以查看从库当前的复制状态,包括主库地址、主库binlog文件名和偏移量等信息。
3.测试主从复制
现在我们的主从复制已经搭建完成了,接下来我们可以进行一些测试。
首先,在主库上创建一个测试表,并往里面插入一些数据:
create table test (id int primary key auto_increment,
name varchar(20));
insert into test (name) values ('Tom'), ('Jerry'),
('Lucy');
然后,在从库上查询刚刚创建的表和数据:
use test;
select * from test;
如果一切正常的话,应该可以查询出主库上创建的test表和数据。
现在,我们在主库上再执行以下命令,来修改表中的数据:
update test set name='Tommy' where id=1;
然后再次在从库上执行查询语句,看看是否能查询到修改后的数据:
select * from test;
如果查询结果中有Tommy,就代表主从复制配置成功了。
至此,我们已经详细介绍了Mysql主从复制的相关操作和配置方法。在实际的运维场景中,这种方式可以有效保证数据的一致性,增强系统的可用性和可靠性。
发布者:admin,转转请注明出处:http://www.yc00.com/web/1706150115a1443523.html
评论列表(0条)