查找待拉取的镜像

mysql镜像地址:https://hub.docker.com/_/mysql?tab=tags
我使用的是5.3.37的版本:docker pull mysql:5.7.37
docker images 查看拉取得镜像

指定容器服务器挂载路径启动mysql(自命名名称,服务器路径会自动创建)

注意:同一镜像重复使用,需修改指定不同的默认端口

docker run -it \
--restart=always \
--name mysql_5.7 \
-v /usr/local/docker/mysql/cnf:/etc/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-v /usr/local/docker/mysql/log:/var/log \
-v /usr/local/docker/mysql/mysql-files:/var/lib/mysql-files \
-p 13307:3307 \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7.37

若要自定义配置文件启动mysql,则先停止并删除上述命令启动的容器docker stop 容器id/容器名docker rm -f 容器id/容器名,然后再在/usr/local/docker/mysql/cnf下创建my.cnf文件,根据需要配置,然后再使用上述命令启动

[client]
port=3307
default-character-set=utf8mb4
[mysqld]
port=3307
#数据库字符
character-set-server=utf8mb4
#排序规则
collation-server=utf8mb4_general_ci
#设置client连接mysql时的字符集,防止乱码
init_connect='SET NAMES utf8mb4'
#是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names=1
#最大连接数
max_connections=150
#最大错误连接数
max_connect_errors=200
#MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中
back_log=80
#是否启用慢查询日志,1为启用,0为禁用
slow_query_log=1
#慢查询执行的秒数,必须达到此值可被记录
long_query_time=3
#慢查询日志
slow_query_log_file = /var/log/mysql-slow.log
#该参数代表binlog的过期时间,单位是天
expire_logs_days=15

查看mysql的启动情况

docker ps -a

若没有启动成功,使用命令查看启动日志并根据错误提示并解决

docker logs -f 容器id/容器名

启动成功则使用如下命令,进入容器终端

docker exec -it 容器id/容器名 bash

连接mysql

默认密码可查看日志获得,可能为空

mysql -uroot -proot


然后使用mysql数据库

use mysql;

修改root用户的密码(password自己修改)

ALTER USER 'root'@'%'  IDENTIFIED WITH mysql_native_password BY  'password';

刷新权限

flush privileges;

双重退出到服务器终端;

quit;
exit;

navicat连接mysql

使用端口13307

连接出错:

1、防火墙打开情况下,查看端口是否开放或查看防火墙对容器是否拦截。
2、ECS控制台,网络与安全——》安全组配置规则——》入方向,开放端口。

MySQL主从同步设置

1、停止并删除启好的mysql容器
2、以不同端口启动两容器

docker run -it \
--restart=always \
--name mysql_master_3306 \
-v /usr/local/docker/mysql_master_3306/cnf:/etc/mysql \
-v /usr/local/docker/mysql_master_3306/data:/var/lib/mysql \
-v /usr/local/docker/mysql_master_3306/log:/var/log \
-v /usr/local/docker/mysql_master_3306/mysql-files:/var/lib/mysql-files \
-p 13306:3306 \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7.37
docker run -it \
--restart=always \
--name mysql_slave_3307 \
-v /usr/local/docker/mysql_slave_3307/cnf:/etc/mysql \
-v /usr/local/docker/mysql_slave_3307/data:/var/lib/mysql \
-v /usr/local/docker/mysql_slave_3307/log:/var/log \
-v /usr/local/docker/mysql_slave_3307/mysql-files:/var/lib/mysql-files \
-p 13307:3307 \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7.37

3、修改master配置文件

