MySQL主从复制

2020-12-29  本文已影响0人  攻城老狮

一 master节点

  1. 关闭两个节点的防火墙
systemctl stop firewalld.service
  1. 修改master的配置文件(/etc/my.cnf),添加如下内容:
#mysql 服务ID,保证整个集群环境中唯一
server-id=1
#mysql binlog 日志的存储路径和文件名
log-bin=/var/lib/mysql/mysqlbin
#是否只读,1 代表只读, 0 代表读写
read-only=0
#忽略的数据, 指不需要同步的数据库
binlog-ignore-db=mysql
  1. 重启mysql服务
systemctl restart mysqld
  1. 进入mysql,创建同步数据账户,并授权
# 修改密码复杂度,此版本特殊需求,否则不能设置简短密码
set global validate_password_policy=LOW;
set global validate_password_length=5;
grant replication slave on *.* to 'slave'@'192.168.44.128' identified by 'slave';
flush privileges;
  1. 查看master状态
show master status;
# File : 从哪个日志文件开始推送日志文件
# Position : 从哪个位置开始推送日志
# Binlog_Ignore_DB : 指定不需要同步的数据库
image-20201229171907434.png

二 Slave节点

  1. 使用vmvare的虚拟机拷贝方式,复制一台虚拟机作为从节点。具体虚拟机拷贝的设置可参考虚拟机拷贝的技术文档

  2. 使用mysql自带的函数生成一个UUID

select uuid();
  1. 修改auto.cnf文件中的uuid (由于是通过虚拟机拷贝的,故两台虚拟机的mysql拥有相同的uuid,无法实现主从复制,需要修改) (/var/lib/mysql/auto.cnf)
image-20201229171118292.png
  1. 修改slave的配置文件(/etc/my.cnf),添加如下内容:
#mysql服务端ID,唯一
server-id=2
#指定binlog日志
log-bin=/var/lib/mysql/mysqlbin
  1. 重启mysql服务
systemctl restart mysqld
  1. 进入mysql,指定当前从库对应的主库的IP地址,用户名,密码,从哪个日志文件开始的那个位置开始同步推送日志
change master to master_host= '192.168.44.142', master_user='slave',
master_password='slave', master_log_file='mysqlbin.000001', master_log_pos=595;
  1. 开启同步
start slave;
show slave status;
image-20201229172727043.png
  1. 停止同步
stop slave;

三 检验是否成功

  1. 在主节点创建一个数据库
create database db01;
  1. 在从节点查看
show databases;
上一篇下一篇

猜你喜欢

热点阅读