docker创建mysql5.7.22并配置主从
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并配置主从的更多相关文章
- 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 ...
- docker安装mysql5.6镜像并进行主从配置
docker安装mysql镜像并进行主从配置 1.去DaoCloud官网(dockerhub可能因为网速问题下载的慢)查找需要的mysql版本镜像 docker pull daocloud.io/li ...
- MySQL5.7.15数据库配置主从服务器实现双机热备实例教程
环境说明 程序在:Web服务器192.168.0.57上面 数据库在:MySQL服务器192.168.0.67上面 实现目的:增加一台MySQL备份服务器(192.168.0.68),做为MySQL服 ...
- docker创建自己的镜像并配置nginx
前言 最近在研究docker,记录一下如何创建一个属于自己的镜像 本次使用linux版本为centos7.4(centos6也可以使用docker,只不过有部分功能只有7才有) 本次创建的镜像为cen ...
- Docker安装mysql5.7并且配置主从复制
Docker安装mysql5.7并且配置主从复制 一.拉取mysql镜像 二.创建文件docker.cnf 2.1 mysql主机(192.168.21.55:3307) 2.1.1 创建文件夹 2. ...
- CentOS 6.5系统使用yum方式安装LAMP环境和phpMyAdmin,mysql8.0.1/mysql5.7.22+centos7,windows mysql安装、配置
介绍如何在CentOs6.2下面使用YUM配置安装LAMP环境,一些兄弟也很喜欢使用编译的安装方法,个人觉得如果不是对服务器做定制,用yum安装稳定简单,何必去download&make&am ...
- centos6.6手动安装mysql5.5并配置主从同步
0.实验环境 主机IP(Master) 192.168.61.150 centos6.6 从机IP(Slave) 192.168.61.157 centos6.6 1.查看centos系统版本 [ ...
- docker创建mysql容器,并挂载数据+配置
新建:/my/mysql/my.cnf (准备挂载配置文件用) 将以下内容拷贝进去(或者启动一个docker的mysql,并且把/etc/mysql/my.cnf中的内容拷贝出来) # Copyrig ...
- centos7搭建mysql-5.7.22主从复制
mysql7.7.22主从复制 本项目是根据真实环境搭建编写出文档,文档中的目录也是根据自己公司环境所创建.公司原来是一台服务器搭建的数据库(5.7.22),由于业务的扩展需要搭建一台从服务器,减轻主 ...
随机推荐
- wordpress去掉category的另一个方法
今天ytkah的客户问wordpress网站一直去不掉分类url中的/category/,他说已经按ytkah之前的方法设置了还是不起作用,进入网站后台发现,他们的网站有安装yoast,然后就大概知道 ...
- NameNode的HA
HDFS中的NameNode的HA怎么实现?(一言以蔽之) 在Hadoop集群中配置并启动两个NameNode进程,一个作为Active节点对外提供服务,另一个作为Standby的节点,两个NameN ...
- React.js 小书
http://huziketang.mangojuice.top/books/react/
- Web安全之CSRF基本原理与实践
阅读目录 一:CSRF是什么?及它的作用? 二:CSRF 如何实现攻击 三:csrf 防范措施 回到顶部 一:CSRF是什么?及它的作用? CSRF(Cross-site Request Forger ...
- Passwords Gym - 101174E (AC自动机上DP)
Problem E: Passwords \[ Time Limit: 1 s \quad Memory Limit: 256 MiB \] 题意 给出两个正整数\(A,B\),再给出\(n\)个字符 ...
- luogu_2831: 愤怒的小鸟
洛谷2831:愤怒的小鸟(状压\(dp\)) 题意: 在二维平面上给定\(n\)个点\((1\leq n\leq18)\). 其中每个点用\((x_i,y_i)\)表示\((0<x_i,y_i& ...
- itertools 高效的循环
在打印内容字节数较小时,全部载入内存后,再打印,没有问题.可是,如果现在有成千上百万条车辆行驶轨迹,叫你分析出其中每个客户的出行规律,堵车情况等,假如是在单机上处理这件事. 你可能首先要面临,也可能被 ...
- Apache ServiceComb Pack 微服务分布式数据最终一致性解决方案
https://github.com/OpenSagas-csharp/servicecomb-pack-csharp Saga基本使用指南 使用前置条件说明 如果还有同学对Saga还不甚了解的同学, ...
- loj#2255. 「SNOI2017」炸弹 线段树优化建图,拓扑,缩点
loj#2255. 「SNOI2017」炸弹 线段树优化建图,拓扑,缩点 链接 loj 思路 用交错关系建出图来,发现可以直接缩点,拓扑统计. 完了吗,不,瓶颈在于边数太多了,线段树优化建图. 细节 ...
- 【JZOJ5551】【20190625】旅途
题目 \(n\)个点\(m\)条边的无向图,一条路径的代价定义为路径上前\(k\)大边的边权和 对于$k = n \to 1 $,求1-n的最短路 \(n,m \le 3000 \ , \ w_i \ ...