前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于docker实现mysql主从复制.md

基于docker实现mysql主从复制.md

作者头像
晓果冻
发布2022-06-17 15:30:52
2540
发布2022-06-17 15:30:52
举报
文章被收录于专栏:一直在努力的Java菜鸡er

基于docker实现mysql主从复制

俩台机器,一主一从,主节点:10.0.8.17,从节点:10.0.8.14
基于docker部署mysql(主从节点都执行)

docker run -p 3306:3306 --name mysql -v /home/mysql/config:/etc/mysql -v /home/mysql/logs:/logs -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d -it --privileged=true mysql:8.0.18

代码语言:javascript
复制
/etc/mysql:mysql默认配置文件路径
/var/lib/mysql:数据存储位置
MYSQL_ROOT_PASSWORD=123456 设置root用户密码
--privileged=true 权限提升 真root权限

修改配置文件

代码语言:javascript
复制
首先 my.cnf,在[mysqld]下增加一行:skip-grant-tables;
重启mysql:docker restart mysql
进入mysql容器:docker exec -it mysql /bin/bash

登录mysql修改密码开放远程连接权限

代码语言:javascript
复制
mysql -uroot -p #提示输入密码,直接回车即可跳过验证
FLUSH PRIVILEGES;#不执行这步会报错
set password for root@localhost = '新密码';
ALTER USER 'root'@'%' IDENTIFIED BY '新密码' PASSWORD EXPIRE NEVER; #修改加密规则 ,
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '新密码' ; #更新一下用户的密码 
grant all privileges on *.* to 'root'@'%' with grant option; #开放远程访问
FLUSH PRIVILEGES;
quit;

再次修改配置

代码语言:javascript
复制
首先 my.cnf,注释skip-grant-tables;
重启mysql:docker restart mysql
进入mysql容器:docker exec -it mysql /bin/bash
mysql -uroot -p #提示需要密码验证,此时就不可以跳过了

配置主从复制

修改主节点配置

代码语言:javascript
复制
mysql的配置文件都保存在 /etc/mysql下(容器内),映射到宿主机目录是 /home/mysql/config

cd  /home/mysql/config
vim my.conf #添加以下内容到[mysqld]

###要给从机同步的库(如果不写,默认全部同步)
##binlog-do-db=db01
###不给从机同步的库(多个写多行)
##binlog-ignore-db=mysql
##binlog-ignore-db=information_schema
##binlog-ignore-db=performance_schema
##binlog-ignore-db=performance_schema
##binlog-ignore-db=sys
###自动清理 7 天前的log文件,可根据需要修改
expire_logs_days=7
#### 开启二进制日志功能,可以随便取(关键)
log-bin=master-bin
### 唯一标识
server-id=888

重启主节点mysql docker restart mysql 修改从节点配置

代码语言:javascript
复制
vim /home/mysql/config/my.conf #添加以下内容到[mysqld]  ,容器内对应路径/etc/mysql/my.conf
##要给从机同步的库(如果不写,默认全部同步)
#binlog-do-db=db01
##不给从机同步的库(多个写多行)
#binlog-ignore-db=mysql
#binlog-ignore-db=information_schema
#binlog-ignore-db=performance_schema
#binlog-ignore-db=performance_schema
#binlog-ignore-db=sys
##自动清理 7 天前的log文件,可根据需要修改
expire_logs_days=7
### 开启二进制日志功能,可以随便取(关键)
log-bin=slave-bin
## 唯一标识
server-id=666

重启从节点mysql

主从同步

查看主节点状态

代码语言:javascript
复制
--通过该命令可以查看master数据库当前正在使用的二进制日志及当前执行二进制日志位置
show master status

进入从节点开始同步

代码语言:javascript
复制
change master to
master_host='10.0.8.17',
master_user='root',
master_password='123456',
MASTER_LOG_FILE='master-bin.000001',
MASTER_LOG_POS=7475567 ;

start slave;  ##slave:从节点 master:主节点   stop slave 停止slave。reset slave重启slave。 reset master重启master

master_host :主节点的地址,指的是容器的独立ip
master_port :主节点的端口号,指的是容器的端口号(默认3306)
master_user :用于数据同步的用户
master_password :用于同步的用户的密码
master_log_file :指定从节点从哪个日志文件开始复制数据,即上文中提到的 File 字段的值
master_log_pos :从哪个 Position 开始读,即上文中提到的 Position 字段的值

查看状态

代码语言:javascript
复制
​	show slave status;
如下所示即为成功,现在在主节点新建表或者增加数据,在从节点即可看到。

image-20211221204040678
image-20211221204040678
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基于docker实现mysql主从复制
    • 基于docker部署mysql(主从节点都执行)
    相关产品与服务
    容器镜像服务
    容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档