09-Docker安装Mysql

简介: 本文介绍如何使用Docker安装MySQL 5.7,解决中文乱码与数据持久化问题,并实现主从复制。涵盖容器卷映射、my.cnf配置、主库从库搭建、同步状态检查及数据验证,确保高可用与数据安全。

09-Docker安装Mysql

Docker 安装 Mysql以安装 Mysql 5.7为例:

Mysql 单机简单版 Mysql 5.7 安装简单的启动Mysql容器:简单版的Mysql会存在以下问题:中文乱码没有容器卷映射启动docker容器后,可以正常的连接、创建数据库,创建表,插入数据。但是插入中文则会报错。例如:这是因为docker默认的字符集的问题,可以在mysql中使用以下命令查看数据库字符集:返回的字符集中,character_set_database、character_set_server等都为latin1字符集,所以会报错。而且因为启动容器时没有配置容器卷映射,当容器意外被删时,数据无法找回。实际应用版 Mysql 5.7安装启动 Mysql 容器,并配置容器卷映射:在/app/mysql/conf下新建 my.cnf,通过容器卷同步给mysql实例,解决中文乱码问题:重启mysql容器,使得容器重新加载配置文件:此时便解决了中文乱码(中文插入报错)问题。而且因为启动时将容器做了容器卷映射,将mysql的配置(映射到/app/mysql/conf)、数据(映射到/app/mysql/data)、日志(映射到/app/mysql/log)都映射到了宿主机实际目录,所以即使删除了容器,也不会产生太大影响。只需要再执行一下启动Mysql容器命令,容器卷还按相同位置进行映射,所有的数据便都可以正常恢复。Mysql 主从复制安装安装主服务器容器实例(端口号3307): 启动容器实例   进入/app/mysql-master/conf,新建my.cnf配置文件:   重启容器实例   进入容器实例内   登录mysql,创建数据同步用户  安装从服务器容器实例(端口号3308): 启动容器服务:   进入/app/mysql-slave/conf目录,创建my.cnf配置文件:   修改完配置需要重启slave容器实例  在主数据库中查看主从同步状态: 进入主数据库容器:   进入Mysql   查看主从同步状态 主要查看返回结果的文件名File、当前位置Position 进入从数据库容器,配置主从复制: 进入从数据库容器:   进入数据库   配置从数据库所属的主数据库:

SQL

运行代码复制代码

1

2

3

4

-- 格式:

-- change master to master_host='宿主机ip',master_user='主数据库配置的主从复制用户名',master_password='主数据库配置的主从复制用户密码',master_port=宿主机主数据库端口,master_log_file='主数据库主从同步状态的文件名File',master_log_pos=主数据库主从同步状态的Position,master_connect_retry=连接失败重试时间间隔(秒);


change master to master_host='192.168.xxx.xxx',master_user='slave',master_password='123456',master_port=3307,master_log_file='mall-mysql-bin.000001',master_log_pos=769,master_connect_retry=30;

 查看主从同步状态:

SQL

运行代码复制代码

1

2

3

# \G 可以将横向的结果集表格转换成纵向展示。

# slave status的字段比较多,纵向展示比友好

show slave status \G;

除了展示刚刚配置的主数据库信息外,主要关注 Slave_IO_Running、Slave_SQL_Running。目前两个值应该都为 No,表示还没有开始。  开启主从同步:

SQL

运行代码复制代码

1

start slave;

 再次查看主从同步状态,Slave_IO_Running、Slave_SQL_Running都变为Yes。 主从复制测试: 在主数据库上新建库、使用库、新建表、插入数据

SQL

运行代码复制代码

1

2

3

4

create database db01;

use db01;

create table t1 (id int, name varchar(20));

insert into t1 values (1, 'abc');

 在从数据库上使用库、查看记录

SQL

运行代码复制代码

1

2

3

show databases;

use db01;

select * from t1;


