欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > MySQl高级篇-主从复制

MySQl高级篇-主从复制

2024/10/25 14:28:17 来源:https://blog.csdn.net/ShockChen7/article/details/140421213  浏览:    关键词:MySQl高级篇-主从复制

主从复制

复制的基本原理

slave会从master读取binlog来进行数据同步
在这里插入图片描述
MySQL复制过程分成三步:

  1. master将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events;
  2. slavemasterbinary log events拷贝到它的中继日志(relay log) ;
  3. slave重做中继日志中的事件,将改变应用到自己的数据库中。MySQL复制是异步的且串行化的

复制的基本原则:

  1. 每个slave只有一个master
  2. 每个slave只能有一个唯一的服务器ID
  3. 每个master可以有多个salve

复制的最大问题是延迟。

一主一从常见配置

准备工作

一、mysql版本一致且后台以服务运行

二、主从都配置在[mysqld]结点下,都是小写

服务器配置

一、主机修改my.cnf配置文件:

1.、[必须]主服务器唯一ID:

server-id=1

2、[必须]启用二进制日志(指定日志存放位置)

log-bin=/var/lib/mysql/mysql-bin

3、 [可选]启用错误日志

log-err=自己本地的路径/mysqlerr

4、[可选]根目录

basedir="本地路径"

5、[可选]临时目录

tmpdir=“自己本地路径”

6、[可选]数据目录

datadir=“自己本地路径/Data/”

7、主机,读写都可以

read-only=O

8、[可选]设置不要复制的数据库

binlog-ignore-db=mysql

9、[可选]设置只复制某个数据库

binlog-do-db=需要复制的主数据库名字
二、从机修改my.cnf配置文件:

1、[必须]从服务器唯一ID

server-id=2

2、[可选]启用二进制日志

log-bin=/var/lib/mysql/mysql-bin
三、配置文件,请主机+从机都重启后台mysql服务

linux中:

service mysql stop
service mysql start

如果你和我一样是用的docker容器可以这样重启:

docker restart xxxxxx
四、在主机上建立帐户并授权slave

在主服务器上执行此命令,允许从服务器使用指定的用户名和密码连接到主服务器,并读取二进制日志进行数据复制。

创建用户并设置密码:

CREATE USER 'xxxx'@'从机器数据库IP' IDENTIFIED BY '123456';

授予用户复制权限:

GRANT REPLICATION SLAVE ON *.* TO 'xxxx'@'从机器数据库IP';

刷新权限

FLUSH PRIVILEGES;
  • GRANT 是MySQL中的一个命令,用于授予用户特定的权限。
  • REPLICATION SLAVE 是授予的权限类型,允许指定用户读取主服务器的二进制日志,以便进行数据复制。
  • ON *.**.*表示权限适用于所有数据库和所有表。也就是说,这个用户可以访问主服务器上的所有数据库进行复制操作。
  • TO 'xxxx'@'从机器数据库IP'xxxx是要创建或更新的用户名,不要使用root
  • IDENTIFIED BY 用于设置或更新指定用户的密码,123456 是该用户的密码。

查询master的状态

show master status;

记录下FilePosition的值
在这里插入图片描述
执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化

五、在Linux从机上配置需要复制的主机

在MySQL命令行中执行以下命令:

CHANGE MASTER TO MASTER_HOST='主机IP',
MASTER_USER='xxxx',
MASTER_PASSWORD='123456',
MASTER_PORT=3306,
MASTER_LOG_FILE='File文件名',
MASTER_LOG_POS=Position数字;

启动从服务器复制功能:

start slave;

查看主从配置状态:

show slave status\G

下面两个参数都是Yes,则说明主从配置成功!

在这里插入图片描述

如果上面的position输错了,可以重置

reset slave;

然后暂停主从复制

stop slave;

重新配置

CHANGE MASTER TO MASTER_HOST='主机IP',
MASTER_USER='xxxx',
MASTER_PASSWORD='123456',
MASTER_PORT=3306,
MASTER_LOG_FILE='File文件名',
MASTER_LOG_POS=Position数字;

然后开启

start slave;
六、主机新建库、新建表、insert记录,从机复制

主机输入:

CREATE DATABASE testdb;
USE testdb;
CREATE TABLE testtable (id INT PRIMARY KEY, value VARCHAR(50));
INSERT INTO testtable VALUES (1, 'Hello World');

在这里插入图片描述

从机自动同步

在这里插入图片描述

七、如何停止从服务复制功能
stop slave;

如果有一段数据暂时不要,从机可以停止主从复制后,从主机那里查询新的position刻度,重新开始复制。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com