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](https://img-blog.csdnimg.cn/img_convert/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](https://img-blog.csdnimg.cn/img_convert/d72fbac013c02dc613def42d1279a454.png)
重启MySQL服务
$ service mysql restart
重启完MySQL服务后,master-mysql容器会终止,需要重启master-mysql容器
$ docker start master-mysql
![67103b07d601354f6ba41af7129e26fb.png](https://img-blog.csdnimg.cn/img_convert/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](https://img-blog.csdnimg.cn/img_convert/4af95e2b01443e909abe794ac6bcbfad.png)
查看主库binlog日志文件和position
$ show master status;
![bf7799380f2919a9ef8132d759d7e6fb.png](https://img-blog.csdnimg.cn/img_convert/bf7799380f2919a9ef8132d759d7e6fb.png)
记录下日志文件名称:mysql-master-bin.000001,postion:623;后续需要在slave中进行配置
查看容器mysql-master的独立ip,通过命令exit退出mysql,exit容器内部,在容器外执行命令
$ docker inspect --format='{{.NetworkSettings.IPAddress}}' master-mysql
![192c7bbf1f3ab7db14b144ad0f81d7b3.png](https://img-blog.csdnimg.cn/img_convert/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](https://img-blog.csdnimg.cn/img_convert/03b5757dff7edd2c284cb08b3b836737.png)
# 进入容器
$ docker exec -it mysql-slave /bin/bash
![6bc137d63e67a45a40313ac0c99074b5.png](https://img-blog.csdnimg.cn/img_convert/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](https://img-blog.csdnimg.cn/img_convert/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](https://img-blog.csdnimg.cn/img_convert/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](https://img-blog.csdnimg.cn/img_convert/19d9b91af2fae461ec79c5bab4a4473d.png)
# 查看salve状态, 此时状态:Slave_IO_Running: No, Slave_SQL_Running: No
$ show slave status G;
![303f335f37e061544ff45045be5a6a55.png](https://img-blog.csdnimg.cn/img_convert/303f335f37e061544ff45045be5a6a55.png)
# 开启主从复制
$ start slave;
# 在查看slave的Slave_IO_Running和Slave_SQL_Running状态,如果都是yes,则表示链接成功
$ show slave status G;
![56b9d77896ec746c6fed4f86ee6a9146.png](https://img-blog.csdnimg.cn/img_convert/56b9d77896ec746c6fed4f86ee6a9146.png)
验证主从是否安装成功
用navicat工具登录主库和从库,使用root账户登录,在主库中新建表,然后打开从库,查看是否也在从库中新建了表,如果在从库中新建了表,则表示主从数据库搭建成功。
连接mysql主库:
![568f69ede9dce1d9d1d86c2883506859.png](https://img-blog.csdnimg.cn/img_convert/568f69ede9dce1d9d1d86c2883506859.png)
连接mysql从库:
![7fc1579b90044727765578f8d9c309f3.png](https://img-blog.csdnimg.cn/img_convert/7fc1579b90044727765578f8d9c309f3.png)
在主库master中新建标test-db
![3f9c0eb3ca7c41e9addf072a2cd3ecac.png](https://img-blog.csdnimg.cn/img_convert/3f9c0eb3ca7c41e9addf072a2cd3ecac.png)
刷新从库slave后,发现在slave库中也存在test-db库,即表示主从部署成功
![1aa89ca9d36a103a528df368aff3a093.png](https://img-blog.csdnimg.cn/img_convert/1aa89ca9d36a103a528df368aff3a093.png)