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;
相关推荐
没有bug.的程序员34 分钟前
MySQL 在金融系统中的应用:强一致性与高可用架构实战
java·mysql·金融·架构·高可用·强一致性
荒村瘦马2 小时前
MySQL中SELECT 语句如何 INTO OUTFILE 保存数据到文件
数据库·mysql·导出文件·into outfile
小Lu的开源日常2 小时前
如何使用 GitHub Action 发布 Docker 镜像
docker·开源·github
神秘人X7073 小时前
docker安装
docker·容器·eureka
失因3 小时前
Docker 容器与镜像
java·运维·spring cloud·docker·容器
耳东哇3 小时前
sentinel docker gateway k8s 集群 主从
docker·gateway·sentinel
费益洲6 小时前
Docker 网络详解:(二)虚拟网络环境搭建与测试
docker·容器
郁大锤6 小时前
Docker 中删除镜像与容器的完整指南
运维·docker·容器
xx.ii6 小时前
docker镜像和容器
docker·容器·eureka
johnny2336 小时前
Docker Desktop实战、问题记录
docker