centos7 docker 安装 mysql5.7.24 导入12G的sql
先在CentOS7里面安装docker
Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。通过 uname -r 命令查看你当前的内核版本
uname -r
3.10.0-514.el7.x86_64
1、初步安装和启动docker
yum update -y
yum -y install docker
systemctl start docker
2、设置镜像
vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://aj2rgad5.mirror.aliyuncs.com"]
}
加速器地址可以在阿里云找到
3、开放管理端口映射
vi /lib/systemd/system/docker.service
将第11行的ExecStart=/usr/bin/dockerd,替换为:
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock -H tcp://0.0.0.0:7654
2375是管理端口,7654是备用端口
在~/.bashrc中写入docker管理端口
export DOCKER_HOST=tcp://0.0.0.0:2375
source ~/.bashrc
4、重启docker
systemctl daemon-reload
systemctl restart docker.service
5、测试docker是否正常安装和运行
docker run hello-world
6、查看结果
Hello from Docker!
This message shows that your installation appears to be working correctly.
安装好docker后安装mysql
安装
1、拉取镜像(这里使用5.7.24版本)
docker pull mysql:5.7.24
2、启动
# 创建了一个名为mysql5_7_24的MySQL数据库服务器容器实例
docker run --name mysql5_7_24 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.24
命令说明:
-p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口
-e MYSQL_ROOT_PASSWORD=root:初始化 root 用户的密码
其他命令
访问容器
docker exec -it mysql5_7_24 bash
进入容器内部,我们就可以登录到mysql了
[root@localhost ~]# docker exec -it mysql5_7_24 bash
root@95a0cd6077a0:/# ls
bin boot dev docker-entrypoint-initdb.d entrypoint.sh etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@95a0cd6077a0:/# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.7.24 MySQL Community Server (GPL)
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| novadb |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
mysql>
查看日志
docker logs -f mysql5_7_24
进入终端
docker exec -it mysql5_7_24 mysql -uroot -proot
使用自定义MySQL配置文件
默认情况下,MySQL的启动配置文件是/etc/mysql/my.cnf,而/etc/mysql/conf.d目录下的存在任何.cnf格式的文件时,都会使用该文件中配置项替换默认配置。
因此,如果要使用自定义配置,可以在宿主机创建一个配置文件,然后在创建容器时通过-v参数,以数据卷的方式将自定义配置挂载到mysql容器的/etc/mysql/conf.d目录下。
例:
docker run --name mysql5_7_24 -p 3306:3306 -v /usr/local/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.24
以上示例会启动一个名为mysql5_7_24的MySQL服务器容器,该文件启动时会同时使用/usr/local/mysql/conf/my.cnf中的配置
注:如果使用到mysql主从配置,那么在mysql 5.7版本中不要使用挂载配置文件的方式,可以采用宿主机拷贝替换容器中的/etc/mysql/my.cnf文件,因为博主发现挂载配置文件开启log-bin没有生效,在这块遇到了坑,如果谁有更好的方法可以给博主留言
数据存储
在使用mysql镜像创建MySQL容器时,数据库数据存储可能会有以下两种方式:
1).数据卷容器:使用Docker默认的数据管理方式来管理数据库的数据存储,在这种方式下,数据库文件会被写入数据库的内部。这种方式对于用户非常简单,缺点是很在宿主机上找到所存储的数据。
2).外部数据卷:在宿主机创建一个数据目录,再将数据目录挂载到容器内部。这种方式可以很方便的在宿主机上找到并进行数据管理,但需要确保数据目录的存在。
当使用外部数据卷时,例:
docker run --name mysql5_7_24 -p 3306:3306 -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.24
表示将宿主机的/usr/local/mysql/data目录挂载到容器内的/var/lib/mysql目录
日志存储
同理,我们也可以将日志挂载到宿主机上,例:
docker run --name mysql5_7_24 -p 3306:3306 -v /usr/local/mysql/log:/var/log/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.24
表示将宿主机的/usr/local/mysql/log目录挂载到容器内的/var/log/mysql目录
那么总结起来同时挂载配置、数据卷、日志的命令为:
docker run --name mysql5_7_24 -p 3306:3306 -v /usr/local/mysql/conf:/etc/mysql/conf.d -v /usr/local/mysql/log:/var/log/mysql -v /usr/local/mysql/data:/var/lib/mysql --privileged=true -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.24
我安装的时候直接指定的my.cnf配置文件也是可以的如下
docker run --name mysql5_7_24 -p 3306:3306 -v /usr/local/mysql/conf/my.cnf:/etc/mysql/my.cnf -v /usr/local/mysql/log:/var/log/mysql -v /usr/local/mysql/data:/var/lib/mysql --privileged=true -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.24
其中的 -- privileged=true
是我启动mysql的时候发现mysql启动不了,通过 docker logs命令查看,发现提示信息是:chown: changing ownership of ‘/var/lib/mysql/....‘: Permission denied
于是,解决方法有这么三个:
- 在docker run中加入 --privileged=true 给容器加上特定权限
- 关闭selinux
- 在selinux添加规则,修改挂载目录的权限
下面开始导入nova.sql,这个文件一共12G
有时候会发现虽然很小的sql文件,在source导入数据库的时候也会很慢。这时候我们可以来修改一些mysql的数据库的配置来加快source导入的速度。
编辑/usr/local/mysql/conf/my.cnf加入如下内容
[mysqld]
interactive_timeout = 120
wait_timeout = 120
max_allowed_packet = 32M
1.查看变量 innodb_flush_log_at_trx_commit的值
SHOW VARIABLES LIKE 'innodb_flush_log_at_trx_commit' ;
2.查询结果如果是1的话,将其修改成0
SET GLOBAL innodb_flush_log_at_trx_commit =0;
3.这时候再source,会发现速度快了很多,在结束后记得把这个变量重新设置成1
SET GLOBAL innodb_flush_log_at_trx_commit =1;
通过docker stop 和docker start来重启mysql的容器使得配置生效
想要更快的提高source导入的速度需要在执行mysqldump的时候加 -e 参数使得生成的sql脚步是批量入库方式
source导入速度慢的解决办法:
假设要讲A数据库的数据导入到B数据库
1、首先确定目标库(B)的参数值,登录数据库B,执行以下命令
mysql>show variables like 'max_allowed_packet';
mysql>show variables like 'net_buffer_length';
2、根据参数值,在A数据库中使用mysqldump命令,如:
C:\Windows\system32>mysqldump -uroot -p idsource -e --max_allowed_packet=1048576 --net_buffer_length=16384 >C:\nova_work_document\novaold_mysqldb_backup\idsource20190212.sql
-e 使用包括几个VALUES列表的多行INSERT语法;
--max_allowed_packet=XXX 客户端/服务器之间通信的缓存区的最大大小;
--net_buffer_length=XXX TCP/IP和套接字通信缓冲区大小,创建长度达net_buffer_length的行。
注意:max_allowed_packet和net_buffer_length不能比目标数据库的设定数值 大,否则可能出错。
3、登录数据库B,执行source命令导入
use idsource;
source C:\nova_work_document\novaold_mysqldb_backup\idsource20190212.sql
一、主机与docker容器之间数据导入、导出
从主机复制到容器
sudo docker cp host_path containerID:container_path
从容器复制到主机
sudo docker cp containerID:container_path host_path
二、mysql source导入*.sql文件
进入数据库容器
docker exec -it containerID bash
数据库导入
mysql -h localhost -u root -p(进入mysql下面)
create database abc;(创建数据库)
show databases;(就可看到所有已经存在的数据库,以及刚刚创建的数据库abc)
use abc;(进入abc数据库下面)
show tables;(产看abc数据库下面的所有表,空的)
source /root/test.sql(导入数据库表)
show tables;(查看abc数据库下面的所有表,就可以看到表了)
desc pollution;(查看表结构设计)
select * from pollution;
exit(或者ctrl + c)退出mysql
比如执行 docker cp /root/nova.sql 95a0cd6077a0:/opt/
把文件拷贝到容器后在mysql中执行
use novadb;(进入abc数据库下面)
show tables;(产看abc数据库下面的所有表,空的)
source /opt/nova.sql(导入数据库表)
centos7 docker 安装 mysql5.7.24 导入12G的sql的更多相关文章
- 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 ...
- CentOS7编译安装MySQL5.7.24
目录 安装依赖 安装boost 编译安装MySQL 配置 登录MySQL,修改密码 安装依赖 (1)cmake是新版MySQL的编译工具 sudo yum install gcc gcc-c++ pc ...
- centos7下安装mysql5.7.24
第一步:下载rpm包 sudo wget http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/mysql57-community-rel ...
- CentOS7利用docker安装MySQL5.7
CentOS7利用docker安装MySQL5.7 前提条件 centos7 且内核版本高于3.10, 可通过以下命令查看内核版本 uname -r 利用yum 安装docker 安装一些必要的系统工 ...
- [ 原创 ] Centos7.6安装Mysql5.7
https://blog.csdn.net/shj_php/article/details/86712408 CentOS7下安装MySQL5.7安装与配置(YUM) http://blog.csdn ...
- [转]阿里云CentOS 7.1使用yum安装MySql5.6.24
阿里云CentOS 7.1使用yum安装MySql5.6.24 作者:vfhky | 时间:2015-06-25 09:43 | 分类:web 在前面两篇文章<2015博客升级记(四):Cent ...
- centos7下配置mysql5.7.24主从复制
前置条件 准备两台服务器(可以是虚拟机),系统为centos7 此处演示的两台服务器:192.168.8.134.192.168.8.135 第一步:安装mysql5.7.24 先在两台服务器上安装m ...
- 在 CentOS7 上安装 MySQL5.7
在 CentOS7 上安装 MySQL5.7 1 通过 SecureCRT 连接到阿里云 CentOS7 服务器: 2 进入到目录 /usr/local/ 中: cd /usr/local/ 3 创建 ...
- centos7编译安装MySQL5.7.9
title: centos7编译安装MySQL5.7.9 date: 2016-05-12 16:20:17 tags: --- Centos7编译安装mysql5.7.9 mysql5.7有更好的性 ...
随机推荐
- C# winform开发
一处消息死锁分析 最近维护一个工控机上运行的winform程序,我的前任在一个弹出窗口(窗口B)里面调用了ShowDialog方法弹出对话框(窗口C),导致了一个问题是有时关闭窗口C时windows假 ...
- 使用Fiddler对android应用抓http或https包
工作原理 先上个图 此图一目了然,可以看出fiddler在请求中所处的位置,我们就可以确定它能干些什么. WinInet(“Windows Internet”)API帮助程序员使用三个常见的Int ...
- Rhel6.0部署Oracle10g报错相关问题记录
1.libawt.so及libXt.so.6,lib*系列报错,到最后的界面ruiy哥我笑了!.相信你也会笑的!终于找到根源了!哇哈哈!希望后面不要报error in invoking target ...
- Tornado 高并发源码分析之一---启动一个web服务
前言: 启动一个tornado 服务器基本代码 class HomeHandler(tornado.web.RequestHandler): #创建 RequesHandler 对象,处理接收到的 h ...
- KinderEditor编辑器 在Asp.Net中的使用
KinderEditor编辑器的使用 分为简单的三步. 1:添加引用部分 <script src="/KinderEditor/kindeditor-min.js">& ...
- 配置环境是程序员的第一步 -- Xshell 6 免费版下载安装
Xshell 是一个强大的安全终端模拟软件,通常用来连接云主机,远程控制云主机. 很多人都不知道 Xshell 有专门为家庭和学校用户提供的免费版,只需要填个用户名和邮箱即可. 免费版链接:https ...
- ref & out - C#中的参数传递
[ref & out - C#中的参数传递] ref与out均指定函数参数按引用传递,惟一的不同是,ref传递的参数必须初始化,而out可以不用. ref与out无法作为重载的依据,即ref与 ...
- 【原创】0. MYSQL++的环境准备
1. 获取 Google MYSQL++,第一个就是,然后跟着要求进行下载. 2. 编译和安装 其实在作者的各种README文档里面已经写得很清楚了,现在对一些可能会出现问题的地方进行一下回顾. Wi ...
- IDEA MAVEN 1.8无效的源发行版
最近想将自己在IDEA上开发的MAVEN项目切换到JDK1.8版本上,结果IDEA报1.8无效的源发行版.下面说一下自己的解决方案: 1.pom文件 <build> <plugins ...
- 【HDU 6031]】 Innumerable Ancestors
题意 有一棵有n个结点的树,这里有m个询问,每个询问给出两个非空的结点集合A和B,有些结点可能同时在这两个集合当中.你需要从A和B中分别选择一个节点x和y(可以是同一个结点)你的目标是使LCA(x,y ...