欢迎访问我的博客http://www.liyblog.top 我的博客里会有更详细的信息,而且留言必回,手把手给你解释不懂的地方
 
1.mysql部署
 
mysql镜像拉取
docker pull mysql:5.7.13
 
部署主从mysql配置

 
【运行主容器】
 
docker run --name ipbank_master -p 8016:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.13
 
2.使用Navicat或者workbanch友好的图像化界面执行SQL,执行完毕,结果如图所示为正常
GRANT REPLICATION SLAVE ON *.* to 'backup'@'%' identified by 'backup';
show grants for 'backup'@'%';
 
3.拷贝一份MySQL配置文件
docker cp ipbank_master:/etc/mysql/my.cnf /opt/server/ipbank/master/my.cnf
4.修改my.cnf,在 [mysqld] 节点最后加上后保存
log-bin=mysql-bin 
server-id=1
5.将修改后的文件覆盖Docker中MySQL中的配置文件
docker cp /opt/server/ipbank/master/my.cnf ipbank_master:/etc/mysql/my.cnf
 
6.重启 mysql 的docker , 让配置生效
docker restart ipbank_master
 
【运行从容器】
 
1.运行从mysql服务
docker run --name ipbank_slave1 -p 8017:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.13
 
2.拷贝一份MySQL配置文件
docker cp ipbank_slave1:/etc/mysql/my.cnf /opt/server/ipbank/slave1/my.cnf
 
 
4.修改my.cnf,在 [mysqld] 节点最后加上后保存
log-bin=mysql-bin 
server-id=2
 
5.将修改后的文件覆盖Docker中MySQL中的配置文件
docker cp /opt/server/ipbank/slave1/my.cnf ipbank_slave1:/etc/mysql/my.cnf
 
6.重启slave1容器,使配置生效
docker restart ipbank_slave1
 
 
7.使用Navicat或者workbanch友好的图像化界面执行SQL(host处如果部署的为本地服务应该填写本地服务固定IP地址,不能直接填写127.0.0.1或者localhost)
CHANGE MASTER TO
MASTER_HOST='192.168.1.106' 
MASTER_PORT=3306,
MASTER_USER='root',
MASTER_PASSWORD='123456';
 
START SLAVE;
 
参数解释
MASTER_HOST 填Navicat连接配置中的ip应该就可以
MASTER_PORT 主容器的端口
MASTER_USER 同步账号的用户名
MASTER_PASSWORD 同步账号的密码
 
 
8.检查是否配置成功
 
show slave status;
 
当状态显示为上方的一致时表明应该主从配置成功
 
9.如果失败,可以查看日志追踪,查看具体的报错日志
docker logs slave -f
 
10.如果 Slave_IO_Running与Slave_SQL_Running 两个参数不是yes可以使用下面的方案解决
此方法适用首先要保证库的数据是一致的,否则这种方法无效
 
stop slave; 
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1; 
start slave;
 
11.出现slave容器配置主从出现(Slave is not configured or failed to initialize properly)报错
此错误有两种可能
 
一。是因为mysql中配置文件权限问题 ,配置文件权限分配过大,mysql会自动忽略配置文件的读取
解决方案:
找到my.conf文件,设置权限为644 
命令:chmod 644 /etc/mysql/my.cnf
 
二。从 5.6.25 版本使用 innobackupex 备份,在 5.7.15 版本中应用恢复,在 5.6.25 版本中,主从信息记录到了文件中,5.7.15 版本中的主从信息记录的是在表中,所以数据备份后需要对下面几张表进行重建
 
进入mysql后使用如下命令
use mysql;
drop table slave_master_info;
drop table slave_relay_log_info;
drop table slave_worker_info;
drop table innodb_index_stats;
drop table innodb_table_stats;
source /usr/share/mysql/mysql_system_tables.sql(需要查找sql文件位置 可以使用命令:find / -name mysql_system_tables.sql)
 
外网使用记录(master,slave1)
 
mysql挂载到data下
(master) 
docker run -it --name zxb_mysql_master -p 8016:3306 -e MYSQL_ROOT_PASSWORD=e5244a754923b46c --privileged=true -v /data/ZhengXin/mysql/conf/master.cnf:/etc/mysql/my.cnf -v /data/ZhengXin/mysql/data:/var/lib/mysql -v /data/ZhengXin/mysql/logs:/var/log/mysql -d mysql:5.7.13
 
