公司項目要上線項目,買了兩臺云服務器,需進行環(huán)境部署(1臺接入公網(wǎng),一臺只能局域網(wǎng)訪問),主要部署以下內(nèi)容
1、服務器之間配置ssh免密
2、離線docker部署
3、docker鏡像遷移
4、redis服務
5、minio文件服務
6、kkFileView文件預覽服務
7、mysql主從搭建
目錄
1、配置兩臺服務器ssh免密,方便文件傳輸
2、離線docker部署
?3、docker鏡像遷移
docker mysql文件遷移
4、redis服務
5、minio文件服務
6、kkFileView文件預覽服務
7、mysql主從搭建
1、mysql主節(jié)點
2、mysql從節(jié)點
3、出現(xiàn)的問題
1、slave_io_running:connecting解決方法
?2、slave_io_running:no解決方法(可能原因:server-uuid主從節(jié)點相同)
3、Slave_SQL_Running: No?
1、配置兩臺服務器ssh免密,方便文件傳輸
配置免密
1、更改host 和修改主機名
vim /etc/hosts
? 在最下面映射IP,使得配置的node01,映射到192.168.52.100上面?
192.168.52.100 node01
192.168.52.101 node02
vim /etc/hostname?
2、配置免密,生成服務器的公鑰私鑰,
?配置免密如果是root用戶則進入 cd ?/root/.ssh/?
ssh-keygen -t rsa
3、把公鑰拷貝到node01上去,生成authorized_keys文件包含兩個節(jié)點的公鑰
ssh-copy-id ?node01
4、在node01上將,生成的公共密匙authorized_keys拷貝到node02中?
scp authorized_keys node02:$PWD
5、同樣的操作在node02上面,此時就可以使用ssh 免密登錄了
2、離線docker部署
下載地址:Index of linux/static/stable/x86_64/
我下載的是下面這個
因為我是將下載好的docker文件上傳到公網(wǎng)的,然后再 通過局域網(wǎng)上傳到寧外的node02服務器上,
scp?docker-24.0.4.tgz node02:$PWD
1、解壓文件
tar zxf? docker-24.0.4.tgz?
?2、將docker 相關命令拷貝到 /usr/bin
sudo cp docker/* /usr/bin/
3. 啟動Docker守護程序
?sudo dockerd &
4、驗證是否安裝成功,執(zhí)行docker info命令,若正常打印版本信息則安裝成功。
?docker info
5、在 /usr/lib/systemd/system/ 目錄下創(chuàng)建docker.service 文件
sudo vi /usr/lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
?
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
?
[Install]
WantedBy=multi-user.target
?
6、設置docker開機啟動
systemctl enable/disable docker?
?3、docker鏡像遷移
因為局域網(wǎng)的docker,不能遠程拉取鏡像,所以需要,公網(wǎng)拉取鏡像文件之后,通過局域網(wǎng)傳遞目標服務器
1、公網(wǎng)服務器打包鏡像(我打包的是mysql)
docker save mysql:5.7 > /home/soft/mysql5.7.tar
2、傳遞打包的鏡像到局域網(wǎng)node02服務器
?scp? mysql5.7.tar node02:$PWD
3、在node02服務器上將壓縮包恢復成鏡像
docker load < /home/soft/mysql5.7.tar
docker mysql文件遷移
1、進入要遷移的容器
docker exec -it mysql-master /bin/bash
2、將要遷移的數(shù)據(jù)庫,轉(zhuǎn)化為.sql文件
mysqldump -u root -p --databases aviation_dev> aviation_dev.sql?
? -u 用戶名
--databases:遷移的數(shù)據(jù)庫,比如我的是aviation_dev
3、拷貝容器生成的SQL文件,到宿主機目錄hone目錄下面
docker cp mysql-master:/aviation_dev.sql ? /home?
?4、我的是在同一宿主機容器,
cd /home
docker cp aviation_dev.sql mysql-new:/aviation_dev.sql
?mysql-new這個是我的新容器的名稱
5、進入新容器,恢復遷移的數(shù)據(jù)
docker exec -it ?mysql-new bash
mysql -u root -p < /aviation_dev.sql?
4、redis服務
requirepass:redis密碼
docker run -p 6333:6379 --name redis -v /mydata/redis/redis.conf:/etc/redis/redis.conf ?-v /mydata/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes --requirepass 123456
5、minio文件服務
拉取最新版本,或者其他版本
docker pull minio/minio
MINIO_ACCESS_KEY:登錄用戶名
MINIO_ACCESS_KEY:登錄用戶密碼
docker run -p 9000:9000 -p 9090:9090 \
?--name minio \
?-d --restart=always \
?-e "MINIO_ACCESS_KEY=test" \
?-e "MINIO_SECRET_KEY=123456" \
?-v /root/docker/minio/data:/data ?\
?-v /root/docker/minio/config:/root/.minio \
?minio/minio ?server\
?/data --console-address ":9090" -address ":9000"
6、kkFileView文件預覽服務
kkFileView官網(wǎng):kkFileView - 在線文件預覽
# 網(wǎng)絡環(huán)境方便訪問docker中央倉庫
docker pull keking/kkfileview:4.1.0
docker run -it -p 8012:8012 keking/kkfileview:4.1.0?
https? KKfile服務 :
nginx如下
? ? ?location /file {
? ? ? ? proxy_pass ?http://127.0.0.1:8012;
? ? ? }
KK_BASE_URL="https://域名/file"
KK_CONTEXT_PATH="/file"
???????docker run -it -d -p 8012:8012 -e KK_BASE_URL="https://域名/file" -e KK_CONTEXT_PATH="/file" keking/kkfileview:4.1.0
7、mysql主從搭建
1、mysql主節(jié)點
1、部署mysql主節(jié)點容器
docker run -p 3333:3306 --name mysql-master \
-v /mydata/mysql-master/log:/var/log/mysql \
-v /mydata/mysql-master/data:/var/lib/mysql \
-v /mydata/mysql-master/conf:/etc/mysql/conf.d \
-e ?MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7
?目錄說明:
-v /mydata/mysql-master/conf:/etc/mysql ;將配置文件夾掛載到主機上
-v /mydata/mysql-master/log:/var/log/mysql:將日志文件夾掛載到主機上
-v /mydata/mysql-master/data:/var/lib/mysql:將數(shù)據(jù)文件夾掛載到主機上
2、 修改主節(jié)點my.conf配置
vim /mydata/mysql-master/conf/my.cnf?
[mysqld]
## 設置server_id,同一局域網(wǎng)中需要唯一
server_id=101?
## 指定不需要同步的數(shù)據(jù)庫名稱
binlog-ignore-db=mysql ?
## 開啟二進制日志功能
log-bin=mall-mysql-bin ?
## 設置二進制日志使用內(nèi)存大?。ㄊ聞眨?br> binlog_cache_size=1M ?
## 設置使用的二進制日志格式(mixed,statement,row)
binlog_format=mixed ?
## 二進制日志過期清理時間。默認值為0,表示不自動清理。
expire_logs_days=7 ?##忽略大小寫配置
?lower_case_table_names = 1?
## 跳過主從復制中遇到的所有錯誤或指定類型的錯誤,避免slave端復制中斷。
## 如:1062錯誤是指一些主鍵重復,1032錯誤是因為主從數(shù)據(jù)庫數(shù)據(jù)不一致
slave_skip_errors=1062
重啟主節(jié)點容器?
?docker restart mysql-master
3、進入主節(jié)點容器,新增同步用戶賬號
docker exec -it mysql-master /bin/bash
mysql -uroot -p123456
創(chuàng)建同步賬號?
CREATE USER 'slave' @'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'slave'@'%';
2、mysql從節(jié)點
1、創(chuàng)建從節(jié)點容器
docker run -p 3334:3306 --name mysql-slave \
-v /mydata/mysql-slave/log:/var/log/mysql \
-v /mydata/mysql-slave/data:/var/lib/mysql \
-v /mydata/mysql-slave/conf:/etc/mysql/conf.d \
-e ?MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7
2、修改主節(jié)點my.conf配置
vim /mydata/mysql-master/conf/my.cnf?
[mysqld]
## 設置server_id,同一局域網(wǎng)中需要唯一
server_id=122
## 指定不需要同步的數(shù)據(jù)庫名稱
binlog-ignore-db=mysql ?
## 開啟二進制日志功能,以備Slave作為其它數(shù)據(jù)庫實例的Master時使用
log-bin=mall-mysql-slave1-bin ?
## 設置二進制日志使用內(nèi)存大?。ㄊ聞眨?br> binlog_cache_size=1M ?
## 設置使用的二進制日志格式(mixed,statement,row)
binlog_format=mixed ?
## 二進制日志過期清理時間。默認值為0,表示不自動清理。
expire_logs_days=7 ?
## 跳過主從復制中遇到的所有錯誤或指定類型的錯誤,避免slave端復制中斷。
## 如:1062錯誤是指一些主鍵重復,1032錯誤是因為主從數(shù)據(jù)庫數(shù)據(jù)不一致
slave_skip_errors=1062 ?
## relay_log配置中繼日志
relay_log=mall-mysql-relay-bin ?
## log_slave_updates表示slave將復制事件寫進自己的二進制日志
log_slave_updates=1 ?
## slave設置為只讀(具有super權限的用戶除外)
read_only=1##忽略大小寫配置
lower_case_table_names = 1?
重啟子節(jié)點容器?
docker restart mysql-slave
3、查看主數(shù)據(jù)庫的Position參數(shù),因為已經(jīng)有了些數(shù)據(jù)了,所以是5483771,一般剛剛開始時postion是443
show master status;
?4、進入從數(shù)據(jù)庫
docker exec -it mysql-slave /bin/bash
mysql -uroot -p123456
?5、在從數(shù)據(jù)庫中查看主從同步狀態(tài)
show slave status \G
change master to?
master_host='10.0.0.4',master_user='slave',master_password='123456',master_port=3333,
master_log_file='mall-mysql-bin.000002',master_log_pos=684,master_connect_retry=30;
master_host:主數(shù)據(jù)庫的IP地址;
master_port:主數(shù)據(jù)庫的運行端口;
master_user:在主數(shù)據(jù)庫創(chuàng)建的用于同步數(shù)據(jù)的用戶賬號;
master_password:在主數(shù)據(jù)庫創(chuàng)建的用于同步數(shù)據(jù)的用戶密碼;
master_log_file:指定從數(shù)據(jù)庫要復制數(shù)據(jù)的日志文件,通過查看主數(shù)據(jù)的狀態(tài),獲取File參數(shù);
master_log_pos:指定從數(shù)據(jù)庫從哪個位置開始復制數(shù)據(jù),通過查看主數(shù)據(jù)的狀態(tài),獲取Position參數(shù);
master_connect_retry:連接失敗重試的時間間隔,單位為秒。
?6、從數(shù)據(jù)開啟服務
start slave;
slave_io_running,負責與主機的io通信;
slave_sql_running,負責自己的slave mysql進程。
兩個yes表示成功
3、出現(xiàn)的問題
1、slave_io_running:connecting解決方法
1、網(wǎng)絡不通
ping主節(jié)點IP看是否能ping通,如果ping不通,就檢查安全組或者防火墻是否開放ICMP協(xié)議
2、slave賬號是否能遠程連上主節(jié)點服務
docker exec -it mysql-slave /bin/bash
mysql -u slave -p123456 -h10.0.0.4 -P 3333
?3、檢查從機點開啟服務,命令是否正確,開始的file文件和開始節(jié)點是否正確,以及hostIP是否正確
?先停止,再修改,再開啟服務
stop slave;
start slave;?
show slave status \G
?2、slave_io_running:no解決方法(可能原因:server-uuid主從節(jié)點相同)
1、找到文件位置
find / -iname "auto.cnf"
2、進入文件目錄,刪除文件
rm auto.cnf
3、 重啟子節(jié)點服務
stop slave;
start slave;?
show slave status \G
3、Slave_SQL_Running: No?
1.程序可能在slave上進行了寫操作文章來源:http://www.zghlxwxcb.cn/news/detail-764346.html
2.也可能是slave機器重起后,事務回滾造成的.文章來源地址http://www.zghlxwxcb.cn/news/detail-764346.html
mysql> stop slave ; mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1; mysql> start slave ;
到了這里,關于服務器離線部署docker,鏡像遷移,mysql主從搭建等服務的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!