centos7中搭建数据库复制集群

centos7中搭建数据库复制集群,第1张

centos7中搭建数据库复制集群 一、基础环境
  • 服务器: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教程,在此表达对风清扬老师的感谢和敬意,他是我转编程路上的导师(当然是我单向的,他不知道的)。我也刚开始学习,如有错误请指正,谢谢!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5660779.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存