docker安装mysql

安装mysql

复制代码
docker pull mysql:8.0.31

单机启动:

复制代码
docker run -itd --name mysql1 -p 3305:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.31 --lower_case_table_names=1

单机指定配置文件启动:

bash 复制代码
docker run \ 
--name mysql-8 \ 
-d \ 
-p 3306:3306 \ 
--restart unless-stopped \ 
-v /home/mysql/log:/var/log/mysql \ 
-v /home/mysql/data:/var/lib/mysql \ 
-v /home/mysql/conf:/etc/mysql/conf.d \ 
-e TZ=Asia/Shanghai \ 
-e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.31

主从启动:

创建mysql配置文件:my.cnf

主库配置:

XML 复制代码
[client]
## 默认编码格式
default-character-set=utf8mb4
[mysqld]
## 设置server-id,同一局域网中需要唯一 
server-id=101
## 设置编码格式
character-set-server=utf8mb4
## 允许最大连接数
max_connections=2000
## 是否区分表名大小写 0区分 1不区分
lower_case_table_names=1
## 指定不需要同步的数据库名称 
binlog-ignore-db=mysql,information_schema,performance_schema,sys
## 开启二进制日志功能 
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

## 通用日志
general_log=ON
log_output=FILE,TABLE

## 慢查询日志
slow_query_log=ON
## 超过1秒的sql记录
long_query_time=1

主库启动:

bash 复制代码
docker run -itd \
--name mysql-master \
-p 3306:3306 \
--restart unless-stopped \
-v /home/mysql-master/log:/var/log/mysql \
-v /home/mysql-master/data:/var/lib/mysql \
-v /home/mysql-master/conf:/etc/mysql/conf.d \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:8.0.31

创建备份账号:

sql 复制代码
CREATE USER 'masterSlave'@'%' IDENTIFIED WITH mysql_native_password BY 'ms123456';
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'masterSlave'@'%';
FLUSH PRIVILEGES;

从库配置:

复制代码
## 默认编码格式
[client]
default-character-set=utf8mb4
[mysqld]
## 设置server-id,同一局域网中需要唯一 
server-id=102
## 设置编码格式
character-set-server=utf8mb4
## 是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names=1
## 允许最大连接数
max_connections=2000
## 指定不需要同步的数据库名称 
binlog-ignore-db=mysql,information_schema,performance_schema,sys
## 开启二进制日志功能,以备Slave作为其它数据库实例的Master时使用 
log-bin=mall-mysql-slave-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

## 通用日志
general_log=ON
log_output=FILE,TABLE

## 慢查询日志
slow_query_log=ON
## 超过1秒的sql记录
long_query_time=1

从库1启动:

XML 复制代码
docker run -itd \
--name mysql-slave1 \
-p 3307:3306 \
--restart unless-stopped \
-v /home/mysql-slave1/log:/var/log/mysql \
-v /home/mysql-slave1/data:/var/lib/mysql \
-v /home/mysql-slave1/conf:/etc/mysql/conf.d \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:8.0.31

从库2启动:

XML 复制代码
docker run -itd \
--name mysql-slave2 \
-p 3308:3306 \
--restart unless-stopped \
-v /home/mysql-slave2/log:/var/log/mysql \
-v /home/mysql-slave2/data:/var/lib/mysql \
-v /home/mysql-slave2/conf:/etc/mysql/conf.d \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:8.0.31

当前数据库被当做slave时有用

XML 复制代码
replicate-do-db
replicate-ignore-db

查看bin-log文件名和位置

sql 复制代码
show variables like 'log_%';
sql 复制代码
SHOW MASTER STATUS;

执行sql:

sql 复制代码
change master to master_host='172.17.222.108',master_user='masterSlave',master_password='ms123456',master_port=3306,master_log_file='mall-mysql-bin.000003',master_log_pos=157,master_connect_retry=30;

开启从库:

sql 复制代码
start slave;
show slave status;
相关推荐
敲上瘾8 分钟前
Docker 存储卷(Volume)核心概念、类型与操作指南
linux·服务器·数据库·docker·容器·架构
DemonAvenger16 分钟前
MySQL内存优化:缓冲池与查询缓存调优实战指南
数据库·mysql·性能优化
IT利刃出鞘1 小时前
Docker--宿主机和容器相互拷贝文件
运维·docker·容器
weixin_456904271 小时前
MySQL高级特性详解
数据库·mysql
Mr_hwt_1232 小时前
基于MyCat 中间件实现mysql集群读写分离与从库负载均衡教程(详细案例教程)
数据库·mysql·中间件·mysql集群
zhong liu bin2 小时前
MySQL数据库面试题整理
数据结构·数据库·mysql
luckys.one7 小时前
第9篇:Freqtrade量化交易之config.json 基础入门与初始化
javascript·数据库·python·mysql·算法·json·区块链
jakeswang10 小时前
全解MySQL之死锁问题分析、事务隔离与锁机制的底层原理剖析
数据库·mysql
一成码农11 小时前
MySQL问题7
数据库·mysql
慕容晓开12 小时前
docker,本地目录挂载
docker