首页 > 数据库 >基于Docker 部署 MySQL 主从复制

基于Docker 部署 MySQL 主从复制

时间:2022-11-21 08:45:50浏览次数:68  
标签:主从复制 slave log MySQL usr mysql Docker local

Docker 的安装可参考这篇文章:Linux 安装 Docker;这里的主从复制是基于 GTID(Glbal Transation Identifier)全局事务标识符的。GTID 是 MySQL 5.6 新加入的一项技术,GTID 是完全基于事务的,不支持 MYISAM 存储引擎

Step 1:拉取镜像

docker pull mysql:5.7.40

Step 2:创建主 MySQL 容器

  • 创建挂载挂载目录以及 MySQL 配置文件
mkdir -p /usr/local/mysql/data /usr/local/mysql/logs /usr/local/mysql/conf
touch /usr/local/mysql/conf/my.cnf
  • 主 my.cnf 配置内容
[mysqld]
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
character-set-server=utf8mb4
default-time-zone='+08:00'
max_connections=1024
max_connect_errors=10
default-storage-engine=INNODB
lower_case_table_names = 1
server-id=10
log-bin=/var/log/mysql/binlog
explicit_defaults_for_timestamp=true
# GTID 全局事务配置
gtid-mode=on
log-slave-updates=1
enforce-gtid-consistency

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4
  • 启动
docker run -p 3306:3306 \
    --name mysql \
    --restart=always \
    -e MYSQL_ROOT_PASSWORD=Hwtech8888 \
    -v /usr/local/mysql/conf:/etc/mysql/conf.d \
    -v /usr/local/mysql/logs:/var/log/mysql \
    -v /usr/local/mysql/data:/var/lib/mysql \
    -e TZ=Asia/Shanghai \
    -d mysql:5.7.40

Step 3:主 MySQL 配置

  • 进入容器内部
docker exec -it mysql bash

mysql -p
# 输入密码
  • 创建同步账号
create user 'slave'@'%' identified by 'Hwtech8888';
grant replication slave on *.* to 'slave'@'%';
flush privileges;
  • 设置只读模式
# 避免在此期间有数据变化
set @@global.read_only=ON;

Step 4:创建从 MySQL 容器

我这里用了两台服务器,如果是同一台服务器,主要更改文件夹以及端口号

步骤同上,从 my.cnf 配置内容

[mysqld]
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
character-set-server=utf8mb4
default-time-zone='+08:00'
max_connections=1024
max_connect_errors=100
default-storage-engine=INNODB
lower_case_table_names = 1
server-id=100
log-bin=/var/log/mysql/binlog
relay-log=/var/log/mysql/relay-log
explicit_defaults_for_timestamp=true
# GTID 全局事务配置
gtid-mode=on
log-slave-updates=1
enforce-gtid-consistency
skip-slave-start

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4
  • 启动
docker run -p 3306:3306 \
    --name mysql \
    --restart=always \
    -e MYSQL_ROOT_PASSWORD=Hwtech8888 \
    -v /usr/local/mysql/conf:/etc/mysql/conf.d \
    -v /usr/local/mysql/logs:/var/log/mysql \
    -v /usr/local/mysql/data:/var/lib/mysql \
    -e TZ=Asia/Shanghai \
    -d mysql:5.7.40

Step 5:从 MySQL 配置

  • 进入容器内部
docker exec -it mysql bash

mysql -p
# 输入密码
  • 配置主服务监听
change master to 
    master_host='101.201.233.67',
    master_user='slave',
    master_password='Hwtech8888',
    master_port=10000,
    master_auto_position=1
  • 启动数据同步
start slave;

show slave status\G;

标签:主从复制,slave,log,MySQL,usr,mysql,Docker,local
From: https://www.cnblogs.com/chaosmoor/p/16910273.html

相关文章

  • MYSQL创建与root一样权限用户
    1.创建账号createuserbackupdb@'localhost'identifiedby'123456';#或createuserbackupdb@'%'identifiedby'123456';2.设置权限grantusageon*.*to......
  • Linux自动备份MySql数据库
    1.创建备份数据库文件的根目录:#mysql备份文件目录cd/data/db/mysql2.创建各个数据库的备份文件目录  3.编写shell脚本3.1 在usr/sbin目录下分别创建数据......
  • MySQL数据库系统(十四章)
    目录第14章:MySQL数据库系统MySQL简介安装与使用MySQL第14章:MySQL数据库系统知识点归纳总结:本章讨论了MySQL关系数据库系统;介绍了MySQL并指出了它的重要性;MySQL简介......
  • MySQL进阶实战1,数据类型与三范式
    一、选择优化的数据类型MySQL支持的数据类型非常多,选择正确的数据类型对于获得高性能至关重要。1、更小的一般情况下,应该尽量使用较小的数据类型,更小的数据类型通常更快,因为......
  • dockerfile学习笔记
    FROM指定基础镜像MAINTAINER指定维护者的信息,可以没有RUN 你想让它干啥(在命令前面加上RUN即可)ADD 添加宿主机的文件到容器内COPY复制文件WORKDIR 设置当前工......
  • mysql-备忘录
    mysql基础注入知识参考资料:https://pureqh.top/?p=1882bypass安全狗常用函数ascii()length()substr()#左闭右闭hex()isnull()......
  • mysql this is incompatible with sql_mode=only_full_group_by
    MySQL分组查询时报错mysqlthisisincompatiblewithsql_mode=only_full_group_bymysql5.7[mysqld]sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGIN......
  • docker操作笔记
    docker操作笔记https://www.runoob.com/docker/docker-container-usage.html 菜鸟教程安装使用官方安装脚本自动安装安装命令如下:curl-fsSLhttps://get.docker.co......
  • MySQL、Oracle、SQL Server时间类型字段
    关系型数据库时间类型字段MySQL(以及对应格式)SQLServer(以及对应格式)Oracletime(HH-MM-SS)time(12:35:29.1234567)date(YYYY-MM-DDHH:MM:SS)date(YYYY-MM-DD......
  • mysql主从配置
    主mysql-uroot-p'd60v#-MXf>qn'createdatabaseywgl;grantreplicationslave,replicationclienton*.*to'repl'@'192.168.100.125'identifiedby'd60v#-MXf>q......