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有更好的性 ...
随机推荐
- 微信小程序之 wx.getUserInfo引导用户授权问题
首先,在page外定义一个函数用户判断是否为空对象 var isEmptyObject = function (e) { var temp; for (temp in e) ; } 然后,在page中 ...
- NPOI-WebForm_Excel导入与导出
本文面对的是第一次 接触NPOI的童鞋 不必为了一些琐碎的事情搞的心情烦躁 废话不多说先上 Demo 的全家福 接下来直接上代码 public partial class _Default : Sys ...
- 解决Axis2在webservice中遇到特殊字符的无法传输的缺陷(<CDATA>数据类型)
在使用Axis2进行soa webservice开发时,遇到类似以下的错误信息: com.ctc.wstx.sw.BaseStreamWriter.writeCharacters(BaseStream ...
- 【原】Zookeeper 概述 + 官网 Overview 翻译
分布式应用 分布式应用 distributed application可以在给定时间(同时)在网络中的多个系统上运行,通过协调它们以快速有效的方式完成特定任务. (a), (b): a distrib ...
- ORA-01940:无法删除当前已链接的用户
(1)查看用户的连接状况 select user name, sid, serial# from v$session; (2)找到要删除用户的sid,和serial,并删除 例如要删除用户nc633t ...
- 刷题向》关于第一篇状压DP BZOJ1087 (EASY+)
这是本蒟蒻做的第一篇状压DP,有纪念意义. 这道题题目对状压DP十分友善,算是一道模板题. 分析题目,我们发现可以用0和1代表每一个格子的国王情况, 题目所说国王不能相邻放置,那么首先对于每一行是否合 ...
- 关于PHP的一个坑爹问题(页面刷新)
最近在用PHP做一个服务端和一个客户端,在快要完工的时候,出现了一个重大问题---- 当在客户端手动输入IP和端口的时候,一按连接,OK,连接成功,嘻嘻,就在我自以为大功告成的时候,来了个晴天霹雳,一 ...
- 【转】LVS负载均衡之session解决方案 持久连接
原文地址:http://minux.blog.51cto.com/8994862/1744761 1. 持久连接是什么? 1.1 在LVS中,持久连接是为了用来保证当来自同一个用户的请求时能够定位到同 ...
- 618F Double Knapsack
传送门 题目大意 分析 代码 #include<iostream> #include<cstdio> #include<cstring> #include<s ...
- html5 存储方式
localstorage(永久保存)&&sessionstorage(重新打开浏览器会消失) sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有在 ...