iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >服务器离线部署docker,镜像迁移,mysql主从搭建等服务
  • 103
分享到

服务器离线部署docker,镜像迁移,mysql主从搭建等服务

服务器dockermysql 2023-09-30 11:09:48 103人浏览 泡泡鱼
摘要

公司项目要上线项目,买了两台云服务器,需进行环境部署(1台接入公网,一台只能局域网访问),主要部署以下内容 服务器之间配置ssh免密 离线Docker部署 docker镜像迁移 Redis服务 miNIO文件服务 kkFileView文件预

公司项目要上线项目,买了两台云服务器,需进行环境部署(1台接入公网,一台只能局域网访问),主要部署以下内容

服务器之间配置ssh免密

离线Docker部署

docker镜像迁移

Redis服务

miNIO文件服务

kkFileView文件预览服务

Mysql主从搭建

目录

1、配置两台服务器ssh免密,方便文件传输

2、离线docker部署

 3、docker镜像迁移

4、redis服务

5、minio文件服务

6、kkFileView文件预览服务

7、mysql主从搭建

1、mysql主节点

2、mysql从节点

3、出现的问题

1、slave_io_running:connecting解决方法

 2、slave_io_running:no解决方法(可能原因:server-uuid主从节点相同)

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文件包含两个节点的公钥

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文件上传到公网的,然后再 通过局域网上传到宁外的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、验证是否安装成功,执行docker info命令,若正常打印版本信息则安装成功。

 docker info

5、在 /usr/lib/systemd/system/ 目录下创建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镜像迁移

因为局域网的docker,不能远程拉取镜像,所以需要,公网拉取镜像文件之后,通过局域网传递目标服务器

