基于Docker 配置主从服务器实现 mysql主从复制(8.0)

基于Docker 配置主从服务器实现 mysql主从复制

版本

mysql - latest(8.0)

感谢

这里感谢B站上飞哥在狂神说java这个IP上上传的视频资源

主从复制报错2061:Authentication plugin 'caching_sha2_password' reported error:Authentication require secure connection - 墨天轮

(1条消息) Docker搭建MySQL8主从复制 (全网最详细版)_bright的博客-CSDN博客

ShardingShpere数据库中间件- 专栏 -KuangStudy

(1条消息) ERROR 1776 (HY000): Parameters MASTER_LOG_FILE, MASTER_LOG_POS, RELAY_LOG_FILE and RELAY_LOG_POS can_小伟的博客-CSDN博客

(1条消息) @@GLOBAL.GTID_MODE = OFF 问题_wangxuelei036的博客-CSDN博客

等。

同时感谢 B站CSDN简书 等提供的平台!

mysql - 共同配置

安装mysql
docker pull mysql:latest

选择你自己需要安装的mysql版本,这这里选择的是最新的(latest),对应 8.0,版本这里包含了一个连接的坑,我下文会讲!

如果你不是使用Docker进行安装,而是直接在linux下安装mysql,我推荐教程 - (02~03)

该博客是KaungStudy飞哥提供的文档。

mysql 是否安装成功?
查看安装成功的镜像
docker images
查看docker已安装镜像

存在mysql红框内容就表示安装成功!

mysql 启动
docker run -p 3306:3306 --name mysql-master -e MYSQL_ROOT_PASSWORD=12345678 -d mysql:latest

run : 启动

-p 3306:3306 : 指定映射端口, -p 外部端口:内部端口(容器内部)

--name mysql-master :给容器起别名,起个名称方便以后称呼(我用的主-mysql是mymysql)

-e MYSQL_ROOT_PASSWORD=12345678 : 设置root用户的密码

-d : 后台运行

mysql:latest : mysql:tag,tag就是你选择的msyql版本号

查看mysql-容器是否启动成功?

mysql启动成功后,会打印出当前运行容器的id

或者你自己查看容器状态!

docker ps
查看正在运行的容器列表

这样的就表示启动成功了。

mysql 配置master

先进入 mysql容器内部,这里我的主mysql叫mymysql,命令如下:

docker exec -it mymysql /bin/bash
进入容器

可以看到下一行的root@已经不一样了,并且该id就是你当前进入的容器的容器id,

查看容器内部配置文件所在,我已经把my.cnf所在截图了,如下:

my.cnf路径

/etc/mysql/my.cnf (这个有用!)

OK,我感觉我是不是废话太多了,那我们下面就加快进度吧!

拿到路径之后,我们先进入my.cnf,

vim进入my.conf

好吧,容器内部没装vim,你可以自己去安装。

apt-get update

apt-get install vim

我就没有这么去安装了我直接用了docker cp

使用 docker cp 配置 my.cnf
  1. 将my.cnf 从容器复制到主机上
docker cp 容器id(或容器名称):/etc/mysql/my.cnf /docker/mysql/master(或slavel1)/my.cnf

将容器id或名称为XXX的容器在 /etc/mysql/my.cnf 复制给主机路径下的/docker/mysql/master/my.cnf文件

  1. 修改my.cnf(添加对应的主从配置)

    主节点如下:

[mysqld]
## 同一局域网内注意要唯一
server-id=100  
## 开启二进制日志功能,可以随便取(关键)
log-bin=master-bin
binlog-format=ROW     // 二级制日志格式,有三种 row,statement,mixed
binlog-do-db=数据库名  //同步的数据库名称,如果不配置,表示同步所有的库

从节点如下:

[mysqld]
# 设置server_id,注意要唯一
server-id=201  
# 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin   
# relay_log配置中继日志
relay_log=mysql-relay-bin  
# 设置为只读,该项如果不设置,表示slave可读可写
read_only=1  
  1. 将修改后的my.cnf复制回容器中
docker cp /docker/mysql/master(或slavel1)/my.cnf 容器id(或容器名称):/etc/mysql/my.cnf 

就是和步骤1的指令路径反一下。

  1. 重启服务
docker restart 容器名称/容器id

注意每个主从节点的server-id都要唯一!!!

master(主)配置

