debian系统

安装docker (参考网址:https://cloud.tencent.com/developer/article/1360720)

1、更新现有的包列表

sudo apt update

  

2、安装一些允许apt使用包通过HTTPS的必备软件包

apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common

  

3、将官方Docker存储库的GPG密钥添加到您的系统

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

  

4、将Docker存储库添加到APT源:

add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"

  

5、使用新添加的repo中的Docker包更新包数据库

sudo apt update

  

6、确保您要从Docker repo而不是默认的Debian repo安装:

apt-cache policy docker-ce

  

6、安装Docker

apt install docker-ce

  

7、现在应该安装Docker,守护进程启动,并启用进程启动进程。检查它是否正在运行:

systemctl status docker

  

8、拉取mysql指定版本镜像(参考网址:https://www.cnblogs.com/xiaohanlin/p/10012730.html)

docker pull mysql:5.7.2 

或者使用DockerFIle的方式
使用DockerFile创建mysql可以使用如下办法

 新建文件夹 dirName
在文件夹下添加mysql配置文件 mysqld.cnf 当然 也可以不用 添加DockerFile文件
添加内容
FROM mysql:5.7.22
COPY ["mysqld.cnf","/etc/mysql/mysql.conf.d/mysqld.cnf"] #也可以不加
EXPOSE 3306 执行命令 docker build -t mysql5.7.22:v0 . 创建本地镜像
build 为创建本地镜像
-t 指定镜像的名字
: 指定标签的名字
. 指定远程服务器的对应文件位置 build 在创建镜像的时候 实际上使用的是远程的服务器(首先我们要理解 docker build 的工作原理。Docker 在运行时分为 Docker 引擎(也就是服务端守护进程)和客户端工具。Docker 的引擎提供了一组 REST API,被称为 Docker Remote API,而如 docker 命令这样的客户端工具,则是通过这组 API 与 Docker 引擎交互,从而完成各种功能。因此,虽然表面上我们好像是在本机执行各种 docker 功能,但实际上,一切都是使用的远程调用形式在服务端(Docker 引擎)完成。也因为这种 C/S 设计,让我们操作远程服务器的 Docker 引擎变得轻而易举。) 该命令 会将.的所有内容 上传到远程服务器,因此我们应当尽可能的使得所上传的文件夹精简,而DockerFile中的文件路径,也应当正确对应。
以上文的COPY为例 是将本地当前文件夹的mysqld.cnf文件复制到所创建镜像的/etc/mysql/mysql.conf.d/mysqld.cnf位置 并命名为mysqld.cnf,如果写成COPY ["../mysqld.cnf","/etc/mysql/mysql.conf.d/mysqld.cnf"] 则在执行build命令的时候需要这么
写(docker build -t mysql5.7.22:v0 ..),如此以来,就会将..文件夹(当前文件的上层文件夹的所有内容)传到远程服务器,镜像无疑就会变得庞大臃肿。

9、启动mysql容器

 (此处使用宿主机的配置文件、存储路径和日记路径启动 需要自己创建、如果没有指定的配置文件可使用
docker cp mysql5_7_22_1:/etc/mysql/mysql.conf.d/mysqld.cnf /etc/conf/mysql/
mysql5_7_22_1为容器名
从容器拷贝一份到服务器)
 docker run --name mysql5_7_22 -p 3306:3306 --restart=always -v /etc/conf/mysql/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf -v /var/log/mysql/log/:/var/log/mysql -v /data/mysql/:/var/lib/mysql --privileged=true -e MYSQL_ROOT_PASSWORD=root -d guodakai/mysql5.7.22:v0
-p 3306:3306 将容器的 3306 端口映射到主机的 3306 端口 (前面为宿主机,后面为容器)
--name 容器名(自己定义)
--restart=always 将容器设置为自启
-v 将宿主机指定内容挂载到容器
--privileged= true 是我启动mysql的时候发现mysql启动不了,通过 docker logs命令查看,发现提示信息是:chown: changing ownership of ‘/var/lib/mysql/....‘: Permission denied (docker logs -f mysql5_7_22 查看指定日志文件)
-e 初始化 root 用户的密码
-d 在后台运行容器 如果希望容器随docker启动而启动 可添加 --restart=always
如果要设置已经启动的容器可以使用一下命令
docker container update --restart=alway 容器名

10、进入容器

docker exec -it mysql5_7_22 bash

  

11、退出容器

exit

  

12、将其他服务器数据导入容器数据库(两者需要可以相互访问、参考网址:https://www.cnblogs.com/osfipin/p/9927185.html)

 mysqldump -uroot -proot --opt jupin_zhizuan | mysql --host=192.168.31.136 -uroot -proot -C jupin_zhizuan
--opt命令可选,建议加上。等同于指定 --add-drop-tables--add-locking --create-option --disable-keys--extended-insert --lock-tables --quick --set-charset。它可以给出很快的转储操作并产生一个可以很快装入MySQL服务器的转储文件。
-C 客户端和服务器之间启用压缩传递所有信息。当然得要有咯。

13、添加主从服务 (旧方式)
修改/etc/mysql/mysql.conf.d/mysqld.cnf

 主库添加内容:
character-set-server=utf8
default-storage-engine=INNODB
sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION server-id=1
log_bin=/var/log/mysql/binlog
 从库添加内容:
character-set-server=utf8
default-storage-engine=INNODB
sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION server-id=2
log_bin=/var/log/mysql/binlog
innodb_file_per_table=ON
skip_name_resolve=ON
binlog-format=row
log-slave-updates=true
relay_log=/var/log/mysql/relay.log

以下操作可以使用 navicat操作 (再此之情 需要先同步两个数据库的数据)

 进入主库
查询主库状态 SHOW MASTER STATUS
进入从库
停止从库 stop slave;
配置主从连接 CHANGE MASTER TO MASTER_HOST='192.168.174.136',MASTER_USER='root', MASTER_PASSWORD='123456',MASTER_PORT=3306,MASTER_LOG_FILE='binlog.000003',MASTER_LOG_POS=154;
(MASTER_LOG_FILE,MASTER_LOG_POS 为主库状态的file 和 position)
启动从库 start slave;

!!!主从设置完成后 需要添加一些帐号 只读等
!!!主从设置完成后 从库挂掉后 重启会自动将数据补全

//GTID主从配置(推荐)  参考网址:https://blog.51cto.com/7834466/2345202

 主配置文件添加内容
[mysqld]
#GTID:
server_id=135 #服务器id
gtid_mode=on #开启gtid模式
enforce_gtid_consistency=on #强制gtid一致性,开启后对于特定create table不被支持 #binlog
log_bin=master-binlog
log-slave-updates=1
binlog_format=row #强烈建议,其他格式可能造成数据不一致 #relay log
skip_slave_start=1 #这一句可以不加 添加之后mysql重启后从库的slave不自动重启
 从库的配置文件添加内容
[mysqld]
#GTID:
gtid_mode=on
enforce_gtid_consistency=on
server_id=143 #binlog
log-bin=slave-binlog
log-slave-updates=1
binlog_format=row #强烈建议,其他格式可能造成数据不一致 #relay log
skip_slave_start=1 #同上,这一句可以不加 添加之后mysql重启后从库的slave不自动重启

今进入从库
依次执行

 stop slave;
CHANGE MASTER TO MASTER_HOST='192.168.1.135',MASTER_USER='repl',MASTER_PASSWORD='xxx', MASTER_PORT=3306,MASTER_AUTO_POSITION = 1;
start slave;
show slave status\G; 查看状态

docker创建mysql5.7.22并配置主从的更多相关文章

  1. centos7用docker安装mysql5.7.24后配置主从

    1)使用docker安装完成mysql5.7.24,我规划的是3台: 192.168.0.170(Master) 192.168.0.169(Slave) 192.168.0.168(Slave) 2 ...

  2. docker安装mysql5.6镜像并进行主从配置

    docker安装mysql镜像并进行主从配置 1.去DaoCloud官网(dockerhub可能因为网速问题下载的慢)查找需要的mysql版本镜像 docker pull daocloud.io/li ...

  3. MySQL5.7.15数据库配置主从服务器实现双机热备实例教程

    环境说明 程序在:Web服务器192.168.0.57上面 数据库在:MySQL服务器192.168.0.67上面 实现目的:增加一台MySQL备份服务器(192.168.0.68),做为MySQL服 ...

  4. docker创建自己的镜像并配置nginx

    前言 最近在研究docker,记录一下如何创建一个属于自己的镜像 本次使用linux版本为centos7.4(centos6也可以使用docker,只不过有部分功能只有7才有) 本次创建的镜像为cen ...

  5. Docker安装mysql5.7并且配置主从复制

    Docker安装mysql5.7并且配置主从复制 一.拉取mysql镜像 二.创建文件docker.cnf 2.1 mysql主机(192.168.21.55:3307) 2.1.1 创建文件夹 2. ...

  6. CentOS 6.5系统使用yum方式安装LAMP环境和phpMyAdmin,mysql8.0.1/mysql5.7.22+centos7,windows mysql安装、配置

    介绍如何在CentOs6.2下面使用YUM配置安装LAMP环境,一些兄弟也很喜欢使用编译的安装方法,个人觉得如果不是对服务器做定制,用yum安装稳定简单,何必去download&make&am ...

  7. centos6.6手动安装mysql5.5并配置主从同步

    0.实验环境 主机IP(Master) 192.168.61.150 centos6.6 从机IP(Slave)   192.168.61.157 centos6.6 1.查看centos系统版本 [ ...

  8. docker创建mysql容器,并挂载数据+配置

    新建:/my/mysql/my.cnf (准备挂载配置文件用) 将以下内容拷贝进去(或者启动一个docker的mysql,并且把/etc/mysql/my.cnf中的内容拷贝出来) # Copyrig ...

  9. centos7搭建mysql-5.7.22主从复制

    mysql7.7.22主从复制 本项目是根据真实环境搭建编写出文档,文档中的目录也是根据自己公司环境所创建.公司原来是一台服务器搭建的数据库(5.7.22),由于业务的扩展需要搭建一台从服务器,减轻主 ...

随机推荐

  1. Maven整合SSH框架的所有依赖和插件(记录下来,省的以后再写)

    JDK:1.8 Tomcat:7 Maven:3.6.1 调了一个小时,终于没错误了,总结了一个规律,如果在用Tomcat插件启动项目时报错,显示如:org.apache.tomcat.util.bc ...

  2. MongoDB干货系列2-MongoDB执行计划分析详解(2)(转载)

    写在之前的话 作为近年最为火热的文档型数据库,MongoDB受到了越来越多人的关注,但是由于国内的MongoDB相关技术分享屈指可数,不少朋友向我抱怨无从下手. <MongoDB干货系列> ...

  3. Using the Repository and Unit Of Work Pattern in .net core

    A typical software application will invariably need to access some kind of data store in order to ca ...

  4. 总结TCP与UDP的区别

    TCP的优点: 可靠,稳定 TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认.窗口.重传.拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源. TCP的缺 ...

  5. A1128 | 逻辑想象能力、简洁高效美观的代码、memset的使用情景

    写了三遍才AC,这真是对智商极大的侮辱 C++代码: #include <stdio.h> #include <memory.h> #include <math.h> ...

  6. 洛谷p2330繁忙的都市题解

    题面 根据题意来分析, 要求出你选了几条路, 最小生成树是能解的, 那么就直接输出n - 1条路即可, 至于最大值则走一遍最小生成树求出即可 这里提供最小生成树的两种方法 1. 克鲁斯卡尔 克鲁斯卡尔 ...

  7. 第02组 Alpha冲刺(4/4)

    队名:十一个憨批 组长博客 作业博客 组长黄智 过去两天完成的任务:了解整个游戏的流程 GitHub签入记录 接下来的计划:继续完成游戏 还剩下哪些任务:完成游戏 燃尽图 遇到的困难:没有美术比较好的 ...

  8. shell中的字符串操作——字符串的切割

    default.yaml {default_baseurl: 'http://10.113.10.68:8082'} test.sh a=`cat default.yaml` t=":&qu ...

  9. Android Studio 本地化操作

    1.打开 string.xml 文件,在右上角,点 open-editor 2.点左上角的“地球”图标,就会弹出选择国家列表,输入zh会自动筛选,能很快选到中国简体中文 3.选择后,会在原来的列表中添 ...

  10. java 备用待迁移

    Java基础 2018年如何快速学Java 泛型就这么简单 注解就这么简单 Druid数据库连接池就是这么简单 Object对象你真理解了吗? JDK10都发布了,nio你了解多少? COW奶牛!Co ...