“Mysql安装之Docker mysql”与“Mysql导出(多张表)表结构及表数据”:页面之间的差异

来自linuxsa wiki
(页面间差异)
跳转到导航 跳转到搜索
Evan留言 | 贡献
 
Evan留言 | 贡献
导入1个版本
 
第1行: 第1行:
=Run the application using Docker Compose=
=多个表=
 
[[基于Alpine的mysql Docker镜像]]
 
==文件目录==
<pre>
#mkdir -p /home/data/docker-compose-mysql/mysql
#mkdir -p /home/data/docker-compose-mysql/data
 
 
mkdir -p /data/apps/docker-compose-mysql/mysql
mkdir -p /data/apps/docker-compose-mysql/data
docker-compose-mysql]# tree .
.
├── data
├── docker-compose.yml
└── mysql
    └── docker-my.cnf</pre>
 
== mysql/docker-my.cnf==
===5.x  my.cnf ===
<pre>
[mysqld]
 
default-storage-engine=INNODB
 
character-set-server=utf8mb4
server-id = 100
#default-time_zone = '+8:00'
explicit_defaults_for_timestamp=true
log-bin=mysql-bin
 
max_connections = 10667
max_connect_errors = 6000
open_files_limit = 65535
table_open_cache = 1024
max_allowed_packet = 500M
binlog_cache_size = 1M
max_heap_table_size = 8M
tmp_table_size = 128M
 
read_buffer_size = 2M
read_rnd_buffer_size = 8M
sort_buffer_size = 8M
join_buffer_size = 8M
key_buffer_size = 256M
 
thread_cache_size = 64
 
query_cache_type = 1
query_cache_size = 64M
query_cache_limit = 2M
 
ft_min_word_len = 4
 
binlog_format = row
#binlog_format = mixed
expire_logs_days = 7
 
slow_query_log = 1
long_query_time = 2
slow_query_log_file = /var/lib/mysql/mysql-slow.log
general_log = 1
general_log_file = /var/lib/mysql/mysql.log
 
 
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
 
</pre>
 
===8.x  my.cnf ===
<pre>
<pre>
 
mysqldump -uroot -p  dbanme table1  table2  > u.sql
</pre>
</pre>


== docker-compose.yml==
<pre>
version: '3.1' 
services:
  mysql:
    # network_mode: "bridge"
    #image: evan886/mysql5.7:v1
    image: evan886/mysql5.7-debian
    #image: mysql:5.7.26
    hostname: dev-hello-mysql
    volumes:
      - ./data/mysql:/var/lib/mysql
      - ./mysql/docker-my.cnf:/etc/mysql/conf.d/docker-my.cnf
      #- "./init:/docker-entrypoint-initdb.d/"
#      - ./mysql/timezone:/etc/timezone
#前面是host 母机
    ports:
      - 3306:3306
    environment:
      MYSQL_ROOT_PASSWORD: 4939pAss3035EOV
      MYSQL_USER: 'test'
      MYSQL_PASS: 'yourpassword'
      TZ: Asia/Shanghai
    restart: always
#note  这个密码不能位数太多呢 不然好多问题
</pre>
===mysql 8 docker-compose.yml===
<pre>
cat docker-compose.yml
version: '3'
services:
  mysql:
    restart: always
    privileged: true
    image: mysql:8.0.22
    container_name: mysqlServer3308
    volumes:
      - ./db:/var/lib/mysql
      - ./conf:/etc/mysql/conf.d
      - ./logs:/logs
    command:
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
    environment:
      MYSQL_ROOT_PASSWORD: "eaAbc123654"
      MYSQL_USER: "test"
      MYSQL_PASSWORD: "Abc123654"
      MYSQL_INITDB_SKIP_TZINFO: "Asia/Shanghai"
    ports:
      - 3308:3306
    network_mode: "bridge"
