Mysql主从复制

发布时间 2023-07-25 23:34:00作者: 菠菜好不好吃

介绍

MySQL主从复制时一个异步的复制过程,底层时基于MySQL数据库自带的二进制日志功能。就是一台或者多台MySQL数据库(slave 从库)从另一台MySQL(master 主库)进行日志的复制然后再解析日志并应用到自身,最终实现从库的数据和主库的数据保持一致。MySQL主从复制时MySQL数据库自带功能,无需借助第三方工具。

MySQL复制过程分为三部:

  • master将改变记录到二进制日志(binary log)
  • slave将master的binary log拷贝到它的中断日志(relay log)
  • slave重做中断日志中的事件,将改变应用到自己的数据库中

配置主库Master

一、修改MySQL数据的配置文件/etc/my.cnf

[mysqld]
	log-bin=mysql-bin	# 启用二进制日志
	server-id=100		# 服务器唯一ID

二、重启数据库

systemctl restart mysqld

三、登录MySQL,执行下面SQL

use mysql;
-- 给192.168.94.10的用户root授予REPLICATION SLAVE权限
GRANT REPLICATION SLAVE ON *.* to 'root'@'192.168.94.10' identified by 'wyw666';

四、在MySQL中查看Master的状态

show master status;

查看master的状态之后,不要再执行其他操作

配置从库slave(Ubuntu20.04.6)

一、修改MySQL数据的配置文件/etc/mysql/mysql.conf.d/mysql.cnf(这里slave的系统使用Ubuntu20.04.6),主要是自己的安装路径

[mysqld]
	server-id=101 #[必须] 服务器唯一ID

二、重启数据库

systemctl restart mysql

三、登录MySQL数据,执行下列SQL:

change master to master_host='192.168.94.128', master_user='root', master_password='wyw666', master_log_file='mysql-bin.000001', master_log_pos=446;

-- 启动slave
start slave;

四、执行SQL,查看从数据库状态

show slave status\G;

成功!!!