欢迎访问我的博客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. 2018-8-10-win10-uwp-MVVM-语义耦合

    title author date CreateTime categories win10 uwp MVVM 语义耦合 lindexi 2018-08-10 19:16:53 +0800 2018-2 ...

  2. WPF 使用 SharpDx 异步渲染

    本文告诉大家如何通过 SharpDx 进行异步渲染,但是因为在 WPF 是需要使用 D3DImage 画出来,所以渲染只是画出图片,最后的显示还是需要 WPF 在他自己的主线程渲染 本文是一个系列,希 ...

  3. dotnet 通过 WMI 拿到显卡信息

    本文告诉大家如何通过 WMI 拿到显卡信息 如果使用的是 dotnet core 请先引用 Microsoft.Windows.Compatibility 才可以使用 WMI 代码 通过下面的代码可以 ...

  4. 安装 Daloradius

    安装Mariadb yum install -y mariadb-server mariadb systemctl start mariadb systemctl enable mariadb 初始设 ...

  5. 25.python之面向对象

    一 三大编程范式 正本清源一:有人说,函数式编程就是用函数编程--->傻逼 编程范式即编程的方法论,标识一种编程风格 大家学习了基本的python语法后,大家就可以写python代码了,然后每个 ...

  6. Python深层拷贝

    import copy new_instance = copy.deepcopy(instance)

  7. JS事件之自建函数bind()与兼容性问题解决

    JavaScript事件绑定常用方法 对象.事件 = 函数; 它只能同时为一个对象的一个事件绑定一个响应函数 不能绑定多个,如果有多个,后面的会覆盖前面的 addEventListener() 此方法 ...

  8. 本地项目推送到coding

      当我们本地新建了一个项目,需要放到coding上维护时,按照下面步骤即可做到. 1.先在coding上新建一个项目,并完成初始化. 2.进入到本地项目的目录下 //初始化本地仓库 a:git in ...

  9. 【elasticsearch】数据早8小时Or晚8小时,你知道为什么吗,附解决方案

    前言 这篇文章,不会解释什么是本初子午线,只想以做实验的方式来理解数据差8小时的问题.下面就先说结论,再来谈原理. 解决方案 想必大家都很清楚:中国标准时间= UTC + 8小时. 那么所有和时区有关 ...

  10. JAVA CONCURRENT FRAMEWORK

    1.ConcurrentHashMap 在并发中使用hashmap容易导致死锁,hashmap存在以下问题 1.线程不安全的hashmap 在多线程环境下使用hashmapPut操作时会引起死循环,因 ...