首页 > 数据库 >Docker安装MySQL主从

Docker安装MySQL主从

时间:2024-06-13 23:12:26浏览次数:12  
标签:mydata utf8 MySQL db master mysql Docker root 主从

Docker安装MySQL主从

搭建主从
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

docker run  -p 3306:3306  很多  -d  --name haha   mysql:5.7

Docker启动容器的数据部分一定挂载出来

1、创建Master

docker run -p 3307:3306 --name mysql-master \
-v /mydata/mysql/master/log:/var/log/mysql \
-v /mydata/mysql/master/data:/var/lib/mysql \
-v /mydata/mysql/master/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=root \
--restart=always \
-d mysql:5.7 
#参数说明  /etc/my.cnf   任意的xxx.cnf 只要放在 /etc/mysql/conf.d 目录下,mysql也能认为是他的配置文件
	-p 3307:3306:将容器的3306端口映射到主机的3307端口
	-v /mydata/mysql/master/conf:/etc/mysql:将配置文件夹挂在到主机
	-v /mydata/mysql/master/log:/var/log/mysql:将日志文件夹挂载到主机
	-v /mydata/mysql/master/data:/var/lib/mysql/:将配置文件夹挂载到主机
	-e MYSQL_ROOT_PASSWORD=root:初始化root用户的密码
#修改master基本配置
vim /mydata/mysql/master/conf/my.cnf

[client]
default-character-set=utf8
 
[mysql]
default-character-set=utf8
 
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
#注意:skip-name-resolve一定要加,不然连接mysql会超级慢
#添加master主从复制部分配置
server_id=1
log-bin=mysql-bin
read-only=0  #主库是写库

#可以同步的库,master只需要记录哪些库的二进制日志
binlog-do-db=hello
binlog-do-db=world

#不用同步的库
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema

重启

2、创建Slaver

docker run -p 3308:3306 --name mysql-slaver-01 \
-v /mydata/mysql/slaver01/log:/var/log/mysql \
-v /mydata/mysql/slaver01/data:/var/lib/mysql \
-v /mydata/mysql/slaver01/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=root \
--restart=always \
-d mysql:5.7 
#修改slave基本配置
vim /mydata/mysql/slaver01/conf/my.cnf

[client]
default-character-set=utf8
 
[mysql]
default-character-set=utf8
 
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
#添加master主从复制部分配置
server_id=2
read-only=1 
relay-log=mysql-relay

replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema

3、master授权slaver链接

#1、进入master容器
docker exec -it mysql /bin/bash

#2、进入mysql内部 (mysql –uroot -p)
	#1)、授权root可以远程访问( 主从无关,为了方便我们远程连接mysql)
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
flush privileges;
    #2)、添加用来同步的用户
       GRANT REPLICATION SLAVE ON *.* to 'backup'@'%' identified by '123456';

#3、查看master状态
   show master status\G;

4、slaver同步master数据

#1、进入slaver容器
docker exec -it mysql-slaver-01 /bin/bash
#2、进入mysql内部(mysql –uroot -p)
   #1)、授权root可以远程访问( 主从无关,为了方便我们远程连接mysql)
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
flush privileges;

   #2)、设置主库连接
change master to master_host='172.17.0.2',master_user='backup',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=0,master_port=3306;
  #3)、启动从库同步
	start slave;
  #4)、查看从库状态
	show slave status\G;

至此主从配置完成;

标签:mydata,utf8,MySQL,db,master,mysql,Docker,root,主从
From: https://www.cnblogs.com/lyrauu/p/18246935

相关文章

  • MySQL安全性管理
    用户权限管理创建和管理用户:使用CREATEUSER和GRANT语句创建和管理用户。例如:CREATEUSER'username'@'host'IDENTIFIEDBY'password';GRANTSELECT,INSERT,UPDATE,DELETEONdatabase.*TO'username'@'host';最小权限原则:只赋予用户执行其任务所需的最......
  • 使用 Docker 卷来实现替换容器内文件为宿主机上的
    要将容器内的/usr/share/nginx/html目录替换成宿主机上的/path/html目录里的内容,你可以使用Docker卷来实现。以下是你需要做的修改:停止并删除现有的前端容器(如果它正在运行):docker-composedown--remove-orphans修改docker-compose.yml文件,在frontend服务中......
  • Docker镜像与容器的导入与导出
    参考chat-gpthttps://blog.csdn.net/qq_22211217/article/details/93936363https://blog.csdn.net/ncdx111/article/details/79878098https://www.runoob.com/docker/docker-import-command.htmlhttps://www.runoob.com/docker/docker-export-command.html环境环境版......
  • dockerfile CMD 和 ENTRYPOINT 分别什么时候用
     在Docker中,CMD和ENTRYPOINT指令都是用来定义容器启动时运行的默认命令,但它们的用途和行为有所不同,适用于不同的场景:CMD用途:CMD指令用来指定容器启动后默认执行的命令及其参数。它更倾向于提供默认的或可被替代的执行行为。可覆盖性:当使用dockerrun命令启动容器......
  • MySQL怎么为表添加描述
    1.MySQL为表添加描述的方法在MySQL中,表本身并没有直接的“描述”字段或属性来存储关于表的额外信息,如用途、创建者、备注等。但是,我们可以通过几种方式来实现这一需求:1.1使用COMMENT关键字为表或列添加注释虽然这不是一个完整的“描述”字段,但我们可以使用COMMENT关键字为表或......
  • 如何查询MySQL存储的树形结构,层次结构
    表定义如下 如果我们需要在表中查询这个树状结构,通过SQL语句,有两种查询方法:1.通过inner自连接查询,适用于简单的结构SELECT*FROMcourse_categoryASoneINNERJOINcourse_categoryAStwoONtwo.parentid=one.idWHEREone.parentid='1'ORDER......
  • 【java计算机毕设】图书管理系统javaweb java MySQL springboot vue html maven送文档
    1项目功能【java计算机专业学长毕业设计分享】智慧图书管理系统JavaSpringBootvueHTMLMySQL前后端分离2项目介绍系统功能:智慧图书管理系统包括管理员和用户两种角色。管理员的功能包括在个人中心修改个人信息和密码,管理员功能模块管理管理员。基础数据管理模......
  • MySQL的联合索引
    这里我先创建一张叫tb_user的表数据有创建一个联合索引  1.符合index(a,b,c)的查询条件 他的查询范围是ref使用了索引2.符合index(a,b)的查询条件  他的查询范围是ref使用了索引3.符合index(a)的查询条件   他的查询范围是ref使用了索引4.符合index(b,c......
  • MySQL 新建事件执行存储过程
    开启事件调度器SETGLOBALevent_scheduler=ON;编写事件注意:命令行会将分号【;】识别为结束符,可以使用navicat创建事件;或者使用DELIMITER关键字替换分号/*如果error_event事件存在,则先删除它*/DROPEVENTIFEXISTSerror_event;/*创建一个名为error_event的事......
  • Linux系统的mysql如何导出表数据
    在Linux系统上,我们可以使用mysqldump命令来导出MySQL数据库中的表数据。mysqldump是一个用于备份数据库的命令行工具,它可以将整个数据库或特定的表导出为SQL脚本文件,以便在其他环境中恢复或迁移数据。本文将介绍如何使用mysqldump命令导出表数据,并提供相关的代码示例和流程图。1......