docker-Laravel-msyql-主從服務部署

Alden發表於2020-01-03

1.mysql部署

mysql映象拉取

docker pull mysql:5.7.13

部署主從mysql配置


參考網址:https://my.oschina.net/u/3773384/blog/1810...

【執行主容器】

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'@'%';

當狀態顯示為上方的一致時表明應該主從配置成功

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會自動忽略配置檔案的讀取

解決方案:

參考網站: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 --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容器環境擴充套件和服務安裝

擴充套件安裝參考網站:https://blog.csdn.net/lggirls/article/deta...

擴充套件安裝路徑

/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.gz https://github.com/phpredis/phpredis/archi...

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

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章