搭建mysql主从数据库

搭建mhysql主从数据库

一:创建主(master)服务器

1.创建存储文件夹

1.创建主和从的文件夹
mkdir -p  software/mysql/3306  software/mysql/3310 
2.分别在3306和3310 创建conf data 文件夹
cd software/mysql/3306
mkdir conf data
cd software/mysql/3310
mkdir conf data

在这里插入图片描述

2.从容器中拷贝原始配置文件my.cnf

1.创建mytest容器
docker run -it --name mytest -e MYSQL_ROOT_PASSWORD=123 -d mysql
2.进入主文件
cd software/mysql/3306/conf
3.拷贝my.cnf      
   #docker cp 容器名称: 文件地址 目标地址 ./ 当前位置
docker cp mytest:/etc/mysql/my.cnf ./

3.搭建主(master)服务器(docker容器)

docker run \
-it \
--name mysql_3306 \
--privileged \
--network wn_docker_net \
--ip 172.18.12.2 \
-p 3306:3306 \
-v  /usr/local/software/mysql/3306/conf/my.cnf:/etc/mysql/my.cnf \
-v  /usr/local/software/mysql/3306/data:/var/lib/mysql \
-v /usr/local/software/mysql/3306/mysql-files:/var/lib/mysql-files \
-e MYSQL_ROOT_PASSWORD=123 \
-d mysql
1	-it	交互式
2	—name	容器唯一名称
3	-p	映射端口 linux的访问端口: 容器内的运行程序端口(3320:3306)
4	-privileges	开放权限 (默认值true)
5	—network	自定义网络
    —ip	自定义ip
6	-v	卷: 与宿主(linux)挂载文件或文件夹
7	-e	设置容器中运行程序的环境参数 MYSQL_ROOT_PASSWORD=123
8	-d 镜像名称	后台运行

4.防火墙开启指定端口

firewall-cmd --add-port=3306/tcp --permanent 
firewall-cmd --reload
firewall-cmd --list-ports

5.master服务器配置:my.cnf

1.先找到My.cnf所在位置
cd software/mysql/3306/conf
2.修改my.cnf
vim my.cnf
3.配置如下(编辑: 按下i键;退出编辑:按下esc键;退出并存储 :wq)
server-id=200    
log_bin=wnhz-master-logbin    
binlog_format=row

二:创建从(slave)服务器

1.从容器中拷贝原始配置文件my.cnf

1.先进入到3310/conf
  cd software/mysql/3310/conf
2.拷贝文件
 cp my.cnf /usr/local/software/mysql/3310/conf
3.修改my.cnf
server-id=201
log_bin=wnhz-slave-01-logbin
relay_log=wnhz-mysql-relay-logbin
read-only=1

2.创建slave容器

docker run \
-it \
--name mysql_3310 \
--privileged \
--network wn_docker_net \
--ip 172.18.12.3 \
-p 3310:3306 \
-v  /usr/local/software/mysql/3310/conf/my.cnf:/etc/mysql/my.cnf \
-v  /usr/local/software/mysql/3310/data:/var/lib/mysql \
-v /usr/local/software/mysql/3310/mysql-files:/var/lib/mysql-files \
-e MYSQL_ROOT_PASSWORD=123 \
-d mysql

3.master创建用户slave进行主从关联(进入主master进行设置)

create user 'slave'@'%' IDENTIFIED WITH mysql_native_password BY '123';
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'slave'@'%';
flush privileges;

在这里插入图片描述

4.查看master数据

show master status;

在这里插入图片描述

5.进入slave容器,连接mysql(对应上一步查的数据File、Position)

change master to master_host='172.18.12.2', master_user='slave',master_password='123',MASTER_LOG_FILE='wnhz-master-logbin.000001',MASTER_LOG_POS=2647;

6.启动slave

start slave;

7.查询是否成功

show slave status \G;

在这里插入图片描述

7.配置从slave只读权限

create user 'sd'@'%' IDENTIFIED WITH mysql_native_password BY '123';
GRANT SELECT ON *.* TO 'sd'@'%';
flush privileges;	

在这里插入图片描述
在这里插入图片描述

8.如果查询后不是两个YES
在这里插入图片描述

1.关闭slave

stop slave;
  1. 重置slave
reset slave;

3.查询master的数据

show master status;

在这里插入图片描述

4.重新配置

change master to master_host='172.18.12.2', master_user='slave',master_password='123',MASTER_LOG_FILE='wnhz-master-logbin.000001',MASTER_LOG_POS=2647;  

在这里插入图片描述

5.重新运行slave

start slave;

三:如何创建用户并给用户授权

1.创建一个名为 ‘slave’ 的用户

create user 'slave'@'%' IDENTIFIED WITH mysql_native_password BY '123';
--这个命令创建了一个名为 'slave' 的用户,并指定该用户可以从任何主机通过 '%' 的通配符进行连接。
--该用户的身份验证方式是使用 mysql_native_password 插件。
--用户的密码被设置为 '123',你可以根据需要更改密码。

2.权限

GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'slave'@'%';
--这个命令为 'slave' 用户授予了复制从服务器和复制客户端的权限。
--'REPLICATION SLAVE' 权限允许用户作为从服务器(slave)连接到主服务器(master)并进行复制操作。
--'REPLICATION CLIENT' 权限允许用户作为复制客户端连接到其他服务器以获取复制信息。

3.刷新MySQL 的权限配置

flush privileges;
--这个命令刷新了 MySQL 的权限配置,确保新添加的用户和权限生效。

附:设置只读权限的命令

create user 'sd'@'%' IDENTIFIED WITH mysql_native_password BY '123';
GRANT SELECT ON *.* TO 'sd'@'%';
flush privileges;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值