mysql在docker的部署,mysql简单部署和集群部署
mysql在docker的部署,mysql简单部署和集群部署
mysql在docker的部署
1.创建Dockerfile
vi Dockerfile
#####插入数据
FROM mysql:8.4
# 设置环境变量,配置 MySQL root 用户密码
ENV MYSQL_ROOT_PASSWORD=root
# 设置时区
ENV TZ=Asia/Shanghai
# 复制本地的 SQL 初始化脚本到容器中
# 例如你可以将 SQL 文件放在 ./init-scripts 目录下,这样容器启动时会自动执行这些脚本,你可以加-01,-02前缀按顺序执行
COPY ./init-scripts /docker-entrypoint-initdb.d/
# 暴露 MySQL 默认端口
EXPOSE 3306
# 启动 MySQL 服务
CMD ["mysqld"]
2.创建初始化脚本目录,放入初始化脚本,可加01-,02-前缀按顺序执行
mkdir init-scripts
cd init-scripts
#放入初始化sql文件,如果没有用下面的命令创建
vi 01-init.sql
#####插入数据
CREATE DATABASE IF NOT EXISTS mydatabase;
USE mydatabase;
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(100),
password VARCHAR(100)
);
INSERT INTO users (username, password) VALUES ('admin', 'password');
3.创建存储目录,设置权限
4.构建mysql镜像(必须所在目录包含init-scripts目录(目录包含初始化sql文件)和Dockerfile文件)
5.运行镜像
6.开放端口
mysql集群的搭建
1.搭建基础的mysql环境
**下载网址: https://dev.mysql.com/downloads/mysql/** */
1.1.下载mysql的安装包
安装包如下:mysql-8.0.43-1.el9.x86_64.rpm-bundle.tar
1.2.mysql安装与配置
1.2.1.将压缩包放到/root/mysql下
安装包在我的123网盘中!!!!!
1.2.2.解压mysql包
可能缺失依赖的情况
1.2.3.初始化配置进行登录
#初始化 MySQL 数据库。
mysqld --initialize
#将 MySQL 数据目录的所有者设置为 mysql 用户和组。
chown mysql:mysql /var/lib/mysql -R
#启动 MySQL 服务。
systemctl start mysqld.service
#设置 MySQL 服务开机自启动。
systemctl enable mysqld
#从 MySQL 日志中查找自动生成的 root 用户密码。
cat /var/log/mysqld.log | grep password
mysql -u root -p
1.2.4.更改配置
#更改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
#远程访问授权
CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
#添加用户权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
#权限刷新
FLUSH PRIVILEGES;
1.2.5.使用客户端进行远程连接
前置:如果连接不到开放3306端口
2.搭建mysql集群
先搭建好mysql基础环境,要几个就搭建几个
以一主两从为例
2.1.配置主节点
在主节点(192.168.56.151)的 /etc/my.cnf 增加如下配置
2.2.配置从节点
在从节点(192.168.56.152)的 /etc/my.cnf 添加如下配置
2.3.主节点上创建公共用户并授权
回到主节点上操作
查看主服务器状态
记录一下File
和Position
2.4.从节点的master配置
从节点上对master的配置,根据上一步的结果
注意:
MASTER_HOST:为主节点地址,
MASTER_USER:为上面主节点创建信息同步的test用户,
MASTER_PASSWORD:密码,
MASTER_LOG_FILE:主节点日志文件名字,
MASTER_LOG_POS=:主节点的position
开启同步并显示状态
如果结果如下则显示成功
2.5.同步测试
在主节点上创建一个数据库,看看从数据库是否同步了
评论