首页 > 数据库 >docker部署mysql主从数据库

docker部署mysql主从数据库

时间:2023-04-22 17:45:56浏览次数:42  
标签:slave log ## master mysql docker 主从

一、mysql主库搭建

1. 1.14.xx.216作为mysql-master主库

2. 创建挂载数据目录
mkdir -p /docker_v/mysql-master/{logs,conf,data}
chmod 777 -R /docker_v/mysql-master/

3. 拉取镜像mysql:5.7并开放3306端口
docker pull mysql:5.7

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

default-storage-engine=INNODB
default-time-zone='+8:00'
explicit_defaults_for_timestamp=true
innodb_rollback_on_timeout='ON'
max_connections=500
innodb_lock_wait_timeout=500
character-set-server=utf8mb4
slow-query-log-file=/docker_v/mysql-master/logs/slow-query.log
long_query_time=3

[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4

5. 启动容器
docker run -d -p 3306:3306 --privileged=true \
-v /docker_v/mysql-master/conf/my.cnf:/etc/my.cnf \
-v /docker_v/mysql-master/data:/var/lib/mysql \
-v /docker_v/mysql-master/logs:/var/log/mysql \
-e MYSQL_ROOT_PASSWORD='rootxxx' \
--name mysql-master mysql:5.7

6. 配置从库账号并分配权限
docker exec -it mysql-master bash
mysql -uroot -prootxxx
CREATE USER 'slave'@'%' IDENTIFIED BY 'slavexxx';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
flush privileges;
#记住File和Position的值,在从库配置中会使用。
show master status\G;
#查询结果
File: mysql-bin.000001
Position: 769
#退出mysql,退出容器
exit

二、mysql从库搭建

1. 10.0.0.11作为mysql-slave从库

2. 创建挂载数据目录
mkdir -p /docker_v/mysql-slave/{logs,conf,data}
chmod 777 -R /docker_v/mysql-slave/

3. 拉取镜像mysql:5.7并开放3306端口
docker pull mysql:5.7

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

default-storage-engine=INNODB
default-time-zone='+8:00'
explicit_defaults_for_timestamp=true
innodb_rollback_on_timeout='ON'
max_connections=500
innodb_lock_wait_timeout=500
character-set-server=utf8mb4
slow-query-log-file=/docker_v/mysql-slave/logs/slow-query.log
long_query_time=3

[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4

5. 启动容器
docker run -d -p 3306:3306 --privileged=true \
-v /docker_v/mysql-slave/conf/my.cnf:/etc/my.cnf \
-v /docker_v/mysql-slave/data:/var/lib/mysql \
-v /docker_v/mysql-slave/logs:/var/log/mysql \
-e MYSQL_ROOT_PASSWORD='rootxxx' \
--name mysql-slave mysql:5.7

6. 从库中配置主从复制
docker exec -it mysql-slave /bin/bash
mysql -uroot -prootxxx
change master to master_host='1.14.xx.216', master_user='slave', master_password='slavexxx', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos=769, master_connect_retry=30;
# 开启主从复制
show slave status\G

start slave;
show slave status \G;

 

标签:slave,log,##,master,mysql,docker,主从
From: https://www.cnblogs.com/df-blog/p/17343571.html

相关文章

  • 1-MySQL概述
    1.数据库相关概念数据库,数据库管理系统,SQL名称全称简称数据库存储数据的仓库,数据是有组织的进行存储DataBase(DB)数据库管理系统操纵和管理数据库的大型软件DataBaseManagementSystem(DBMS)SQL操作关系型数据库的编程语言,定义了一套操作关系型数据......
  • Docker完结版
    1.Docker概述:1.1Docker为什么会出现:问题:在互联网开发环境当中很多情况会遇到在我的电脑上可以运行但是到你的电脑上就无法运行可,而且在软件版本更新以后会导致服务不可用的情况出现。解决方式:发布一个项目:将一个项目打成jar包时带上Redis,Mysql,jdk,ES等一套环境一起发......
  • docker的安装(linux、centos)
    环境:centos71.先确定linux是否是centos7cat/etc/redhat-release2.如果自己的linux上之前有安装docker,先卸载。如果没有,则直接跳过这一步。执行下面的命令:yumremovedocker\docker-client\docker-client-latest\do......
  • Docker容器数据卷与DockerFile已经Docker网络原理
    5.Docker容器数据卷:5.1什么是Docker的容器数据卷:将应用和环境打包成一个镜像数据?如果数据都在容器中,那么我们容器删除,数据就会丢失!需求:数据可以持久化例如:Mysql,容器删了,如果数据存放在容器当中,那么就是删库跑路了,因此我们希望Mysql的数据可以存储在本地当中!要求:容器之间......
  • docker harbor安装过程
    环境准备安装最新版本docker-ce及docker-composemkdir-p/opt/harbor/certs 下载最新harbor合并有效签发证catpublic.crtchain.crt>www.crtharbor.yml配置文档 [root@repo_nzharbor]#catharbor.yml|grep-v^"#"|grep-v^".#"|grep-v^'#'|g......
  • redis高级:持久化方案、主从复制原理和方案、哨兵高可用
    目录一、持久化方案1、什么是持久化2、持久化的实现方式3、RDB4、aof方案5、RDB和AOF的选择6、混合持久化二、主从复制原理和方案1、为什么要用主从复制2、主从复制介绍3、redis主从赋值流程,原理三、哨兵高可用1、什么是高可用2、哨兵实现高可用3、哨兵实现高可用搭建步骤一、持......
  • mysql如何创建数据库?
    创建数据库的命令格式:createdatabase数据库名称;通过按键盘上的【win】+【S】键执行搜索功能,在搜索框中输入“cmd”然后点击【以管理员身份运行】,如下图所示。     在cmd中输入“netstartmysql80”,并按下【enter】回车键,启动MySQL服务器,如下图所示。......
  • Mac连接Windows上的mysql服务器
    1、关闭Windows的防火墙2、在Windows上新建入站规则,允许访问3306端口  一直下一步,完成设置3、在Windows上更新mysql的root用户的host为'%'selecthost,userfromuser;updateusersethost='%'whereuser='root';flushprivileges; 4、在MAC上连接Windows上......
  • docker搭建mongodb及基本语法的使用
    一、介绍:概述:主使用docker安装mongodb的方法记录,mongo基本语法记录的整理,大神请绕道!优势:1.MongoDB提供高性能的数据持久性。对嵌入式数据模型的支持减少了数据库系统上的IO活动2.如动态模式、灵活的文档模型,适合json数据存储,适合海量数据存储使用场景:1.数据量大,读写操作频......
  • Windows10上安装mysql 8.0|mysql 8.0安装教程
    1、下载适合自己操作系统的mysql安装文件,解压就可直接用  下载地址:https://dev.mysql.com/downloads/mysql/ 2、解压压缩包,目录结构如下。解压后的压缩包里没有my.ini文件和data文件夹,my.ini可以自己手动建,但是data文件夹千万不可手动创建3、新建my.ini文件并添加最简配......