一、前言
在此之前笔者写过一篇博客《你说精通MySQL其实很菜jī(1):你不一定会的基本技巧或知识点(值得一看)》,本文内容是从那篇博客截取出来的。我们要学习MySQL相关的技术点,使用官方提供的测试数据库肯定是最好的选择,因为会非常地全面。
与MySQL相关的安装部署博客如下:
最新MySQL-5.7.40在云服务器Centos7.9安装部署
写最好的Docker安装最新版MySQL8(mysql-8.0.31)教程(参考Docker Hub和MySQL官方文档)
本文由 @大白有点菜 原创,请勿盗用,转载请说明出处!如果觉得文章还不错,请点点赞,加关注,谢谢!
二、MySQL官方示例数据库(Employees)下载并安装
MySQL官方提供一个示例数据库 Employees 以供大家测试。官网中是这么介绍 Employees 示例数据库的:
Employees 示例数据库由 Patrick Crews 和 Giuseppe Maxia 开发,提供了分布在六个单独表上的大量数据(大约 160MB)的组合,总共包含 400 万条记录。该结构与广泛的存储引擎类型兼容。通过包含的数据文件,还提供了对分区表的支持。
除了基础数据之外,Employees 数据库还包括一套可以跨测试数据执行的测试,以确保您加载的数据的完整性。这应该有助于确保初始加载期间的数据质量,并且可以在使用后使用以确保在测试期间没有对数据库进行任何更改。
【Employees 示例数据库简介 - 官方文档】:
https://dev.mysql.com/doc/employee/en/employees-introduction.html
【Employees 示例数据库安装 - 官方文档】:
https://dev.mysql.com/doc/employee/en/employees-installation.html
【Employees 示例数据库github下载地址,这里最新是 1.0.7 版】:
https://github.com/datacharmer/test_db/releases/tag/v1.0.7
(1)github上下载Employees 示例数据库,如果下载不了,那就采用手动上传的方式。注意,可以下载到指定路径,笔者是直接下载到Centos最顶层的目录,使用命令 cd ~
即可切换到那里。
wget 'https://codeload.github.com/datacharmer/test_db/zip/master' -O test_db-master.zip
(2)解压 test_db-master.zip 压缩包,并切换到 test_db-master 目录下查看有哪些文件。我们要关注 employees.sql
脚本,里面有执行还原数据库的操作。
unzip test_db-master.zip
cd test_db-master
(3)安装 Employees 数据库:Centos上直接安装MySQL的。
- 使用 mysql 命令执行 employees.sql 脚本还原 employees 数据库。
mysql -u root -p123456 < employees.sql
- 连接 mysql 数据库。
mysql -u root -p123456
- 切换到 employees 数据库。
use employees;
- 查看 employees 数据库所有表。
show tables;
(4)安装 Employees 数据库:Docker上启动MySQL容器的。
【Docker启动MySQL容器相关系列安装部署教程】
写最好的Docker安装最新版MySQL8(mysql-8.0.31)教程(参考Docker Hub和MySQL官方文档)
Docker安装最新版MySQL5.7(mysql-5.7.40)教程(参考Docker Hub)
1)此步很重要,一定要将 Employees 数据库有关的数据文件(employees.sql、show_elapsed.sql、load_departments.dump、load_employees.dump、load_dept_emp.dump、load_dept_manager.dump、load_titles.dump、load_salaries1.dump、load_salaries2.dump、load_salaries3.dump
)复制到 MySQL 容器挂载的数据目录下,不然执行 employees.sql 脚本文件会报错!笔者运行MySQL容器挂载的数据目录是 /mydata/mysql/data/
。
cp ~/test_db-master/employees.sql show_elapsed.sql *.dump /mydata/mysql/data/
2)方法一
执行 employees.sql 脚本。这种方式虽然有点麻烦,但是不用进入到MySQL容器中去执行 employees.sql 脚本。需要修改
复制到 /mydata/mysql/data/ 目录下的 employees.sql
文件。修改有两种方式,建议使用第一种。
- (
方便
)第一种方式修改 /mydata/mysql/data/ 目录下的 employees.sql 文件,使用sed
命令匹配每个数据文件名称,并在其前面添加/var/lib/mysql/
路径,这路径是 mysql 的数据目录。“\”反斜杠代表转义符,主要转义“/”这个路径符号
。
sed -i 's/load_departments.dump/\/var\/lib\/mysql\/load_departments.dump/' /mydata/mysql/data/employees.sql
sed -i 's/load_employees.dump/\/var\/lib\/mysql\/load_employees.dump/' /mydata/mysql/data/employees.sql
sed -i 's/load_dept_emp.dump/\/var\/lib\/mysql\/load_dept_emp.dump/' /mydata/mysql/data/employees.sql
sed -i 's/load_dept_manager.dump/\/var\/lib\/mysql\/load_dept_manager.dump/' /mydata/mysql/data/employees.sql
sed -i 's/load_titles.dump/\/var\/lib\/mysql\/load_titles.dump/' /mydata/mysql/data/employees.sql
sed -i 's/load_salaries1.dump/\/var\/lib\/mysql\/load_salaries1.dump/' /mydata/mysql/data/employees.sql
sed -i 's/load_salaries2.dump/\/var\/lib\/mysql\/load_salaries2.dump/' /mydata/mysql/data/employees.sql
sed -i 's/load_salaries3.dump/\/var\/lib\/mysql\/load_salaries3.dump/' /mydata/mysql/data/employees.sql
sed -i 's/show_elapsed.sql/\/var\/lib\/mysql\/show_elapsed.sql/' /mydata/mysql/data/employees.sql
- (
麻烦
)第二种方式修改 /mydata/mysql/data/ 目录下的 employees.sql 文件,手动编辑 employees.sql 文件,并在每个数据文件名称前面添加/var/lib/mysql/
路径。
vim /mydata/mysql/data/employees.sql
/var/lib/mysql/
docker exec -i
命令运行MySQL容器,并使用 mysql 命令执行 employees.sql 脚本还原 employees 数据库。参数-i
后面可以是容器名称
或者容器id
(两种写法) 。
docker exec -i mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /mydata/mysql/data/employees.sql
或者
docker exec -i 673 sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /mydata/mysql/data/employees.sql
- 测试 employees 数据库是否已经安装好,这里只查询 departments 表的数据(两种写法)。
docker exec -i mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD" -e "use employees;" -e "select * from departments;"'
或者
docker exec -i 673 sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD" -e "use employees;" -e "select * from departments;"'
3)方法二
执行 employees.sql 脚本。这种方式需要进入到MySQL容器中去执行 employees.sql 脚本,不需要修改 employees.sql 文件。
- 进入到MySQL容器(两种写法)。
docker exec -it mysql /bin/bash
或者
docker exec -it 673 /bin/bash
- 切换到
/var/lib/mysql
目录。
cd /var/lib/mysql
- 使用 mysql 命令执行 employees.sql 进行数据库还原(两种写法)。
mysql -u root -p"$MYSQL_ROOT_PASSWORD" < employees.sql
或者
mysql -u root -p123456 < employees.sql
- 测试 employees 数据库是否已经安装好,这里只查询 departments 表的数据(两种写法)。
mysql -u root -p"$MYSQL_ROOT_PASSWORD" -e 'use employees;' -e 'select * from departments;'
或者
mysql -u root -p123456 -e 'use employees;' -e 'select * from departments;'