主从复制

  1. 准备三台MySQL8数据库服务(使用虚拟机完成)
    通过Vmware链接克隆三台机器

  2. 启动三台机器
    master:192.168.0.109
    slave1:192.168.0.108
    slave2:192.168.0.110

  3. 通过CRT连接

  4. 搭建主从复制
    master、slave1、slave2修改默认配置文件

vim  /etc/my.cnf 

每个文件的id均不同,其它三样配置一样
master: server-id=1
slave1: server-id=3
slave2: server-id=5

server-id=1	#节点唯一标识,不要与其它节点重复
log-bin=mysql-bin #指定日志文件名字
log-slave-updates  #是否根据日志的变化同步数据
slave-skip-errors=all #从节点同步过程中是否跳过错误
  1. 重启Mysql服务检测配置是否生效
SHOW VARIABLES like 'server_id';
  1. 在master节点中执行如下命令:
show master status;

获取信息:

  • 日志文件名称 日志文件变化的位置
    mysql-bin.000002 | 156
  1. 在所有slave节点中执行如下命令:
change master to
master_host ='master节点ip',
master_user='Mysql用户名',
master_password='密码',
master_log_file='日志名称',
master_log_pos=日志变化的位置(数字);
# 下面是我的配置
change master to
master_host ='192.168.0.109',
master_user='root',
master_password='root',
master_log_file='mysql-bin.000002',
master_log_pos=156;
  1. 在从节点继续执行如下命令:
start slave; //开启主从复制
stop slave;//停止主从复制
  1. 查看主从复制是否成功,在从节点执行如下命令:
show slave status;
  1. 问题出现
    ①出现问题:Last_IO_Errno: 2061
    原因:加密方式和解密方式不一致
    解决:修改密码加密规则.进入mysql控制台
ALTER USER '用户名'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
FLUSH PRIVILEGES; //刷新权限

重启MySQL服务
Linux执行:

systemctl restart mysqld;

进入MySQL重启slave

mysql -uroot -proot
start slave
show slave status\G;

②接着又出现了一个问题:
Last_IO_Errno: 13117
因为主服务器和从属服务器具有相同的MySQL服务器UUID;这些UUID必须不同,复制才能工作
克隆的机器才会出现此问题
解决:删除掉这些UUID

rm -rf /var/lib/mysql/auto.cnf

然后重启:

reboot

重启之后查看状态:

mysql -uroot -proot
start slave
show slave status\G;
  1. 出现如下状态代表成功
    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
    在这里插入图片描述

然后,你去master里面的数据库进行修改,另外两个数据库的数据也会跟着同步。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