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成功安装

安装主数据库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

重启MySQL服务
$ service mysql restart
重启完MySQL服务后,master-mysql容器会终止,需要重启master-mysql容器
$ docker start master-mysql

数据库用户创建与授权
创建用户用于主从数据同步,首先进入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'@'%';
查看主库binlog日志文件和position
$ show master status;

记录下日志文件名称:mysql-master-bin.000001,postion:623;后续需要在slave中进行配置
查看容器mysql-master的独立ip,通过命令
exit
退出mysql,exit容器内部,在容器外执行命令
$ docker inspect --format='{{.NetworkSettings.IPAddress}}' master-mysql

记录下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
# 进入容器
$ docker exec -it mysql-slave /bin/bash
# 安装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
配置完成后,保存修改,然后重启服务
# 重启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
链接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;
# 查看salve状态, 此时状态:Slave_IO_Running: No, Slave_SQL_Running: No
$ show slave status \G;
# 开启主从复制
$ start slave;
# 在查看slave的Slave_IO_Running和Slave_SQL_Running状态,如果都是yes,则表示链接成功
$ show slave status \G;
验证主从是否安装成功
用navicat工具登录主库和从库,使用root账户登录,在主库中新建表,然后打开从库,查看是否也在从库中新建了表,如果在从库中新建了表,则表示主从数据库搭建成功。
连接mysql主库:

连接mysql从库:

在主库master中新建标test-db

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