[client]
port=3306
default-character-set=utf8mb4
[mysqld]
port=3306
#数据库字符
character-set-server=utf8mb4
#排序规则
collation-server=utf8mb4_general_ci
#设置client连接mysql时的字符集,防止乱码
init_connect='SET NAMES utf8mb4'
#是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names=1
#最大连接数
max_connections=150
#最大错误连接数
max_connect_errors=200
#MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中
back_log=80
#是否启用慢查询日志,1为启用,0为禁用
slow_query_log=1
#慢查询执行的秒数,必须达到此值可被记录
long_query_time=3
#慢查询日志
slow_query_log_file = /var/log/mysql-slow.log
#设置server_id , 同一局域网中需要唯一
server_id=101
#指定不需要同步的数据库名称
binlog-ignore-db=mysql
#开启二进制日志功能
log-bin=mall-mysql-bin
#设置二进制日志使用内存大小(事务)
binlog_cache_size=1M
#设置使用二进制日志格式(mixed,statement,row)
binlog_format=mixed
#而简直日志过期清理时间,默认值为0,表示不自动清理
expire_logs_days=7
#跳过主从复制中遇到的所有错我或指定类型的错误,避免slave端复制中断
#如:1062错误指一些主键重复,1032错误是因为主从数据库数据不一致,设置多个以英文逗号分隔
slave_skip_errors=1062
1007: 数据库已存在,创建数据库失败
1008: 数据库不存在,删除数据库失败
1050: 数据表已存在,创建数据表失败
1051: 数据表不存在,删除数据表失败
1054: 字段不存在,或程序文件跟数据库有冲突
1060: 字段重复,导致无法插入
1061: 重复键名
1068: 定义了多个主键
1094: 位置线程ID
1146: 数据表缺失,请恢复数据库
1053: 复制过程中主服务器宕机
1062: 主键冲突 Duplicate entry '%s' for key %d修改slave配置文件
[client]
port=3307
default-character-set=utf8mb4
[mysqld]
port=3307
#数据库字符
character-set-server=utf8mb4
#排序规则
collation-server=utf8mb4_general_ci
#设置client连接mysql时的字符集,防止乱码
init_connect='SET NAMES utf8mb4'
#是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names=1
#最大连接数
max_connections=150
#最大错误连接数
max_connect_errors=200
#MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中
back_log=80
#是否启用慢查询日志,1为启用,0为禁用
slow_query_log=1
#慢查询执行的秒数,必须达到此值可被记录
long_query_time=3
#慢查询日志
slow_query_log_file = /var/log/mysql-slow.log
#设置server_id , 同一局域网中需要唯一
server_id=102
#指定不需要同步的数据库名称
binlog-ignore-db=mysql
# 开启二进制日志功能,以备slave作为其他数据库实例的master时使用
log-bin=mall-mysql-slave1-bin
#设置二进制日志使用内存大小(事务)
binlog_cache_size=1M
#设置使用二进制日志格式(mixed,statement,row)
binlog_format=mixed
#而简直日志过期清理时间,默认值为0,表示不自动清理
expire_logs_days=7
#跳过主从复制中遇到的所有错我或指定类型的错误,避免slave端复制中断
#如:1062错误指一些主键重复,1032错误是因为主从数据库数据不一致,设置多个以英文逗号分隔
slave_skip_errors=1062
# relay_log 配置中继日志
relay_log=mall-mysql-relay-bin
# log_slave_updates 表示 slave 将复制时间写进自己的二进制日志
log_slave_updates=1
# slave设置为只读 (具有super权限的用户除外)
read_only=1

5、重启两容器

6、进入master容器并配置

docker exec -it mysql_master_3306 bash
mysql -uroot -p

输入密码:root
切换数据库,挨着输入并执行:

use mysql;
create user 'slave'@'%' identified by '123456';
grant replication slave on *.* to 'slave'@'%';
flush privileges;

查看master数据库状态,并记录file与position值:

show master status;


7、查看master数据库对应的容器ip地址:

docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器id

或者进入master容器使用cat /etc/hosts查看

8、进入slave容器并配置

docker exec -it mysql_slave_3307 bash
mysql -uroot -p

输入密码:root

change master to master_host='172.17.0.3',master_user='slave',master_password='123456',master_port=3306,master_log_file='mall-mysql-bin.000001',master_log_pos=154;

启动并查看状态,Slave_IO_Running以及Slave_SQL_Running都为Yes标识启动成功

start slave;
show slave status\G;