(slave1) 
docker run -it --name zxb_mysql_slave1 -p 8017:3306 -e MYSQL_ROOT_PASSWORD=e5244a754923b46c --privileged=true -v /data/ZhengXin/mysql/conf/slave1.cnf:/etc/mysql/my.cnf -v /data/ZhengXin/mysql/slave1_data:/var/lib/mysql -v /data/ZhengXin/mysql/logs:/var/log/mysql -d mysql:5.7.13
 
 
 

 
2.拉取redis镜像
docker pull redis:3.2
 
 
3.运行redis镜像
docker run --name ipbank_redis -p 8015:6379 -d redis:3.2
 
4.拉取php镜像
docker pull php:7.1-fpm
 
5.运行php镜像
运行php镜像时:
    1.指定映射端口
    2.挂载本地目录
    3.link需要的mysql,redis
 
docker run -d -p 8029:9000 --name zxb_phpserve -v /opt/server/ipbank/www:/var/www/html -v /opt/server/ipbank/php:/usr/local/etc/php --link ipbank_redis:ipbank_redis --privileged=true php:7.2-fpm
 
 
6.运行nginx镜像
运行php镜像时:
    1.指定映射端口
    2.挂载本地目录
    3.link需要的php_serve
 
docker run --name zxb_nginxserve -d -p 8028:80 -v /opt/server/ipbank/www:/usr/share/nginx/html -v /opt/server/ipbank/nginx:/etc/nginx -v /opt/server/ipbank/logs/nginx.logs:/var/log/nginx --link zxb_phpserve:zxb_phpserve --privileged=true nginx
 
docker run --name zxb_nginxserve -d -p 8068:80 -v /Users/liyi/school_server/scratch-php/www:/usr/share/nginx/html -v /Users/liyi/school_server/scratch-php/nginx:/etc/nginx -v /Users/liyi/school_server/scratch-php/logs/nginx.logs:/var/log/nginx --link scratch_phpserve:scratch_phpserve --privileged=true nginx
 
7.php容器环境扩展和服务安装
 
扩展安装路径
/usr/local/bin
 
Gd扩展安装
apt-get install -y libwebp-dev libjpeg-dev libpng-dev libfreetype6-dev
 
docker-php-ext-configure gd --with-webp-dir=/usr/include/webp --with-jpeg-dir=/usr/include --with-png-dir=/usr/include --with-freetype-dir=/usr/include/freetype2
 
docker-php-ext-install gd
 
Curl扩展安装
apt-get install libcurl4-openssl-dev
docker-php-ext-install curl
 
常见问题参考网站
configure: error: jpeglib.h not found.
解决办法:
apt-get install libjpeg-dev
 
(如果 无法解压 直接复制redis地址下载到本机)
 
tar xfz /tmp/redis.tar.gz
rm -r /tmp/redis.tar.gz
mkdir -p /usr/src/php/ext
mv phpredis-3.1.3 /usr/src/php/ext/redis
docker-php-ext-install redis
 
安装gmp扩展
 
apt-get install -y libgmp-dev
ln -s /usr/include/x86_64-linux-gnu/gmp.h /usr/include/gmp.h \
docker-php-ext-install gmp
 
如果无法创建ini文件需要创建下列文件夹
 
mkdir /usr/local/etc/php/conf.d/
 
 
 
Nginx 配置文件缺失问题
 
需要在映射文件拉去nginx的配置文件,地址在码云上有
 
Mysql无法连接的问题(Access denied for user 'root'@'172.17.0.1')
 
需要在映射文件拉取nginx的配置文件,地址在码云上有
 
安装crontab 定时任务
 
apt-get install cron
 
service cron start
 
安装mysqli扩展
 
docker-php-ext-install mysqli
 
安装pdo_mysql扩展
 
docker-php-ext-install pdo_mysql
 
安装bcmath扩展
 
docker-php-ext-install bcmath
 
安装zip, unzip
apt-get install --yes zip unzip
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

