ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL Docker Container

2022-04-28 16:34:42  阅读:124  来源: 互联网

标签:Container MySQL ID MYSQL mysql TABLE Docker docker


Official Document

MySQL - Official Image | Docker Hub
MySQL :: MySQL 8.0 Reference Manual :: 4.5.4 mysqldump — A Database Backup Program
MySQL——mysqldump参数大全

Practice In Action

Use MySQL Image

[ ~ Approach I ~ ]

Start MySQL Server Instance

version: '3.1'

services:
  mysql:
    image: mysql:8.0
    restart: unless-stopped
    volumes:
      - ./{some/path/on/your/host}/datadir /var/lib/mysql
    ports:
      - {mapping_port}: 3306
    environment:
      MYSQL_ROOT_PASSWORD: {MYSQL_ROOT_PASSWORD}
      MYSQL_DATABASE: {database}
      MYSQL_USER: {username}
      MYSQL_PASSWORD: {MYSQL_PASSWORD}
docker compose -f stack.yml up/down

Connect to MySQL

docker compose -f stack.yml start/restart/stop
docker compose -f stack.yml images/logs

[ ~ Approach II ~ ]

docker run -p {mapping_port}:3306 --name mysql -v ./{some/path/on/your/host}/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD={MYSQL_ROOT_PASSWORD} -d mysql:{tag}

Manage Image/Container

docker image ls -a
docker container ls -a
docker container create/run {IMAGE_ID/REPOSITORY}
docker container start/restart/stop/stats {CONTAINER_ID/NAMES}
docker container logs/rm {CONTAINER_ID/NAMES}
docker container prune   -- Remove unused containers
docker image history/rm {IMAGE_ID/REPOSITORY}
docker image prune   -- Remove unused images

Container Shell Access MySQL

docker logs {CONTAINER_ID/NAMES}
docker exec -it {CONTAINER_ID/NAMES} bash
root@{CONTAINER_ID}:/# mysqldump -u root -p {databasename} {tablename1} {tablename2} {...} {tablenameN} --no-create-info --complete-insert > /var/lib/mysql/{database}.sql
root@{CONTAINER_ID}:/# mysql -u root -p
mysql> use {databasename}
mysql> source /var/lib/mysql/{databasename}.sql
docker exec {CONTAINER_ID/NAMES} sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > ./{some/path/on/your/host}/all-databases.sql
docker exec -i {CONTAINER_ID/NAMES} sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < ./{some/path/on/your/host}/all-databases.sql

MySQL

  • Turn Off SQL_MODE - ONLY_FULL_GROUP_BY
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
  • Get TABLE_ROWS/AUTO_INCREMENT
SELECT TABLE_NAME, TABLE_ROWS FROM information_schema.TABLES
WHERE TABLE_SCHEMA = '{tablename}'
    and TABLE_ROWS > 0
ORDER BY TABLE_NAME;

SELECT TABLE_NAME, sum(TableA) TableA, sum(TableB) TableB FROM
    (SELECT TABLE_NAME, case when TABLE_SCHEMA='{tablenameA}' then AUTO_INCREMENT else 0 end TableA, case when TABLE_SCHEMA='{tablenameB}' then AUTO_INCREMENT else 0 end TableB
    FROM INFORMATION_SCHEMA.TABLES
    WHERE TABLE_SCHEMA in ('{tablenameA}', '{tablenameB}')
        AND AUTO_INCREMENT > 1 group by TABLE_SCHEMA, TABLE_NAME) w 
group by TABLE_NAME order by TABLE_NAME;

标签:Container,MySQL,ID,MYSQL,mysql,TABLE,Docker,docker
来源: https://www.cnblogs.com/selinachen/p/16202262.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有