CentOS使用docker部署mysql5.7、可使用navicat连接mysql服务,以及主从同步配置相关推荐

  1. 基于 CentOS Mysql 安装与主从同步配置详解

    CentOS Mysql 安装 Mysql (Master/Slave) 主从同步 1.为什么要使用主从同步 1.如果主服务器出现问题,可以快速切换到从服务器提供的服务 2.可以在从服务器上执行查询操 ...

  2. mysql5.5主从同步配置文件_Windows下的 mysql 5.5主从同步配置

    环境说明: Master:127.0.0.1 3306 Slave:127.0.0.1 3307 MySQL 的 Master 配置: 配置my.ini: [mysqld] # The TCP/IP ...

  3. linux centos 7 docker下载mysql5.7

    docker images(查看镜像,还没有mysql的镜像) docker pull mysql:5.7(下载mysql5.7镜像) 下载完之后 再查看镜像 docker imagers docke ...

  4. windows mysql主主配置_基于docker MySQL数据库主主同步配置(windows上)

    安装docker部分 坑点 docker拉镜像速度过慢 点击docker图标,点击邮件看到setting,setting界面上点击docker engine,配置如图所示 还有两个备用的镜像地址 &q ...

  5. centos mysql 同步时间_centos:mysql主从同步配置(2018)

    centos:mysql主从同步配置(2018) 主服务器:10.1.1.144; 从服务器:10.1.1.163; 配置过程 1.进入主服务器,停止主服务mysql服务: systemctl sto ...

  6. CentOS下MySQL主从同步配置

    (转自)http://apps.hi.baidu.com/share/detail/5882847centos下MySQL主从同步配置 一.环境 主机: master操作系统:centos 5.3 I ...

  7. Docker实践(五)docker部署MySQL5.7

    目录 1,安装 2,选择镜像 3,下载镜像. 4,准备部署 5,创建并启动 6,测试 使用docker容器部署mysql5.7 1,安装 没有docker,首先安装docker,参照Docker简单实 ...

  8. Docker部署MySQL5.7主从复制结构

    目录 准备 基于bin-log文件位置的主从复制 基于事务的主从复制 Mysql复制可以将一个MySQL数据库服务器(主服务器)的数据复制到一个或多个MySQL数据库服务器(从服务器). 默认情况下, ...

  9. Centos,docker部署服务,telnet端口不通

    问题描述 近期在项目上使用docker部署服务时,服务无法被正常调用,服务端口telnet不通.宿主机ip可以ping通,宿主机上部署服务端口可以telnet通,宿主机可以telnet通docker服 ...

最新文章

  1. 关于lombok插件的使用,强大的简化代码工具
  2. 10 迭代器与生成器
  3. 整理:C++中sprintf()函数的使用详解
  4. 南阳理工计算机全国排名,全国工科实力最强的10所高校排名,
  5. Flsak爱家租房--个人信息
  6. python是后端语言还是前端语言_从前端到后台-语言选择
  7. 这个连“炒菜的油”都不放过的“吝啬”男人,却用“吝啬”创造了世界奇迹!...
  8. Java 替换字符串中的回车换行符的方法
  9. EditPlus-CN使用总结
  10. 响应式Web设计:HTML5和CSS3实战
  11. c语言十进制转ieee754代码,C#IEEE754到十进制(C# IEEE754 to decimal)
  12. 硬件学习笔记(器件篇)—— 电感(二)
  13. 建造者模式-JAVA代码实现
  14. vanilla js_用Vanilla js编写前端组件
  15. 通过cmd调用网易云音乐
  16. 在大型数据中心使用BGP进行路由(翻译自RFC7938)
  17. 英雄卡(输入计数)【标记思想】
  18. 计算机主板的选购技巧,电脑主板怎么选择?DIY装机之主板选购指南
  19. 冻肉进口报关注意事项及进口企业都应该具备哪些资质?
  20. 加拿大访问学者家属如何办理探亲签证?

热门文章

  1. 联阳IT976E GPIO读取温度传感器CT1720
  2. DWARF格式对于debug信息的支持
  3. 【服务器】树洞外链搭建图床操作系统
  4. mosquitto 服务器 硬件配置,MAC 下配置MQTT 服务器Mosquitto
  5. LIN ldf文件配置
  6. [agc 049E][凸性dp][小计数] Increment Decrement
  7. 一名程序猿的习惯养成记录手帐(六)
  8. 【公式推导】正规方程
  9. TMS320F28069的硬件I2C一直卡在查询 I2caRegs.I2CSTR.bit.XRDY
  10. Docker下梦织CMS的部署