首页 > 数据库 >docker部署mysql8.0

docker部署mysql8.0

时间:2022-10-23 09:13:46浏览次数:48  
标签:deploy 部署 mysql repl master home mysql8.0 docker

linux环境下基于docker部署并配置mysql8.0

环境
docker-18.06.0
192.168.12.2 20002 主
192.168.12.3 20004 从

1. # 下载mysql的版本

docker pull mysql:8.0.22


2. # 创建文件夹
为docker挂载使用,不明白挂载的可以去学习一下docker基础,可以根据自己的需求创建,我选择在home中
该版本的mysql需要多挂在一个mysql-files,不然启动会报错,找不到该目录

mkdir -p /home/deploy/mysql/conf
mkdir -p /home/deploy/mysql/data
mkdir -p /home/deploy/mysql/mysql-files
mkdir -p /home/deploy/mysql/pid
mkdir -p /home/deploy/mysql/socket
useradd -s /sbin/nologin -M mysql
chown -R mysql:mysql /home/deploy/mysql
chmod -R 777 /home/deploy/mysql

3. # 配置文件
master配置
vim /home/deploy/mysql/conf/my.cnf
[client]
user=mysql
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
server-id=1
user=mysql
datadir=/home/deploy/mysql/data
default_authentication_plugin=mysql_native_password
transaction_isolation=READ-COMMITTED
max_connections=5000
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
lower_case_table_names=1
---------------------------------------------------------------------------------------
slave配置
vim /home/deploy/mysql/conf/my.cnf
[client]
user=mysql
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
server-id=2
user=mysql
datadir=/home/deploy/mysql/data
default_authentication_plugin=mysql_native_password
transaction_isolation=READ-COMMITTED
max_connections=5000
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
lower_case_table_names=1
-------------------------------------------------------------------------------------------------------
然后就可以挂载运行了

4. # 运行mysql容器
docker run -p 20002:3306 --name mysql \
-v /home/deploy/mysql/conf:/etc/mysql \
-v /home/deploy/mysql/data:/var/lib/mysql \
-v /home/deploy/mysql/mysql-files/:/var/lib/mysql-files \
-v /home/deploy/mysql/socket/:/var/run/mysqld \
-e MYSQL_ROOT_PASSWORD=butel \
-d mysql:8.0.22

docker run -p 3306:3306 --name mysql-01 \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=root \
--restart=always \
-d mysql:8.0.22


5. # 查看容器状态
[root@localhost mysql]# docker ps -a |grep mysql
bf0f36089b00 mysql:8.0.22 "docker-entrypoint.s…" 22 hours ago Up 2 hours 33060/tcp, 0.0.0.0:20002->3306/tcp mysql

6. # 连接容器,登录mysql
[root@localhost mysql]# docker exec -it bf0f36089b00 /bin/bash
root@bf0f36089b00:/# mysql -uroot -pbutel
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 258
Server version: 8.0.22 MySQL Community Server - GPL

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

设置主主同步

7. 进入容器后,我们需要连接其MySQL服务:
然后我们需要为从服务器创建一个可以用来master服务器的账户,也就是创建一个专门用来复制binlog的账号,并且赋予该账号复制权限,其命令如下:

主:
create user 'repl' @'192.168.12.3' identified by 'butel'; 谁能连接我 对方的ip 允许slave12.3使用repl用户butel密码连接我
GRANT ALL PRIVILEGES ON *.* TO 'repl'@'192.168.12.3'; 连接我有啥权限 对方的ip
FLUSH PRIVILEGES;
从:
create user 'repl' @'192.168.12.2' identified by 'butel'; 允许master12.2使用repl用户butel密码连接我
GRANT ALL PRIVILEGES ON *.* TO 'repl'@'192.168.12.2'; 连接我有啥权限 对方的ip
FLUSH PRIVILEGES;

