Docker中创建MySQL容器并搭建数据库主从

一、背景

        服务器资源有限,现需要在同一台服务器上面安装MariaDB和MySQL数据库并且均作为从库去同步同一个MariaDB主库,那么问题就来了同一台Linux服务器上面安装MariaDB和MySQL会有冲突,端口冲突,配置文件路径冲突等,于是就有了这样一个思路,就是原有的MariaDB不动,将MySQL安装在Docker容器中,安装成功之后再来建立主从连接。

二、安装docker

        1、给服务器开启外网权限(要下载软件包)

        2、移除旧版本

sudo yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-selinux \
    docker-engine-selinux \
    docker-engine

        3、安装需要的软件包

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

        4、添加软件源

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

        5、更新yum缓存

sudo yum makecache fast

        6、安装Docker-ce

sudo yum -y install docker-ce

        7、启动Docker后台服务

sudo systemctl start docker

        8、加入开机自启动

sudo systemctl enable docker

        9、验证是否安装成功

sudo docker version 

        10、配置镜像加速

vi /etc/docker/deamon.json

//添加如下内容:

{
"registry-mirrors": ["https://2lqq34jg.mirror.aliyuncs.com"]
}

        11、常用命令

        docker的常用基本命令_docker常用命令_小刘不想敲代码的博客-CSDN博客

三、docker中创建mysql容器

        1、搜索镜像

sudo docker search mysql

        2、 拉取镜像

        这里指定了MySQL的版本号,若想拉取最新的可不用指定版本号,直接使用搜索出来的镜像名即可,这里需要等待几分钟(看网络快慢),拉取镜像需要下载几百兆镜像文件

sudo docker pull mysql:5.7.42

        3、创建MySQL容器

sudo docker run -d -p 3307:3306 --name mysql -v /icc/tools/mysql/data:/var/lib/mysql -v /etc/localtime:/etc/localtime -v /icc/tools/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.42

        4、参数说明

                -d:容器后台运行

                -p 3307:3306:宿主机上3307端口对应容器中3306端口,在外部访问时用的是宿主机上的端口

                --name mysql:给容器起个名字,方便查找和使用

                -v /icc/tools/mysql/data:/var/lib/mysql:将宿主机"/icc/tools/mysql/data"目录挂载到容器的"/var/lib/mysql"目录(具体使用宿主机上哪个目录,自行定义),使得mysql数据文件能在宿主机上进行保存。这一步很重要,如果不挂载的话,一旦容器删除了,那么数据就丢失了!

                -v /etc/localtime:/etc/localtime:将宿主机时间挂载到容器中,使容器中时间和宿主机同步

                -v /icc/tools/mysql/conf:/etc/mysql/conf.d:将宿主机"/icc/tools/mysql/conf"目录挂载到容器的"/etc/mysql/conf.d"目录,这里是在宿主机上预留了一个配置文件挂在地址,因为这个MySQL是装来做从库的,需要从库配置

                -e MYSQL_ROOT_PASSWORD=123456:给root用户设置默认密码为123456

                mysql:5.7.42:镜像名

         5、需要重新部署容器时,先执行如下步骤

sudo docker stop mysql  //关闭容器

sudo docker rm -f mysql  //删除容器(这里不用担心数据丢失,因为已经挂在了数据在宿主机上)

        然后再重新执行步骤3重新创建容器

四、docker中的mysql服务和外部服务配置主从连接

        1、修改MySQL容器中配置文件

cd /icc/tools/mysql/conf  #这是MySQL容器挂载到宿主机的配置文件路径

vi my.cnf    #创建一个配置文件

#添加如下内容

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]  

log-bin=mysql-bin   # [必须]启用二进制日志 
server-id=168      # [必须]服务器唯一ID,默认是1,一般取IP最后一段

#主从数据复制要忽略的表
replicate-wild-ignore-table=mysql.%
replicate-wild-ignore-table=information_schema.%
replicate-wild-ignore-table=performance_schema.%

        2、修改了配置文件之后需要重启mysql容器

sudo docker restart mysql

        3、重启之后进入容器

sudo docker exec -it demo bash

        

        4、登录mysql服务

mysql -uroot -p123456

 

        5、 配置主从连接

change master to master_host='192.168.0.1',master_user='root',master_password='123456', master_log_file='mysql-bin.000001',master_log_pos=328;

        6、启动slave

start slave;

        7、查看连接状态

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值