十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
目录一.CentOS7.9安装Docker20
网站建设哪家好,找成都创新互联!专注于网页设计、网站建设、微信开发、微信小程序定制开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了萧县免费建站欢迎大家使用!
1.安装yum-utils工具yum install -y yum-utils
2.设置docker的依赖源yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
注释:CentOS直接使用yum命令安装的Docker版本为1.13.1属于旧版docker的最后一个版本,所以需要配置一个repo,才能安装新版的Docker-CE(社区版)。Docker-EE(企业版)需收费读者自行了解即可,这里使用CE社区版
3.安装dockeryum -y install docker-ce
4.查看安装的版本docker -vdocker version
5. 查看配套设置的版本yum list installed | grep docker
6.拉取MySQL8镜像docker pull mysql:8
注解:mysql:5.7代表mysql版本为5.7
查看docker镜像docker images二.部署MySQL集群(一主二从)
1.创建主从MySQL的配置及数据文件的存储目录# 创建主服务的配置目录和数据目录mkdir -p /usr/local/mysqlData/master/cnfmkdir -p /usr/local/mysqlData/master/data# 创建1号从服务器的配置目录和数据目录mkdir -p /usr/local/mysqlData/slave/cnfmkdir -p /usr/local/mysqlData/slave/data# 创建2号从服务器的配置目录和数据目录mkdir -p /usr/local/mysqlData/slave2/cnfmkdir -p /usr/local/mysqlData/slave2/data
创建两个从服务器的配置是因为MySQL配置的server-id不能重复
2.配置主服务器的配置文件vim /usr/local/mysqlData/master/cnf/mysql.cnf
配置文件如下[mysqld]## 设置server_id,注意要唯一server-id=1## 开启binloglog-bin=mysql-bin## binlog缓存binlog_cache_size=1M## binlog格式(mixed、statement、row,默认格式是statement)binlog_format=mixed##设置字符编码为utf8mb4character-set-server = utf8mb4collation-server = utf8mb4_unicode_ciinit_connect='SET NAMES utf8mb4'[client]default-character-set = utf8mb4[mysql]default-character-set = utf8mb4
3.配置从服务器的配置文件# 1号从服务器vim /usr/local/mysqlData/slave/cnf/mysql.cnf# 2号从服务器vim /usr/local/mysqlData/slave2/cnf/mysql.cnf
配置文件如下(1号的server-id设置为2,2号的server-id设置为3,不重复即可)[mysqld]## 设置server_id,注意要唯一server-id=2## 开启binloglog-bin=mysql-slave-bin## relay_log配置中继日志relay_log=edu-mysql-relay-bin## 如果需要同步函数或者存储过程log_bin_trust_function_creators=true## binlog缓存binlog_cache_size=1M## binlog格式(mixed、statement、row,默认格式是statement)binlog_format=mixed##设置字符编码为utf8mb4character-set-server = utf8mb4collation-server = utf8mb4_unicode_ciinit_connect='SET NAMES utf8mb4'slave_skip_errors=1062[client]default-character-set = utf8mb4[mysql]default-character-set = utf8mb4
4.创建主从MySQL镜像# 主服务器实例化docker run -itd -p 3307:3306 --name master -v /usr/local/mysqlData/master/cnf:/etc/mysql/conf.d -v /usr/local/mysqlData/master/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:8 # 1号从服务器实例化docker run -itd -p 3308:3306 --name slaver -v /usr/local/mysqlData/slave/cnf:/etc/mysql/conf.d -v /usr/local/mysqlData/slave/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:8 # 2号从服务器实例化docker run -itd -p 3309:3306 --name slaver2 -v /usr/local/mysqlData/slave2/cnf:/etc/mysql/conf.d -v /usr/local/mysqlData/slave2/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:8
参数解释
-p 指定容器暴露的端口,宿主机(物理机)端口: docker实例端口
-p 3307:3306 把物理机的3307端口给实例的端口3306端口进行映射
-v 给容器挂载存储卷,挂载到容器的某个目录
-v /usr/local/mysqlData/master/cnf:/etc/mysql/conf.d 把刚创建的配置文件夹映射成实例的/etc/mysql/conf.d
-v /usr/local/mysqlData/master/data:/var/lib/mysql 数据文件夹的映射
-e 指定环境变量,容器中可以使用该环境变量
-e MYSQL_ROOT_PASSWORD=123456 设置MySQL的root账号密码为123456
5.查看已创建的实例docker ps -a
6.创建mysql连接用户# 创建用户 reader设置密码为readerCREATE USER reader IDENTIFIED BY 'reader';# 给予reader同步权限GRANT REPLICATION SLAVE ON *.* to 'reader'@'%';FLUSH PRIVILEGES;
注解:其余的用户,远程连接的自行设置
7.获取主服务器的连接信息# MySQL的连接信息SHOW MASTER STATUS;#新开连接 获取master实例的在docker的地址docker inspect --format='{{.NetworkSettings.IPAddress}}' master
从服务器连接主服务器(两台从服务器均是以下操作)# 配置连接的参数change master to master_host='172.17.0.2',master_user='reader',master_password='reader',master_log_file='mysql-bin.000003',master_log_pos=2259;# 启动同步start slave;# 查看是否成功show slave status\G# 两项都为Yes时代表成功。# Slave_IO_Running: Yes# Slave_SQL_Running: Yes# 失败需要使用停止连接后检查其他账号密码,地址,pos等参数# 停止连接,如果一次成功无需使用该命令stop slave;三.结果
主服务器执行命令SHOW SLAVE HOSTS;
能从主服务器查询到两台从服务器的ID以及端口。完成MySQL部署。
到此这篇关于Docker部署MySQL8集群(一主二从)的实现步骤的文章就介绍到这了,更多相关Docker部署MySQL8集群内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!