创建配置文件目录
mkdir -p /docker/mysql/master/conf
进行快速启动 - 查看镜像是否有问题
注:不同的版本的配置文件位置不同,可通过快速创建,查看mysql的对应的配置文件位置,进行对应映射。
# 快速启动
docker run -p 3306:3306 --name mysql8 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.32
# 启动成功后,进入容器内部拷贝配置文件,到宿主主机
docker cp mysql8:/etc/mysql /docker/mysql/master/conf
# 删除刚才的容器,重新创建容器
docker stop mysql8
docker rm mysql8
运行容器
docker run -p 3340:3306 --name mysql_master --privileged=true \
-v /docker/mysql/master/conf:/etc/mysql/conf.d \
-v /docker/mysql/master/logs:/var/log/mysql \
-v /docker/mysql/master/data:/var/lib/mysql \
-v /etc/localtime:/etc/localtime \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.32 --init-connect="SET collation_connection=utf8mb4_0900_ai_ci" --init-connect="SET NAMES utf8mb4" --skip-character-set-client-handshake
进入容器
docker ps -a
docker exec -it mysql_master /bin/bash
# 打开MySQL,输入密码
mysql -uroot -p
# 查看数据库
show databases;
# 创建数据库
create database 数据库;
配置远程连接(对外连接的)
# 在MySQL下执行
use mysql;
[video(video-8PGqMbZO-1716354551447)(type-bilibili)(url-https://player.bilibili.com/player.html?aid=1804892953)(image-https://img-blog.csdnimg.cn/img_convert/d03a705143646f4f3f6ea879d59b2788.png)(title-必看视频!获取2024年最新Java开发全套学习资料 备注Java)]
# 创建对外访问的用户和权限
CREATE USER '用户名'@'%' IDENTIFIED BY '密码';
GRANT ALL ON \*.\* TO '用户名'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
# 退出
exit
创建自定义的配置文件
cd /docker/mysql/master/conf
touch my.cnf
my.cnf文件内容:
[client]
# mysql客户端默认字符集
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
# 跳过密码登录
#skip-grant-tables
#bind-address = 127.0.0.1
init_connect='SET collation_connection = utf8mb4_general_ci'
init_connect='SET NAMES utf8mb4'
# mysql服务端默认字符集
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
skip-character-set-client-handshake
# datadir=/var/lib/mysql
# 主服务器唯一ID
server-id=1
# 设置不要复制的数据库
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
# 设置需要复制的数据库(先创建好)
binlog-do-db=数据库名
# 启用二进制日志,日志的存放地址
log-bin=/var/lib/mysql/mysql-bin
# 主机,1 只读 0 读写(默认是0)
read-only=0
# 设置logbin格式 有3种格式
# 默认 STATEMENT(函数支持不好) 默认的 ROW(行模式大量修改效率不行,但支持存储引擎) MIXED (综合,推荐)
binlog_format=mixed
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
# 二进制日志过期清理时间,默认是0(不自动清理)
expire_logs_days=7
# 单个二进制日志大小
max_binlog_size=200M
# 设置每隔多少次事务提交操作,将这些操作写入二进制日志文件
sync_binlog=1
# 使用mysql\_native\_password插件的认证
# default\_authentication\_plugin=mysql\_native\_password
重启mysql容器
docker ps -a
docker restart 容器id
创建用户并授权给从机
主机创建用户:
# 连接上Mysql服务,执行
create user '用户名'@'%' identified by '密码';
grant replication slave ON \*.\* TO '用户名'@'%';
alter user '用户名'@'%' identified with mysql_native_password by '密码';
查询主机的状态:
show master status;
# 执行上面命令,得到 File(binlog日志) Position(接入点) Binlog\_Do\_DB(要复制的数据库) Binlog\_IgnoreDB()
# 需要记录一下File、Position
从节点配置
创建数据目录
mkdir -p /docker/mysql/slave/data
创建日志目录
mkdir -p /docker/mysql/slave/logs
创建配置文件目录
mkdir -p /docker/mysql/slave/conf
创建自定义的配置文件
cd /docker/mysql/slave/conf
touch my.cnf
mysql.cnf文件内容:
[client]
# mysql客户端默认字符集
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
# 跳过密码登录
#skip-grant-tables
#bind-address = 127.0.0.1
init_connect='SET collation_connection = utf8mb4_general_ci'
init_connect='SET NAMES utf8mb4'
# mysql服务端默认字符集
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
skip-character-set-client-handshake
# datadir=/var/lib/mysql
# 从服务器唯一ID
server-id = 2
# 开启中继日志
relay-log=mysql-relay
# 从机,1 只读 0 读写(默认是0)
read-only=1
# 启用二进制日志,日志的存放地址,如果从机变成主机可以继续使用bin日志
# log-bin=mysql-slave-bin
# 使用mysql\_native\_password插件的认证
# default\_authentiction\_plugin=mysql\_native\_password
运行容器
docker run -p 3341:3306 --name mysql_slave --privileged=true \
-v /docker/mysql/slave/conf:/etc/mysql/conf.d \
-v /docker/mysql/slave/logs:/var/log/mysql \
-v /docker/mysql/slave/data:/var/lib/mysql \
-v /etc/localtime:/etc/localtime \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.32 --init-connect="SET collation_connection=utf8mb4_0900_ai_ci" --init-connect="SET NAMES utf8mb4" --skip-character-set-client-handshake
进入容器
docker ps -a
docker exec -it mysql_slave /bin/bash
配置远程连接(对外连接的)
# 打开MySQL,输入密码
mysql -uroot -p
# 查看数据库
show databases;
# 创建数据库
create database 数据库;
# 查看数据库
# 在MySQL下执行
use mysql;
# 创建对外访问的用户和权限
CREATE USER '用户名'@'%' IDENTIFIED BY '密码';
GRANT ALL ON \*.\* TO '用户名'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
# 退出
exit
1200页Java架构面试专题及答案
小编整理不易,对这份1200页Java架构面试专题及答案感兴趣劳烦帮忙转发/点赞
百度、字节、美团等大厂常见面试题
*.* TO ‘用户名’@‘%’ WITH GRANT OPTION;
FLUSH PRIVILEGES;
退出
exit
# 1200页Java架构面试专题及答案
小编整理不易,对这份**1200页Java架构面试专题及答案**感兴趣劳烦帮忙**转发/点赞**
[外链图片转存中...(img-EWcRLaa3-1716468866609)]
[外链图片转存中...(img-8niyWvqZ-1716468866609)]
# 百度、字节、美团等大厂常见面试题
[外链图片转存中...(img-nVzNLUw5-1716468866610)]