公网服务器打包镜像(我打包的是mysql

docker save mysql:5.7 > /home/soft/mysql5.7.tar

传递打包的镜像到局域网node02服务器

 scp  mysql5.7.tar node02:$PWD

在node02服务器上将压缩包恢复成镜像

docker load < /home/soft/mysql5.7.tar

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官网:kkFileView - 在线文件预览

# 网络环境方便访问docker中央仓库

docker pull keking/kkfileview:4.1.0

docker run -it -p 8012:8012 keking/kkfileview:4.1.0 

7、mysql主从搭建

1、mysql主节点

1、部署mysql主节点容器

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:将数据文件夹挂载到主机上

2、 修改主节点my.conf配置

vim /mydata/mysql-master/conf/my.cnf 

[mysqld]
## 设置server_id,同一局域网中需要唯一
server_id=101 
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql  
## 开启二进制日志功能
log-bin=mall-mysql-bin  
## 设置二进制日志使用内存大小(事务
binlog_cache_size=1M  
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_fORMat=mixed  
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7  

##忽略大小写配置

 lower_case_table_names = 1 
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062

重启主节点容器 

 docker restart mysql-master

3、进入主节点容器,新增同步用户账号

docker exec -it mysql-master /bin/bash

mysql -uroot -p123456

创建同步账号 

CREATE USER 'slave' @'%' IDENTIFIED BY '123456';


GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'slave'@'%';

2、mysql从节点

1、创建从节点容器

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、修改主节点my.conf配置

vim /mydata/mysql-master/conf/my.cnf 

[mysqld]
## 设置server_id,同一局域网中需要唯一
server_id=122
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql  
## 开启二进制日志功能,以备Slave作为其它数据库实例的Master时使用
log-bin=mall-mysql-slave1-bin  
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M  
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed  
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7  
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
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 

重启子节点容器 

docker restart mysql-slave

3、查看主数据库的Position参数,因为已经有了些数据了,所以是5483771,一般刚刚开始时postion是443

show master status;

 4、进入从数据库

docker exec -it mysql-slave /bin/bash

mysql -uroot -p123456

 5、在从数据库中查看主从同步状态

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:主数据库的IP地址;
master_port:主数据库的运行端口;
master_user:在主数据库创建的用于同步数据的用户账号;
master_password:在主数据库创建的用于同步数据的用户密码;
master_log_file:指定从数据库要复制数据的日志文件,通过查看主数据的状态,获取File参数;
master_log_pos:指定从数据库从哪个位置开始复制数据,通过查看主数据的状态,获取Position参数;
master_connect_retry:连接失败重试的时间间隔,单位为秒。

 6、从数据开启服务

start slave;

slave_io_running,负责与主机的io通信;
slave_sql_running,负责自己的slave mysql进程。

两个yes表示成功

3、出现的问题

1、slave_io_running:connecting解决方法

1、网络不通

ping主节点IP看是否能ping通,如果ping不通,就检查安全组或者防火墙是否开放ICMP协议

2、slave账号是否能远程连上主节点服务

docker exec -it mysql-slave /bin/bash

mysql -u slave -p123456 -h10.0.0.4 -P 3333

 3、检查从机点开启服务,命令是否正确,开始的file文件和开始节点是否正确,以及hostIP是否正确

 先停止,再修改,再开启服务

stop slave;

start slave; 

show slave status \G

 2、slave_io_running:no解决方法(可能原因:server-uuid主从节点相同)

找到文件位置

find / -iname "auto.cnf"

进入文件目录,删除文件

rm auto.cnf

重启子节点服务

stop slave;

start slave; 

show slave status \G

3、Slave_SQL_Running: No 


1.程序可能在slave上进行了写操作

也可能是slave机器重起后,事务回滚造成的.

mysql> stop slave ;mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;mysql> start slave ;

来源地址:https://blog.csdn.net/weixin_43288858/article/details/131664353

您可能感兴趣的文档:

--结束END--

本文标题: 服务器离线部署docker,镜像迁移,mysql主从搭建等服务

本文链接: https://www.lsjlt.com/news/421845.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • oracle怎么查询当前用户所有的表
    要查询当前用户拥有的所有表,可以使用以下 sql 命令:select * from user_tables; 如何查询当前用户拥有的所有表 要查询当前用户拥有的所有表,可以使...
    99+
    2024-05-14
    oracle
  • oracle怎么备份表中数据
    oracle 表数据备份的方法包括:导出数据 (exp):将表数据导出到外部文件。导入数据 (imp):将导出文件中的数据导入表中。用户管理的备份 (umr):允许用户控制备份和恢复过程...
    99+
    2024-05-14
    oracle
  • oracle怎么做到数据实时备份
    oracle 实时备份通过持续保持数据库和事务日志的副本来实现数据保护,提供快速恢复。实现机制主要包括归档重做日志和 asm 卷管理系统。它最小化数据丢失、加快恢复时间、消除手动备份任务...
    99+
    2024-05-14
    oracle 数据丢失
  • oracle怎么查询所有的表空间
    要查询 oracle 中的所有表空间,可以使用 sql 语句 "select tablespace_name from dba_tablespaces",其中 dba_tabl...
    99+
    2024-05-14
    oracle
  • oracle怎么创建新用户并赋予权限设置
    答案:要创建 oracle 新用户,请执行以下步骤:以具有 create user 权限的用户身份登录;在 sql*plus 窗口中输入 create user identified ...
    99+
    2024-05-14
    oracle
  • oracle怎么建立新用户
    在 oracle 数据库中创建用户的方法:使用 sql*plus 连接数据库;使用 create user 语法创建新用户;根据用户需要授予权限;注销并重新登录以使更改生效。 如何在 ...
    99+
    2024-05-14
    oracle
  • oracle怎么创建新用户并赋予权限密码
    本教程详细介绍了如何使用 oracle 创建一个新用户并授予其权限:创建新用户并设置密码。授予对特定表的读写权限。授予创建序列的权限。根据需要授予其他权限。 如何使用 Oracle 创...
    99+
    2024-05-14
    oracle
  • oracle怎么查询时间段内的数据记录表
    在 oracle 数据库中查询指定时间段内的数据记录表,可以使用 between 操作符,用于比较日期或时间的范围。语法:select * from table_name wh...
    99+
    2024-05-14
    oracle
  • oracle怎么查看表的分区
    问题:如何查看 oracle 表的分区?步骤:查询数据字典视图 all_tab_partitions,指定表名。结果显示分区名称、上边界值和下边界值。 如何查看 Oracle 表的分区...
    99+
    2024-05-14
    oracle
  • oracle怎么导入dump文件
    要导入 dump 文件,请先停止 oracle 服务,然后使用 impdp 命令。步骤包括:停止 oracle 数据库服务。导航到 oracle 数据泵工具目录。使用 impdp 命令导...
    99+
    2024-05-14
    oracle
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作