docker-主从服务部署的更多相关文章

  1. docker微服务部署之:七、Rancher进行微服务扩容和缩容

    docker微服务部署之:六.Rancher管理部署微服务 Rancher有两个特色用起来很方便,那就是扩容和缩容. 一.扩容前的准备工作 为了能直观的查看效果,需要修改下demo_article项目 ...

  2. docker微服务部署之:六、Rancher管理部署微服务

    docker微服务部署之:五.利用DockerMaven插件自动构建镜像 一. 什么是Rancher Rancher是一个开源的企业级容器管理平台.通过Rancher,企业再也不必自己使用一系列的开源 ...

  3. docker微服务部署之:五、利用DockerMaven插件自动构建镜像

    docker微服务部署之:四.安装docker.docker中安装mysql和jdk1.8.手动构建镜像.部署项目 在上一篇文章中,我们是手动构建镜像,即: 4.1.2.5.1.2.6.1.2中的将d ...

  4. docker微服务部署之:四、安装docker、docker中安装mysql和jdk1.8、手动构建镜像、部署项目

    docker微服务部署之:三,搭建Zuul微服务项目 1.Centos7安装Docker 详见:Centos7安装Docker 2.Docker中安装jdk1.8 详见:使用Docker构建jdk1. ...

  5. docker微服务部署之:三,搭建Zuul微服务项目

    docker微服务部署之:二.搭建文章微服务项目 一.新增demo_eureka模块,并编写代码 右键demo_parent->new->Module->Maven,选择Module ...

  6. docker微服务部署之:二、搭建文章微服务项目

    docker微服务部署之:一,搭建Eureka微服务项目 一.新增demo_article模块,并编写代码 右键demo_parent->new->Module->Maven,选择M ...

  7. docker微服务部署之:一,搭建Eureka微服务项目

    先说明一下docker需要搭建的微服务的基本情况: 项目情况:一个demo_parent项目,下面三个子模块:demo_eureka(eureka服务).demo_article(文章服务).demo ...

  8. Redis主从服务部署

    Redis__WindowsServer主从服务部署及调用实例       一.先谈谈单个Redis服务的安装         使用的redis是2.8.17版本,从官网下载解压缩后文件内容为:   ...

  9. Redis__WindowsServer主从服务部署及调用实例

    本文转自:http://www.cnblogs.com/gossip/p/4898653.html 一.先谈谈单个Redis服务的安装         使用的redis是2.8.17版本,从官网下载解 ...

  10. DNS主从服务部署

    (1)节点信息 console01 主DNS 192.168.80.3 192.168.10.3 console02 从DNS 192.168.80.4 192.168.10.4 (2)环境部署 # ...

随机推荐

  1. vue v-for循环中key属性的使用

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. js 键盘事件keyCode 总结

    开发中经常页面中的某些按钮或元素需要绑定到键盘的输入事件 keydown.keyup 事件 keydown 键盘按下触发事件 $("#btn").keydown(function( ...

  3. P1093 铺地毯

    题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 \(n\) 张地毯,编号从 \(1\) 到 \(n\) .现在将这些地毯按 ...

  4. HeidiSQL工具导出导入MySQL数据

    有时候,为了数据方便导出导入SQL,我们可以借助一定的工具,方便我们队数据库的移植,可以达到事半功倍的效果.在这里,就给大家简单的介绍一款能方便导出或者导入MySQL的数据. ①首先,选择你要导出的数 ...

  5. H3C进入目录---用户视图

    进入logfile文件目录 <H3C>cd logfile/        //进入目录 <H3C>pwd             //显示当前所属的目录 cf:/logfil ...

  6. C# 循环的判断会进来几次

    最近有小伙伴告诉我,在循环的判断条件只会计算一次,本金鱼不相信,于是就做了测试,本文记录我做的测试. 先来写一个简单的代码, 就一个循环,循环的判断是从一个函数获取值 class Program { ...

  7. Linux 内核 usb_control_msg 接口

    usb_control_msg 函数就像 usb_bulk_msg 函数, 除了它允许一个驱动发送和结束 USB 控制信息: int usb_control_msg(struct usb_device ...

  8. 轮播图模块(vue)

    轮播图模块(vue) 通过属性方式传值 值为一个数组.每一项含有imgUrl(图片地址).link(跳转链接),link为可选属性 <template> <div class=&qu ...

  9. Android4_学会使用Log打印

    一.Log介绍: Android中的日志工具类是Log(android.util.Log),这个类中提供了如下5个方法来供我们打印日志. Log.v() .用于打印那些最为琐碎的.意义最小的日志信息. ...

  10. unmask

            当我们登录系统之后创建一个文件总是有一个默认权限的,那么这个权限是怎么来的呢?这就是umask干的事情.umask 设置了用户创建文件的默认权限,它与chmod的效果刚好相反,umas ...