首页 > 数据库 >Docker搭建Mysql集群

Docker搭建Mysql集群

时间:2024-03-07 23:55:06浏览次数:28  
标签:slave log ## Mysql master mysql 集群 Docker docker

一、新建主服务器示例3307

docker run -p 3307:3306 --name mysql-master \
-v /docker-volume/mysql-master/log:/var/log/mysql \
-v /docker-volume/mysql-master/data:/var/lib/mysql \
-v /docker-volume/mysql-master/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root  \
-d mysql:5.7

1、进入/docker-volume/mysql-master/conf目录下新建my.cnf

cd /docker-volume/mysql-master/conf
vim my.cnf

[mysqld]
## 设置server_id,同一局域网中需要唯一
server_id=101 
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql  
## 开启二进制日志功能
log-bin=mall-mysql-bin  
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M  
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed  
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7  
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062

2、重启实例

docker restart mysql-master

3、进入容器

docker exec -it mysql-master /bin/bash
#登录mysql
mysql -u root -p

4、master容器实例内创建数据同步用户

#创建用户名和密码
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
#授权
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

作者:小熊学Java
链接:https://juejin.cn/post/7138997902558855205
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

二、创建从服务器实例3308

docker run -p 3308:3306 --name mysql-slave \
-v /docker-volume/mysql-slave/log:/var/log/mysql \
-v /docker-volume/mysql-slave/data:/var/lib/mysql \
-v /docker-volume/mysql-slave/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root  \
-d mysql:5.7

1、进入/docker-volume/mysql-slave/conf目录下新建my.cnf

cd /docker-volume/mysql-slave/conf
vim my.cnf

[mysqld]
## 设置server_id,同一局域网中需要唯一
server_id=102
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql  
## 开启二进制日志功能,以备Slave作为其它数据库实例的Master时使用
log-bin=mall-mysql-slave1-bin  
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M  
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed  
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7  
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062  
## relay_log配置中继日志
relay_log=mall-mysql-relay-bin  
## log_slave_updates表示slave将复制事件写进自己的二进制日志
log_slave_updates=1  
## slave设置为只读(具有super权限的用户除外)
read_only=1

2、重启mysql-slave

docker restart mysql-slave

三、主从同步

1、在主数据库中查看主从同步状态

show master status;

2、进入从容器

docker exec -it mysql-slave /bin/bash
mysql -uroot -proot

3、在从数据库中配置主从复制

#master_host:主数据库的IP地址;
#master_port:主数据库的运行端口;
#master_user:在主数据库创建的用于同步数据的用户账号;
#master_password:在主数据库创建的用于同步数据的用户密码;
#master_log_file:指定从数据库要复制数据的日志文件,通过查看主数据的状态,获取File参数;
#master_log_pos:指定从数据库从哪个位置开始复制数据,通过查看主数据的状态,获取Position参数;
#master_connect_retry:连接失败重试的时间间隔,单位为秒。
change master to master_host='192.168.30.100', master_user='slave', master_password='123456', master_port=3307, master_log_file='mall-mysql-bin.000002', master_log_pos=1423, master_connect_retry=30;

4、在从数据库中开启主从同步

mysql> start slave;

5、在从数据库中查看主从同步状态

show slave status \G;

四、主从复制测试

1、主机新建库-使用库-新建表-插入数据

create database master;

2、从机使用库-查看记录

show databases;

 

 

Docker搭建Mysql集群

 

标签:slave,log,##,Mysql,master,mysql,集群,Docker,docker
From: https://www.cnblogs.com/Kevin-ZhangCG/p/18060075

相关文章

  • MySQL-01.Linux下MySQL安装和使用
    C-01.Linux下MySQL的安装和使用前置说明,MySQL高级部分,需要前置知识,为Linux操作系统。如果没有该部分知识,这里推荐韩顺平老师的Linux操作系统的教程。韩老师Linux教程1.安装前准备1.1Linux系统及工具的准备安装并启动好两台虚拟机:CentOS7版本掌握克隆虚拟机的操作mac地......
  • Docker之CPU和内存磁盘设置(八)
    前言Docker基本掌握使用方式,但是在限制其资源方面还没有接触。本篇就简单介绍一下有关CPU、内存等配置。让每个容器的资源分配更加合理,也能够避免一些容器遇到内存泄漏,CPU过载等问题影响其他容器的正常运行。一、配置文件Docker中,配置文件可以用来调整守护进程的行为,包......
  • MongoDB 7.0集群部署
    环境描述:OS:openEuler22.03LTS-SP3mongoDB:7.0.6mongodb-database-tools:100.9.0mongosh:2.1.5GCC:12.3.1Python:3.9.9Clang:12.0.1服务器规划:主机名IP地址MongosServer组件端口ConfigServer组件端口ShardServer组件端口mongo-01192.168.83.102701727018主节......
  • MYSQL意向锁的作用
    结论:当一个事务要对表进行锁定时,首先会获取相应的意向锁。其他事务可以通过检查意向锁来判断是否有其他事务在更细粒度的级别上对表进行了锁定。这有助于避免冲突和提高并发性能在讨论此问题之前我们应当明确两个前提:Innodb存储引擎支持行锁和表锁共存行锁与表锁之间互不冲突......
  • docker commit命令,本地镜像生成
    1.本地镜像生成dockercommit-m"commitInfo"-a="authorName"containerId新创建的目标镜像名:[标签名]  镜像的提交,可以让我们不断去叠加镜像: https://www.bilibili.com/video/BV1gr4y1U7CY?p=25&spm_id_from=pageDriver&vd_source=7ce721b64f52f392bdafe83543918639......
  • Docker搭建Redis集群
    一、创建Redis网络dockernetworklsdockernetworkcreateredis--subnet192.168.100.0/24dockernetworkinspectredis二、创建Redis配置文件forportin$(seq16);\do\mkdir-p/docker-volume/redis-cluster/node-${port}/conftouch/docker-volume/redis-c......
  • docker镜像分层概念
          ......
  • docker https 的私有 registry 搭建与测试
     1.registry服务器上的配置#1.生成自签名证书mkdir-pcertsopensslreq-newkeyrsa:4096-nodes-sha256-keyoutcerts/domain.key-x509-days36500-outcerts/domain.crt#一路回车,等到CommonName(eg,yournameoryourserver'shostname)[]:时输入域......
  • Docker之Window图形界面(七)
    前言前面介绍docker基本都是以控制台命令行为主,但是对于不太熟悉命令行的人来说,确实有点麻烦。再者控制台很多配置虽然能够配置,对于我们长期使用图形界面开发者来看,还是有界面比较容器上手。总的来说,Docker在Windows图形界面上的优势在于提供了直观、便捷和高效的管理和......
  • MySQL8.0.21安装初始化失败
    情况说明:安装到最后一步第三个“Initializedatabase(maytakealongtime)”打叉,“Log”中存在“mysqld:File'.\鐜嬫旦鐒?bin.index'notfound(OSerrno2-Nosuchfileordirectory)”,已退出安装程序。问题分析:如果是第一次安装,问题在主机名称是中文;如果曾退出安装,问题......