相关文章
|
5月前
|
存储 关系型数据库 MySQL
MySQL Docker 容器化部署全指南
MySQL是一款开源关系型数据库,广泛用于Web及企业应用。Docker容器化部署可解决环境不一致、依赖冲突问题,实现高效、隔离、轻量的MySQL服务运行,支持数据持久化与快速迁移,适用于开发、测试及生产环境。
873 4
|
3月前
|
SQL 算法 关系型数据库
15 | 熔断限流:业务如何实现自我保护?
本文讲解RPC框架中业务的自我保护机制。服务端通过限流(如令牌桶、滑动窗口)防止过载,可基于应用或IP维度控制,并借助配置中心动态调整阈值;还可依赖集中式限流服务实现集群级精确控制。调用端则通过熔断机制避免因下游异常导致雪崩,熔断器在动态代理层拦截请求,实现快速失败。二者结合提升系统稳定性。
|
3月前
|
存储 SQL 安全
18 | 安全体系:如何建立可靠的安全体系?
本讲深入探讨RPC中的安全问题,重点解决调用方未授权调用和服务伪造风险。通过引入基于HMAC的去中心化身份认证机制,实现调用方安全接入;结合注册中心对接口与应用绑定,防止非法服务注册。构建轻量可控的安全体系,保障内网RPC调用的可靠性与可管理性。
|
3月前
|
安全 测试技术
16 | 业务分组:如何隔离流量?
本文介绍RPC中的流量隔离机制——分组。通过分组可将服务实例划分为多个小集群,实现调用方流量隔离,避免突发流量相互影响。结合主备分组策略,还能提升系统高可用性,保障核心业务稳定运行。
16 | 业务分组:如何隔离流量?
|
3月前
|
关系型数据库 MySQL 数据库
-Docker安装Mysql
本教程介绍Docker安装MySQL 5.7的完整流程,涵盖单机部署与主从复制配置。包括解决中文乱码、数据持久化卷映射,以及主从同步设置,确保数据安全与高可用,适用于生产环境部署参考。
|
3月前
|
Java Shell Maven
06-nexus私仓环境搭建
本文介绍Nexus私有仓库环境搭建全过程,包括JDK安装、Nexus OSS版下载与解压、配置文件修改、创建nexus用户并启动服务。详细说明了如何通过Web界面登录、修改默认密码、配置匿名访问,并创建Maven私仓。同时提供上传本地jar包的两种方式,重点演示使用脚本批量导入本地仓库依赖的方法,包含清理无效文件、重命名元数据及执行上传命令等步骤,适用于企业内网构建Maven私服场景。
|
3月前
|
网络协议 算法 前端开发
07 | 架构设计:设计一个灵活的 RPC 框架
本文深入讲解如何设计一个灵活的 RPC 框架,从基础通信原理出发,剖析传输、协议、服务发现、连接管理等核心模块,并提出分层架构与插件化设计思想,提升系统可扩展性与维护性,助力构建高性能、易演进的分布式服务架构。
|
3月前
|
缓存 Ubuntu Linux
Docker安装
本文介绍Docker在CentOS和Ubuntu系统中的安装与配置方法,涵盖卸载旧版本、配置yum源、在线/离线安装、启动服务、设置开机自启、运行HelloWorld测试及daemon.json配置详解,并提供阿里云镜像加速、日志管理、命令补全等实用操作步骤。
|
3月前
|
Java Maven 数据安全/隐私保护
Nexus仓库
Nexus仓库是Sonatype推出的开源制品管理工具,支持Maven、Npm、Docker等格式。本文介绍其在Linux和Docker环境下的安装配置,包括JDK部署、OSS版下载、用户权限、匿名访问设置,以及仓库创建与上传下载操作,涵盖密码重置、数据持久化及脚本批量导入等内容,助力搭建高效私有仓库。
Base64的使用?
Base64是一种将二进制数据转为64个可打印字符的编码方式,每3字节原始数据转为4字节Base64编码,常用于小图片嵌入、减少HTTP请求,但体积增大约1/3。