</pre>
[https://blog.csdn.net/oschina_41731918/article/details/122837753  MySQL-8.0版本的docker-compose安装脚本(单实例]
[https://juejin.cn/post/6844904036362092558  一张图搞定Docker 安装 MySQL8.0 ]
==usage==
<pre>
docker-compose  up -d
#本机访问 mysql
yum install mysql -y  #client  可能是 mariadb-client
mysql -uroot -p -h127.0.0.1
</pre>
=dokcer build=
<pre>
#自己利用dockerfile build 并push 上 hub.docker
#有空要加上自己的特性 最好改为 alpine  如果不是为了体积,那还是官方的debian吧
注意  如果下载不了  点击右边的 Raw 可以方便copy
https://github.com/docker-library/mysql/tree/master/5.7
https://github.com/evan886/mysql/tree/master/docker-library/mysql/5.7
cd /data/builddocker/mysql/5.7
/data/builddocker/mysql/5.7# ls
docker-entrypoint.sh  Dockerfile
docker build --tag evan886/mysql5.7:v1 -f Dockerfile .
这样的tag会比较规范
REPOSITORY          TAG
jenkins/jenkins    2.176.4-alpine
要先登录
docker login
evan886  evan2240881
docker push evan886/mysql5.7:v1
</pre>
学习初始化 有表 插入等等的
[https://www.jianshu.com/p/ab3367b2e6b4 docker-compose部署MySQL]
[https://www.jb51.net/article/115422.htm 详解利用Dockerfile构建mysql镜像并实现数据的初始化及权限设置]
=上机有是 2020的 下面的是以前的 有空要优化一下 打包不要用 centos作 容器os=
= my dockerfile=
<pre>
cat Dockerfile
#名称: 当年学习docker打包用的例子而已
#
# time
FROM centos
MAINTAINER evan evan886@gmail.com
WORKDIR /root/
RUN yum -y  install wget
RUN  wget http://repo.mysql.com/mysql-community-release-el7-7.noarch.rpm
RUN rpm -ivh /root/mysql-community-release-el7-7.noarch.rpm
RUN yum -y install  mysql-server
RUN mysql_install_db --user=mysql
ENV MYSQL_USER test
ENV MYSQL_PASS mypassword
#支持中文
ENV LC_ALL  en_US.UTF-8
ADD build_table.sh  /root/build_table.sh
RUN chmod u+x /root/build_table.sh
EXPOSE 3306
ADD  run.sh  /root/run.sh
RUN  chmod u+x /root/run.sh
CMD  /root/run.sh
cat  build_table.sh
#!/bin/bash
mysqld_safe &
sleep 3
mysql -e "GRANT ALL PRIVILEGES ON *.* TO 'MYSQL_USER'@'%' IDENTIFIED BY '$MYSQL_PASS' WITH GRANT OPTION; "
mysql -e "create database evans"
mysql -e "create table evans.name(name char(20) not null,evan int not null) DEFAULT CHARSET=utf8"
mysql -e "insert into evans.evan values('韦子虚',36),('丽莉',33)"
cat run.sh
#!/bin/bash
mysqld_safe
docker build -t evan886/centos-mysql:v1  .
Successfully built 3c3879c54e3b
Successfully tagged evan886/centos-mysql:v1
[root@localhost mysql]# docker images
REPOSITORY            TAG                IMAGE ID            CREATED            SIZE
evan886/centos-mysql  v1                  3c3879c54e3b        8 minutes ago      867MB
docker push evan886/centos-mysql:v1
#测试 不加-d
  docker run -p 3309:3306 --name mysql -e MYSQL_ROOT_PASSWORD=mypassword --privileged=true mysql
  docker run -p 3309:3306 --name mysql -e MYSQL_ROOT_PASSWORD=mypassword  -d --privileged=true mysql
如果想拉我的镜像
docker pull evan886/centos-mysql:v1
</pre>
=测试=
<pre>
#我的母机是192.168.50.206
mysql  -uroot -p -h 192.168.50.206  -P3309
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.</pre>
==完整测试==
<pre>
docker pull evan886/centos-mysql:v1
root@debian:~/mysql# docker  images
REPOSITORY            TAG                IMAGE ID            CREATED            SIZE
evan886/centos-mysql  v1                  3c3879c54e3b        17 hours ago        867MB
#运行 加-v 会有问题
docker run -p 3309:3306 --name mysql -e MYSQL_ROOT_PASSWORD=mypassword -v /data/mysql:/var/lib/mysql  -d --privileged=true 3c3879c54e3b
root@debian:~/mysql# docker  ps  -a
CONTAINER ID        IMAGE              COMMAND                  CREATED            STATUS                    PORTS              NAMES
34ce2a368d7d        3c3879c54e3b        "/bin/sh -c /root/ru…"  4 minutes ago      Exited (0) 4 minutes ago                      mysql
root@debian:~/mysql#  docker  logs 34ce2a368d7d
180411 03:00:34 mysqld_safe Logging to '/var/log/mysqld.log'.
180411 03:00:34 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
180411 03:00:35 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
</pre>
=用官方的=
<pre>
docker pull mysql:5.7
#config and run
docker run -p 3307:3306 --restart 策略名称 -v 宿主机数据目录:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mysql密码 -d 镜像ID
docker run -p 3307:3306 --restart always -v /data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=2240800 -d 75576f90a779
</pre>
=注意 =
<pre>
运行启动
映射mysql外网访问端口: 3307
docker run -p 3307:3306 --restart 策略名称 -e MYSQL_ROOT_PASSWORD=mysql密码 -d 镜像ID
docker run -p 3307:3306 --restart always -v /data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=224099 -d 75576f90a779
Docker容器自启动策略
no 不自动重启容器. (默认value)
always 在容器已经stop掉或Docker stoped/restarted的时候才重启容器
on-failure 容器发生error而退出(容器退出状态不为0)重启容器
unless-stopped 在容器已经stop掉或Docker stoped/restarted的时候才重启容器
</pre>
==将MySQL的数据存到宿主机上==
<pre>docker run -p 3307:3306 --restart 策略名称 -v 宿主机数据目录:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mysql密码 -d 镜像ID
docker run -p 3307:3306 --restart always -v /home/mysql-db-backup:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=rootroot -d 5709795eeffa</pre>
==使用本地的MySQL配置文件==
<pre>docker run -p 3307:3306 --restart 策略名称 -v 宿主机数据目录:/var/lib/mysql -v 宿主机数据库配置文件目录:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=mysql密码 -d 镜像ID
docker run -p 33306:3306 --restart always -v /data/mysql0:/var/lib/mysql -v /data/mysql0_conf:/etc/mysql/connf.d -e MYSQL_ROOT_PASSWORD=rootroot -d 5709795eeffa
</pre>
=err=
<pre>
# err  你现在不能用套接字建立连接因为它不见了,所以可以建立一个TCP/IP连接
mysql -uroot -p2240881 -P3307
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
您在 /var/spool/mail/root 中有新邮件
[root@localhost ~]# mysql -uroot -p2240881 -P3307  -h 127.0.0.1
Welcome to the MariaDB monitor.  Commands end with ; or \g.
https://blog.csdn.net/hjf161105/article/details/78850658 解决Can 't connect to local MySQL server through socket '/tmp/mysql.sock '(2) "
</pre>
f4ba7ff24ae9: Waiting
ERROR: error pulling image configuration: Get https://production.cloudflare.docker.com/registry-v2/docker/registry/v2/blobs/sha256/e9/e9c354083de75cbcde66071c228fca267d0e946fb41a5399f58265e5a858fcb4/data?verify=1596806434-OrTgZox94HL0JXxYMfUx6j5RT8I%3D: net/http: TLS handshake timeout
请见 [[DockerHub镜像加速]]
=see also=
[https://github.com/docker-library/mysql/blob/f279c9cc0d20407a2c4d9465adae6b077dcf1b51/5.6/Dockerfile docker-library/mysql 5.6/Dockerfile]
[https://itbilu.com/linux/docker/EyP7QP86M.html MySQL 官方Docker镜像的使用]
[https://www.jianshu.com/p/5c18a4b01dcc?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation Docker部署安装MySQL5.7]
[https://www.jyoryo.com/index.php/archives/89.html MySQL 5.6 Linux Debian/Ubuntu源码编译安装 LNMP之MySQL]
[https://blog.csdn.net/sunyuhua_keyboard/article/details/81540012 docker 安装mysql 8]
[https://blog.csdn.net/xiaolyuh123/article/details/72629300 Docker运行Mysql实例]
[https://www.jianshu.com/p/7a01046b3c54 Docker部署(二):MySQL数据库]
[https://www.cnblogs.com/atuotuo/p/9402132.html#_labelTop 修改 Docker-MySQL 容器的 默认用户加密规则]


[https://blog.csdn.net/wxb880114/article/details/82219720 阿里云ECS-使用docker官方镜像安装mysql服务]
[https://www.cnblogs.com/youngjoy/p/3912623.html Mysql导出(多张表)表结构及表数据 mysqldump用法]


[https://www.jianshu.com/p/0ba97a26c086 宿主机连接docker中的mysql]


[[category:ops]]  [[category:mysql]] [[category: container]]
[[category:ops]]

2019年10月14日 (一) 13:52的最新版本

多个表

mysqldump -uroot -p  dbanme table1  table2  > u.sql 


Mysql导出(多张表)表结构及表数据 mysqldump用法