docker-laravel-mysql 主从服务部署

参考网站:http://www.liyblog.top/p/11.html

1.mysql部署

mysql镜像拉取

docker pull mysql:5.7.13

部署主从mysql配置

参考网址:https://my.oschina.net/u/3773384/blog/1810111

【运行主容器】

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.检查是否配置成功

showslavestatus;

当状态显示为上方的一致时表明应该主从配置成功

9.如果失败,可以查看日志追踪,查看具体的报错日志

docker logs slave -f

10.如果 Slave_IO_Running与Slave_SQL_Running 两个参数不是yes可以使用下面的方案解决

此方法适用首先要保证库的数据是一致的,否则这种方法无效

stopslave; 

setGLOBALSQL_SLAVE_SKIP_COUNTER=1; 

startslave;

11.出现slave容器配置主从出现(Slave is not configured or failed to initialize properly)报错

此错误有两种可能

一。是因为mysql中配置文件权限问题 ,配置文件权限分配过大,mysql会自动忽略配置文件的读取

解决方案:

参考网站:https://www.jb51.net/article/99027.htm

找到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--linkzxb_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--linkscratch_phpserve:scratch_phpserve --privileged=true nginx

7.php容器环境扩展和服务安装

扩展安装参考网站:https://blog.csdn.net/lggirls/article/details/89395827

扩展安装路径

/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

常见问题参考网站

https://phperzh.com/articles/1789

configure: error: jpeglib.h not found.

解决办法:

apt-get install libjpeg-dev

Redis 安装参考http://www.iamlintao.com/6695.html

(如果 无法解压 直接复制redis地址下载到本机)

curl -L -o /tmp/redis.tar.gzhttps://github.com/phpredis/phpredis/archive/3.1.3.tar.gz

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,542评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,596评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,021评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,682评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,792评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,985评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,107评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,845评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,299评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,612评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,747评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,441评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,072评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,828评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,069评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,545评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,658评论 2 350

推荐阅读更多精彩内容