mysql容器 重启_docker安装mysql主从数据库

centos系统安装docker

使用下列命令卸载服务器上之前安装过的docker文件

$ sudo yum remove docker

docker-client

docker-client-latest

docker-common

docker-latest

docker-latest-logrotate

docker-logrotate

docker-engine

安装必需的包,yum-utils用于提供yum-config-manager插件,后面安装docker-ce版本时需要

$ sudo yum install -y yum-utils

device-mapper-persistent-data

lvm2

安装docker-ce稳定版本

$ sudo yum-config-manager

--add-repo

https://download.docker.com/linux/centos/docker-ce.repo

安装最新版本的docker引擎以及容器

$ sudo yum install docker-ce docker-ce-cli containerd.io

启动docker

$ sudo systemctl start docker

验证docker是否安装成功

$ sudo docker run hello-world

运行后输出如下内容,表示docker成功安装

6dbb0e0c9fc8e1604c58a19c5541aad9.png

安装主数据库mysql

通过docker下载MySQL镜像

$ docker pull mysql:5.7

查看已拉下来的mysql镜像

$ docker image ls | grep mysql

运行mysql镜像

$ docker run -p 3301:3306 --name master-mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

  • -p:表示端口映射,在外部可以通过【ip:3301】链接master-mysql服务
  • –name:指定运行的容器名称为master-mysql
  • -e:传递环境参数,此处是将master-mysql的密码设置为123456
  • -d:表示后台运行查看运行的所有容器

$ docker container ls

通过dokcer logs查看某个容器的运行日志

$ docker logs master-mysql

以终端的形式进入master-mysql容器内部

$ docker exec -it master-mysql /bin/bash

  • -i:让容器的标准输入保持打开
  • -t:让docker分配一个伪终端并绑定到容器的标准输入上

进入终端以后需要编辑mysql的配置文件my.cnf

$ vim /etc/mysql/my.cnf

然后发现master-mysql容器内,识别不了vim命令:bash: vim: command not found,因此需要在容器内部安装vim指令

更新apt-get为最新版本

$ apt-get update

安装vim

$ apt-get -y install vim

安装vim完成后,编辑mysql配置文件

$ vim /etc/mysql/my.cnf

编辑内容如下:

[mysqld]

server-id=1

log-bin=mysql-master-bin

sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

d72fbac013c02dc613def42d1279a454.png

重启MySQL服务

$ service mysql restart

重启完MySQL服务后,master-mysql容器会终止,需要重启master-mysql容器

$ docker start master-mysql

67103b07d601354f6ba41af7129e26fb.png

数据库用户创建与授权

创建用户用于主从数据同步,首先进入master-mysql容器,然后在进入数据库服务中,通过命令创建用户

# 进入mysql-master容器

$ docker exec -it master-mysql /bin/bash

# 进入mysql服务中,在-p后面输入密码,上面指定的密码-e MYSQL_ROOT_PASSWORD=123456

$ mysql -hlocalhost -uroot -p123456

# 创建用户usersync,密码:mastersync

$ create user 'usersync'@'%' identified by 'mastersync';

# 为用户usersync授权主从数据同步

$ grant replication slave,replication client on *.* to 'usersync'@'%';

# 查看是否创建成功用户

$ select user, host from mysql.user;

# 查看是否成功授权用户

$ show grants for 'usersync'@'%';

4af95e2b01443e909abe794ac6bcbfad.png

查看主库binlog日志文件和position

$ show master status;

bf7799380f2919a9ef8132d759d7e6fb.png

记录下日志文件名称:mysql-master-bin.000001,postion:623;后续需要在slave中进行配置

查看容器mysql-master的独立ip,通过命令exit退出mysql,exit容器内部,在容器外执行命令

$ docker inspect --format='{{.NetworkSettings.IPAddress}}' master-mysql

192c7bbf1f3ab7db14b144ad0f81d7b3.png

记录下ip地址,后续需要在slave中进行配置:172.18.0.2

安装从数据库mysql

步骤同安装从mysql数据库

# 启动mysql-slave容器,对应端口为3302 密码为slave

$ docker run -p 3302:3306 --name mysql-slave -e MYSQL_ROOT_PASSWORD=slave -d mysql:5.7

03b5757dff7edd2c284cb08b3b836737.png

# 进入容器

$ docker exec -it mysql-slave /bin/bash

6bc137d63e67a45a40313ac0c99074b5.png

# 安装vim工具

$ apt-get update

$ apt-get -y install vim

# 安装vim完成后,编辑mysql配置文件

$ vim /etc/mysql/my.cnf

my.cnf编辑内容如下,配置成只读

[mysqld]

server-id=2

log-bin=mysql-slave-bin

sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

read_only=1

cc0a48917ee2c0fc5db641f5f8e3f0da.png

配置完成后,保存修改,然后重启服务

# 重启MySQL服务

$ service mysql restart

# 重启mysql-slave容器

$ docker start mysql-slave

# 进入mysql-slave容器

$ docker exec -it mysql-slave /bin/bash

# 进入mysql服务中,在-p后面输入密码,上面指定的密码-e MYSQL_ROOT_PASSWORD=slave

$ mysql -hlocalhost -uroot -pslave

206b7914c0cd3e2f6ef72d11a898f39b.png

链接master,设置数据同步的参数

# 链接主库

$ change master to master_host='172.18.0.2', master_user='usersync', master_password='mastersync', master_port=3306, master_log_file='mysql-master-bin.000001', master_log_pos=623, master_connect_retry=30;

19d9b91af2fae461ec79c5bab4a4473d.png

# 查看salve状态, 此时状态:Slave_IO_Running: No, Slave_SQL_Running: No

$ show slave status G;

303f335f37e061544ff45045be5a6a55.png

# 开启主从复制

$ start slave;

# 在查看slave的Slave_IO_Running和Slave_SQL_Running状态,如果都是yes,则表示链接成功

$ show slave status G;

56b9d77896ec746c6fed4f86ee6a9146.png

验证主从是否安装成功

用navicat工具登录主库和从库,使用root账户登录,在主库中新建表,然后打开从库,查看是否也在从库中新建了表,如果在从库中新建了表,则表示主从数据库搭建成功。

连接mysql主库:

568f69ede9dce1d9d1d86c2883506859.png

连接mysql从库:

7fc1579b90044727765578f8d9c309f3.png

在主库master中新建标test-db

3f9c0eb3ca7c41e9addf072a2cd3ecac.png

刷新从库slave后,发现在slave库中也存在test-db库,即表示主从部署成功

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值