欢迎访问我的博客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-learning:7-template-v-bind-with-class-and-style

    绑定元素样式的指令v-bind:class 和v-bind:style 在HTML元素结构中,class和style特性(attribute)是非常突出的,可以为元素添加样式属性(property). ...

  2. WPF 分页控件Pager

    本文为伪原创原文为 NET未来之路的https://www.cnblogs.com/lonelyxmas/p/10641255.html 原文中,页码数量会不断增加,会将下一页的按钮顶出去 修改了一下 ...

  3. Centos6.5_x64-GitLab搭建私有GitHub

              GitLab,是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目. 它拥有与GitHub类似的功 ...

  4. lnmp一键安装,安装php时失败

    查看安装日志 直接cd进入根目录报错内容:configure: error: mcrypt.h not found. Please reinstall libmcrypt 解决办法如下#使用wget可 ...

  5. python列表(list)

    #str #类,字符串 #name = "raitorei" #创建一个对象 #list #类,列表 ##############list类中提供的方法(灰魔法)######### ...

  6. appium启动app(android)

    android ​ Appium 启动APP至少需要5个参数 ​ 'platformVersion','deviceName'.'appPackage'.'appActivity'.'platform ...

  7. 使用rapidjson把文本json数据解析到树状结构

    一个递归搞定 无聊的时候练练手就写了一个 头文件什么的我就不贴了 demo程序是MFC写的 void ParseObject(rapidjson::Value dc, CTreeCtrl * pTre ...

  8. Spring MVC 请求处理过程

    1.  2. 3. 4. 5. 6.

  9. h5项目中关于ios手机软键盘导致页面变形的完美解决方案

    1.项目背景:vue项目,手机加短信验证码登录: 2.问题: 在ios中input吊起软键盘,输入完成后,收起软件盘,页面不会回弹,导致页面下方出现空白,也就是页面变形: 3.最开始的解决方案是,用i ...

  10. ObserverPattern(观察者模式)-----Java/.Net

    当对象间存在一对多关系时,则使用观察者模式(Observer Pattern).比如,当一个对象被修改时,则会自动通知它的依赖对象.观察者模式属于行为型模式