经过共同配置之后呢,我们先进入主-mysql中,查看对应配置从节点需要的信息。

进入mysql内部
# 进入容器内部
docker exec -it 容器id/容器名称 /bin/bash
# 进入mysql
mysql -uroot -p密码
进入master-mysql

登录成功

查看master服务的binlog文件名和位置(master节点执行)
show master status;
master服务的binlog文件名和位置

OK,接下来配置从节点。

slave(从)配置

它一开始的步骤和主的一样,都是共同配置,唯一不一样的是修改 my.cnf不一样,请注意!

进入mysql内部
# 进入容器内部
docker exec -it 容器id/容器名称 /bin/bash
# 进入mysql
mysql -uroot -p密码
进入slave1-mysql

)

登录成功

执行 change master to
change master to master_user='root',master_password='mysql8.0',master_host='192.168.168.101',master_port=3306,get_master_public_key=1, master_log_file='master-bin.000004', master_log_pos=1097, master_connect_retry=30;

master_host :Master库的地址
master_port:Master的端口号,指的是容器的端口号
master_user:用于数据同步的用户
master_password:用于同步的用户的密码
master_log_file:指定 Slave 从哪个日志文件开始复制数据,即上文中提到的 File 字段的值
master_log_pos:从哪个 Position 开始读,即上文中提到的 Position 字段的值
master_connect_retry:如果连接失败,重试的时间间隔,单位是秒,默认是60秒get_master_public_key=1: 解决 Authentication plugin 'caching_sha2_password' reported error:Authentication require secure connection 问题导致的密码插件问题 - msyql8.0才出现的问题。

注意: 当前字段中说的文中指的是 在锚点 - 查看master服务的binlog文件名和位置(master节点执行)那里查询出来的主节点信息。

启动slave
start slave;
查看是否配置成功?
show slave status \G

\G : 表示换行。

查询从节状态

两个 YES 就成功了!

配置从节点时,出现的各种问题?

飞哥这里已经例举了一大部分,我就不一一讲了,放置传送门: https://www.kuangstudy.com/zl/sharding#1369645557613608962

我讲一下我的主机配置时出现的问题?

  1. Authentication plugin 'caching_sha2_password' reported error:Authentication require secure connection 问题导致的密码插件问题 - msyql8.0才出现的问题。

从配置锚点 - 执行 change master to里已经加上了该解决的配置了,看 get_master_public_key=1,从博客中得到的解决方法(在评论那块)。

  1. No query specified

    show slave status\G;

    多了个分号(;)。

  1. The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it).

    额,我是因为我的从节点连接主节点配置那里的ip地址配置错了。

  2. Parameters MASTER_LOG_FILE, MASTER_LOG_POS, RELAY_LOG_FILE and RELAY_LOG_POS can

    由于之前用的master_auto_position=1,现在改回0,重新用pos方法change就可以了。

    # 停止slave
    stop slave;
    # 清楚配置
    reset slave;
    change master to master_auto_position=0;
    change master to master_user='root',master_password='mysql8.0',master_host='192.168.168.101',master_port=3306,get_master_public_key=1, master_log_file='master-bin.000004', master_log_pos=1097, master_connect_retry=30;
    # 启动slave
    start slave;
    

使用 root用户 造成从(slavel-mysql)服务器可以操作数据(crud)?

(2条消息) mysql从库不能写吗_mysql的主从复制,从库设为只读不能写_L NEO的博客-CSDN博客

我建议给从库分配一个普通用户账号并仅分配对应权限!

# 例如以下,创建一个名称为 'username' 密码为 'password' 且任何ip都可以连接的账号 
create user 'username'@'%' identified by 'password';
# 分配权限,例如我只给他 SELECT 权限
grant select on *.* to 'username'@'%';
# 需要刷新
flush privileges;
# 查看效果
show grants for 'username'@'%';

查看权限

然后你就可以自己去测试了,如果先看账号创建成功了吗?

# 查询 mysql 库下的用户表信息
select host,user from mysql.user;
查看用户表信息

权限分配成功后,我这边使用navicat对'username'账号进行登录,并(修改、新增、删除)数据,出现下图错误信息!

无权限提示
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,047评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,807评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,501评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,839评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,951评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,117评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,188评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,929评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,372评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,679评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,837评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,536评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,168评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,886评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,129评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,665评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,739评论 2 351

推荐阅读更多精彩内容