8. 从节点尝试使用repl用户和butel密码登录主节点
mysql -urepl -pbutel -h192.168.12.2 -P20002 salve 使用repl连接master
mysql -urepl -pbutel -h192.168.12.3 -P20004 master使用repl连接salve
9. 接着我们需要查看master节点的binlog状态:

mysql> show master status;
+---------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000004 | 827 | | | |
+---------------+----------+--------------+------------------+-------------------+

10. 从节点上操作(指定master节点信息)
mysql> stop slave;
mysql> change master to master_host='192.168.12.2', master_user='repl', master_password='butel', master_port=20002, master_log_file='binlog.000004', master_log_pos=827;
mysql> start slave;
mysql> show slave status \G;

注:上述命令中,各个参数的含义其实比较好理解,主要就是指定master服务的ip、用户名、密码、端口,以及master节点的binlog文件和log的position。这里的binlog文件和log的position就是前面我们show master status;命令的执行结果,最后我们需要开启主从复制:

11. 主节点上操作(指定master节点信息)
mysql> stop slave;
mysql> change master to master_host='192.168.12.3', master_user='repl', master_password='butel', master_port=20004, master_log_file='binlog.000004', master_log_pos=827;
mysql> start slave;
mysql> show slave status \G;

12.验证

标签:deploy,部署,mysql,repl,master,home,mysql8.0,docker
From: https://www.cnblogs.com/xgsh/p/16817887.html

相关文章

  • 部署YUM仓库及NFS共享服务
    YUMYUM简介CentOS使用yum和dnf解决rpm的包依赖关系。YUM:rpm的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包,up2date的替代工具,CentOS8使用dnf代替了yum......
  • docker使用过程中遇到的问题
    问题描述使用docker-compose启动时,报错CannotautolaunchD-BuswithoutX11$DISPLAY...CannotautolaunchD-BuswithoutX11$DISPLAY...解决方法问题出在Linux缺......
  • docker中安装centos
    拉取docker镜像:dockerpullcentos启动docker镜像,并将容器的22端口映射到本机50001端口:dockerrun-it-p50001:22--privilegedcentos/usr/sbin/init进入容器:doc......
  • 基于PaddleX的树叶数据集的分类训练与安卓部署
    1.简述本次的任务是针对树叶的图片数据集进行分类。约24694个图片。185个类别。本次是用的是PaddleX的AI快速开发套件和安卓demo部署。2.数据预处理2.1.导入Paddle#......
  • Linux YUM仓库部署
    导图1.yum简介yum是一个基于RPM包(是Red-HatPackageManager红帽软件包管理器的缩写)构建的软件更新机制,能够自动解决软件包之间的依赖关系。解决了日常工作中的大量查找......
  • Docker基础:Docker可视化面板portainer介绍
    今天给大家分享Docker可视化面板portainer工具介绍,希望对大家能有所帮助!1、什么是portainer?Portainer是Docker的图形化管理WEB工具,由GO语言编写的,提供状态显示、应用模板快......
  • Docker基础:容器元数据详解
    今天给大家介绍Docker容器元数据里面包含内容详解,如有不当之处,欢迎大家指正。查看容器元数据主要通过dockerinspect容器id进行查看。今天通过docker安装的mysql查看启动的......
  • Dcoker实战:Linux环境安装mysql8.0.27安装步骤
    ​今天给大家分享Centos8系统下安装mysql8.0.27,具体参考下面的步骤就可以使用Docker正确安装mysql。1、拉取镜像#拉取最新的mysql版本dockerpullmysql#查看mysql镜像dock......
  • docker 下安装redis
    1、查看redis镜像dockersearchredis2、拉取redis镜像dockerpullredisdockerpullredis:XX//拉取制定版本,如:dockerpullredis:3.2dockerim......
  • centos8 下docker安装mysql
    1、安装dockerhttps://www.cnblogs.com/bk-your/p/16816372.html//安装docker地址2、docker拉取5.7版本的mysqldockerpullmysql:5.7//拉取镜像3、查看拉......