centos7中搭建数据库复制集群

本文档详细介绍了在CentOS7环境下,如何配置MySQL8.x的主从复制,包括关闭防火墙、修改配置文件、创建同步用户、设置主从库、启动复制以及测试数据同步的过程。通过这个配置,实现了两台服务器之间的数据库即时同步。
摘要由CSDN通过智能技术生成

一、基础环境

  • 服务器:centos 7
  • 数据库:mysql 8.x

二、实现效果

  • 搭建数据库集群【目前就是实现2台,1台主服务器,1台从服务器】
  • 实现数据库的即时同步

三、实现原理

  • 复制概述
    复制是指将主数据库的DDL和DML操作通过二进制日志传到从服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库的数据保持同步。
    mysql支持一台主库同时向多台从库进行赋值,从库也可以作为其他从库服务器的主库,实现链状复制。
  • 复制原理
    在这里插入图片描述

四、配置主库

  • 关闭防火墙
 // 关闭
 syetemctl stop firewalld
 // 查看状态 确定是 dead
  syetemctl status  firewalld
  • 修改 my.cnf
 vi  /etc/my.cnf
 # mysql 服务器id ,保证整个集群环境中唯一
server-id = 1

# mysql binlog 日志的存储路径和文件名
log-bin=/var/lib/mysql/mysqlbin

# read-only ,1代表只读 ,0 代表 读写
read-only=0

#忽略的数据库,指不需要同步的数据库
binlog-ignore-db=mysql

#指定同步的数据库,如果不指定,就是除忽略的数据库外的其他数据库
#binlog-do-db=db01
  • 保存后,重启mysql
 syetemctl restart mysqld
  • 创建同步数据账户,并进行授权操作
-- 使用mysql数据库
use mysql

-- 创建用户
create user  myuser identified by '123456';
-- 查看用户
select user, host, authentication_string,plugin from user where user ='myuser';

-- 修改用户密码及密码加密方式
  alter user 'myuser'@'%' identified with mysql_native_password by '123456';
  【 默认加密机制是 caching_sha2_password,这种方式不怎么支持远程连接,所以要修改一下就可以连接了】

-- 授予myuser用户全局级全部权限:
 GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' WITH GRANT OPTION;
 
-- 生效(刷新权限)
FLUSH PRIVILEGES;
  • 查看 master 状态
show master status;

在这里插入图片描述

  • 主库配置结束

五、配置从库

  • 关闭防火墙
 // 关闭
 syetemctl stop firewalld
 // 查看状态 确定是 dead
  syetemctl status  firewalld
  • 修改 my.cnf
 vi  /etc/my.cnf
# mysql 服务器id ,保证整个集群环境中唯一
server-id = 2

# mysql binlog 日志的存储路径和文件名
log-bin=/var/lib/mysql/mysqlbin
  • 保存后,重启mysql
 syetemctl restart mysqld
  • 登录mysql,执行如下命令
change master to master_host='主数据库ip, master_user='myuser',master_password='123456',
master_log_file='mysqlbin.000004', master_log_pos=1149;
  • 命名解释
change master to 
    master_host='主数据库ip       -- 主数据ip地址
  , master_user='myuser'         -- 主数据库登录用户名
  ,master_password='123456'      -- 主数据库登录密码
  ,master_log_file='mysqlbin.000004'  -- 主数据库日志文件名,直接查看 主库的状态截图的file 值
  , master_log_pos=1149;      -- 同步主数据库日志文件起始,直接查看 主库的状态截图的postion 值
  • 开启同步操作
start slave;
  • 查看同步状态
show slave status;

在这里插入图片描述

  • 从库配置结束

六、测试主从复制

  • 在主库创建 数据库,插入数据
-- 创建db01 数据库
create database db01;
-- 创建 t_user表
use db01;

-- 创建表
create table t_user(
   id int(11) not null auto_increment,
   name varchar(50) not null,
   sex varchar(1),
   primary key (id)
)engine=innodb default charset=utf8;

-- 并插入数据
insert into t_user(name,sex) values('Tom','1');
  • 在从库中查看结果
-- 显示数据库
show databases;

在这里插入图片描述

  • 到此,如果显示db01 基本上已经确定复制成功了,后续可以实时操作主库的数据,进行测试复制效果。

写在最后

这一部分的原理和实现步骤,参考 传智播客风清扬老师的mysql教程,在此表达对风清扬老师的感谢和敬意,他是我转编程路上的导师(当然是我单向的,他不知道的)。我也刚开始学习,如有错误请指正,谢谢!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值