首页 > 数据库 >docker-mysql(集群)

docker-mysql(集群)

时间:2023-07-31 15:16:46浏览次数:38  
标签:容器 slave master mysql 集群 docker my

第一步:安装docker+并获取mysql镜像

第二步:运行master的mysql容器

docker run -id \
--name=mysql_master \
-p 3307:3306 \
-v $PWD/mysql-master/conf:/etc/mysql/conf.d \
-v $PWD/mysql-master/logs:/logs \
-v $PWD/mysql-master/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql

命令比较简单。主要-v的使用,保证在容器挂了的时候,数据不会丢失。$PWD表示当前目录地址。

 第三步,修改my.cnf配置文件

1.先copy到虚拟机目录上

docker cp 0a70ced7b5e1:/etc/my.cnf /Users/hicheer/
/Users/hicheer/ --虚拟机上的一个临时目录,要注意修改为自己的路径。

2 修改my.cnf文件

 插入的代码:

log-bin=mysql-bin
server-id=1

3在copy回去,覆盖原有mysql容器中原因配置,命令如下:注意目录和容器ID的替换。

docker cp /Users/hicheer/my.cnf 0a70ced7b5e1:/etc/

4重启一下容器。

docker restart 容器ID

第四步:新建一个用户,用来给从数据库访问主数据库。

进入mysql:docker exec -it mysql-master bash;mysql -uroot -p;输入密码即可。

新建用户命令:

grant replication slave on *.* to 'test'@'%' identified by '123456'; flush privileges;

查看当前主数据库binglog日志状态 

show master status;

 这里主要看看两个参数:“File” 与 “Position” 记住并复制到记事本上,等下要用。

第五步:运行一个slave的mysql容器。

docker run -id \
--name=mysql_slave \
-p 3308:3306 \
-v $PWD/mysql-slave/conf:/etc/mysql/conf.d \
-v $PWD/mysql-slave/logs:/logs \
-v $PWD/mysql-slave/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql

同样的修改my.conf配置文件。

docker cp 8ca6a479d042:/etc/my.cnf /tmp/mysql-temp/ 
docker cp /tmp/mysql-temp/my.cnf 8ca6a479d042:/etc/

修改地方

 

log-bin=mysql-bin
server-id=2

再重启一下当前容器。

docker restart 8ca6a479d042

第六步,设置从主关系

1 进入从容器内部。

docker exec -it 8ca6a479d042 bash
mysql -uroot -p --输入密码

2 准备从数据库连接主数据库内容.

 1)获取主数据库容器的ip地址

docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress }}' $(docker ps -aq)

 用上面参数替换下面命令中的参数

change master to master_host='你的IP', master_user='test账户名', master_password='test账户密码', master_port=默认端口号, master_log_file='你保存的File参数值', master_log_pos=你保存的Position参数值, master_connect_retry=30;

开启主从复制

start slave;

查看是否开启

show slave status\G

但我这个一直在Connecting中。 

 

参考地址:https://blog.csdn.net/weixin_49457704/article/details/127902985

 

 



2.

标签:容器,slave,master,mysql,集群,docker,my
From: https://www.cnblogs.com/Insist-Y/p/17593247.html

相关文章

  • Linux集群监控部署: prometheus 普罗米修斯 + Grafana
    前言之前我们有用到top、free、iostat等等命令,去监控服务器的性能,但是这些命令,我们只针对单台服务器进行监控,通常我们线上都是一个集群的项目,难道我们需要每一台服务器都去敲命令监控吗?这样显然不是符合逻辑的,Linux中就提供了一个集群监控工具–prometheus。prometheus监......
  • mysql的索引机制
    索引的概念索引是一种特殊的数据。保存的是其他数据的位置,查找数据时先查找索引查询数据,提高查找效率。索引是越多越好吗?不是索引的优缺点优点:​ 1.提高查询效率缺点:​ 1.占用额外的磁盘空间​ 2.创建索引需要较长时间​ 3.索引需要维护索引的类型......
  • mongodb和mysql的优缺点
    MongoDB和MySQL的优缺点对比引言在现代软件开发中,数据库是必不可少的一部分。MongoDB和MySQL是两种常见的数据库管理系统(DBMS)。本文将对它们的优缺点进行对比,帮助读者选择适合自己需要的数据库系统。MongoDBMongoDB是一个基于文档的NoSQL数据库,使用JSON格式存储数据。它的特点......
  • mogdb和mysql 插入效率
    mogdb和mysql插入效率比较在现代软件开发中,数据库是一个不可或缺的组成部分。常见的数据库有多种选择,其中包括MogDB和MySQL。本文将重点讨论这两个数据库在插入数据时的效率比较,并通过代码示例来进一步说明这一点。MogDB简介MogDB是一种基于开源的分布式关系型数据库管理系统。......
  • mysql 字符串包含某个字符
    MySQL字符串包含某个字符在MySQL中,我们常常需要对字符串进行各种操作,包括判断一个字符串是否包含某个字符。本文将介绍如何使用MySQL语句来判断字符串是否包含某个字符,以及提供相应的代码示例。使用LIKE语句MySQL中提供了LIKE语句来判断一个字符串是否包含某个字符。LIKE语句是......
  • mysql 字段加减
    MySQL字段加减操作详解在MySQL数据库中,我们经常需要对字段进行加减操作,例如累加某个字段的值、减去某个字段的值等。本文将详细介绍在MySQL中如何进行字段的加减操作,并提供几个代码示例。1.基本的加减操作MySQL提供了UPDATE语句来更新表中的数据,我们可以使用该语句进行......
  • mysql 字段改名
    MySQL字段改名在开发过程中,有时候需要对MySQL数据库中的字段进行改名。字段改名可以帮助我们更好地命名字段,提高代码的可读性和维护性。本文将介绍如何使用SQL语句和ALTERTABLE语句通过代码示例进行MySQL字段改名。什么是字段改名字段改名是指将数据库表中的某个字段的名称修改......
  • mysql 自增序列加前缀
    MySQL自增序列加前缀在MySQL数据库中,自增列是一种非常有用的特性,它可以为每一行记录自动生成唯一的标识符。然而,有时我们需要给自增列添加一个前缀,以便更好地组织和管理数据。本文将详细介绍如何在MySQL中实现自增序列加前缀的方法,并提供相应的代码示例。1.创建数据表首先,我们......
  • mysql 子查询插入
    MySQL子查询插入的实现概述在MySQL中,可以使用子查询来实现插入操作。子查询是指在一个查询语句中嵌套另一个查询语句,可以将子查询的结果作为插入的值。本文将教你如何使用MySQL子查询来实现插入操作。步骤下面是实现MySQL子查询插入的步骤:步骤描述1编写子查询语句......
  • mysql 转移符
    Mysql转义符的使用引言在Mysql中,如果需要在字符串中包含一些特殊字符,比如引号、反斜杠等,就需要使用转义符来表示这些特殊字符。本文将介绍Mysql转义符的使用方法,并以表格形式展示整个过程的步骤。步骤下面是使用Mysql转义符的步骤:步骤描述1连接到Mysql数据库2创......