docker搭建mysql主从服务器

docker搭建mysql主从服务器,第1张

docker搭建mysql主从服务器

Ubuntu版本:Ubuntu 20.04.2 LTS

mysql版本:8.0.27-0ubuntu0.20.04.1 (Ubuntu)

1.宿主机创建一个data文件(/home/django/mysql_slave/data)

跟着视频学习的时候,走了很多坑,docker镜像版本下载的时候已经指定为8.0.27

  1. 这里通过查看日志可以发现 3306端口不可使用。疑惑,命名配置文件设置的8306就是避免和主机端口冲突呀。这里容器时无法正常启动的。
sudo docker logs mysql-slave # 查看docker日志
sudo docker run --name mysql-slave -e MYSQL_ROOT_PASSWORD=mysql -d --network=host -v /home/django/mysql_slave/data:/var/lib/mysql -v /home/django/mysql_slave/mysql.conf.d:/etc/mysql/mysql.conf.d  mysql
# 创建mysql-slave容器
  1. 经过了很长时间的摸索才找到问题,通过映射端口号,不指定host网络,能够正常的运行容器
sudo docker run --name mysql-slave -e MYSQL_ROOT_PASSWORD=mysql -d -p 8306:3306 -v /home/django/mysql_slave/data:/var/lib/mysql -v /home/django/mysql_slave/mysql.conf.d:/etc/mysql/mysql.conf.d  mysql
  1. 进入容器之后,在容器里面运行mysql正常,端口号是容器下的3306。通过各种查看,发现mysql启动只加载my.cnf的配置文件,而不加载我们提供的/etc/mysql/mysql.conf.d下的配置文件。所以用host网络就无法启动了。是不是把my.cnf文件也给容器,容器就可以正常启动了。这时,我发现其他的千奇百怪的错误,解决了一个,还有一个等着你。好吧,放弃了,不用host了!
udo docker run --name mysql-slave -e MYSQL_ROOT_PASSWORD=mysql -d -p 8306:3306 -v /home/django/mysql_slave/data:/var/lib/mysql mysql:8.0.27
netstat -anp |grep 3306 # 查看8000端口号是否被占用
sudo docker container rm -f mysql-slave # 删除我的容器,重新来过
sudo docker logs mysql-slave # 查看mysql-slave容器的日志
sudo docker exec -it mysql-slave /bin/bash # 执行mysql-slave,进入容器内部查看信息
select user,host from mysql.user; #查看MySQL信息
SHOW GLOBAL VARIABLES LIKE 'PORT'; #查看mysql运行端口号
apt-get update && apt-get install net-tools #安装net工具,这样才可以查看容器用的ip地址

最后:我的解决办法就是通过端口映射正常启动容器之后,进入容器内部运行mysql以及查看用户名和网络,也可以按照需求修改用户信息,这样外部宿主机通过指定的网络端口号就可以运行mysql了。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5433809.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-11
下一篇2022-12-11

发表评论

登录后才能评论

评论列表(0条)

    保存