帮助文档
专业提供香港服务器、香港云服务器、香港高防服务器租用、香港云主机、台湾服务器、美国服务器、美国云服务器vps租用、韩国高防服务器租用、新加坡服务器、日本服务器租用 一站式全球网络解决方案提供商!专业运营维护IDC数据中心,提供高质量的服务器托管,服务器机房租用,服务器机柜租用,IDC机房机柜租用等服务,稳定、安全、高性能的云端计算服务,实时满足您的多样性业务需求。 香港大带宽稳定可靠,高级工程师提供基于服务器硬件、操作系统、网络、应用环境、安全的免费技术支持。
服务器资讯 / 香港服务器租用 / 香港VPS租用 / 香港云服务器 / 美国服务器租用 / 台湾服务器租用 / 日本服务器租用 / 官方公告 / 帮助文档
服务器离线部署docker,镜像迁移,mysql主从搭建等服务
发布时间:2024-03-01 04:07:43   分类:帮助文档
服务器离线部署docker,镜像迁移,mysql主从搭建等服务 公司项目要上线项目,买了两台云服务器,需进行环境部署(1台接入公网,一台只能局域网访问),主要部署以下内容 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主节点 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,不能远程拉取镜像,所以需要,公网拉取镜像文件之后,通过局域网传递目标服务器 1、公网服务器打包镜像(我打包的是mysql) docker save mysql:5.7 > /home/soft/mysql5.7.tar 2、传递打包的镜像到局域网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、将要迁移的数据库,转化为.sql文件 mysqldump -u root -p --databases aviation_dev> aviation_dev.sql    -u 用户名 --databases:迁移的数据库,比如我的是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、进入新容器,恢复迁移的数据 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官网:kkFileView - 在线文件预览 # 网络环境方便访问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主节点 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主从节点相同) 1、找到文件位置 find / -iname "auto.cnf" 2、进入文件目录,删除文件 rm auto.cnf 3、 重启子节点服务 stop slave; start slave;  show slave status \G 3、Slave_SQL_Running: No  1.程序可能在slave上进行了写操作 2.也可能是slave机器重起后,事务回滚造成的. mysql> stop slave ; mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1; mysql> start slave ;
香港云服务器租用推荐
服务器租用资讯
·广东云服务有限公司怎么样
·广东云服务器怎么样
·广东锐讯网络有限公司怎么样
·广东佛山的蜗牛怎么那么大
·广东单位电话主机号怎么填写
·管家婆 花生壳怎么用
·官网域名过期要怎么办
·官网邮箱一般怎么命名
·官网网站被篡改怎么办
服务器租用推荐
·美国服务器租用
·台湾服务器租用
·香港云服务器租用
·香港裸金属服务器
·香港高防服务器租用
·香港服务器租用特价