欢迎访问我的博客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. 140种Python标准库、第三方库和外部工具

    导读:Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库.函数和外部工具.其中既有Python内置函数和标准库,又有第三方库和工具. 这些库可用于文件读写.网络抓取和解析.数据连 ...

  2. C# 使用转换语义版本号

    本文告诉大家如何转换语义版本号,那么什么是语义版本号,语义版本号(semantic version)就是版本号带 alpha 等的版本号 在以前的版本号都是这样 1.2.1 的格式,这个格式可以使用微 ...

  3. H3C 衡量路由协议的主要指标

  4. Jasypt加密SpringBoot配置文件

    如果 SpringBoot 的 properties 文件中含有用户名密码等敏感信息,为了安全起见需要对明文密码加密.Jasypt 是用来加密的 jar 包. 1.引入 Jasypt 在 pom.xm ...

  5. 获取active nn并替换hue.ini

    namenodelists="nnip1,nnip2" nn1=$() nn2=$() nn1state=$(curl "http://$nn1:50070/jmx?qr ...

  6. Vsual Studio 2010可用的sqlite驱动程序(实体数据模型使用)

    背景 昨天一个旧的项目(.net framework 4 + EF4 +sqlite + edmx db first),数据库结构有变更,要更新实体edmx模型 先是到官网下载最新的驱动,结果不能更新 ...

  7. PostgreSQL 遇到 column "value" does not exist

    初次使用PostgreSQL,在执行插入语句的时候死活插入不进去数据 INSERT INTO pre_trait ( archive_id, apply_from, owner_area_code ) ...

  8. [译] 重新思考 1 号进程 / Rethinking PID 1

    By Lennart Poettering 译 SReadFox 原文链接:http://0pointer.de/blog/projects/systemd.html 译注:笔者大约在 2011 年读 ...

  9. 使用 Postman 测试你的 API

    使用 Postman 测试你的 API Intro 最近想对 API 做一些自动化测试,看了几个工具,最后选择了 postman,感觉 postman 的设计更好一些,我们可以在请求发送之前和请求获取 ...

  10. java引用类型的浅拷贝与深拷贝理解

    1.浅拷贝 只会复制地址值,也就是同一个对象两个引用,只是复制了一个引用而已. 2.深拷贝 重新在堆里创建一个新对象给新引用,连同地址值也不一样. 首先要知道Object的clone()方法, pub ...