docker实战篇1:mysql应用

     我们这里先aliyun205这台服务器上通过docker创建一个mysql5.7的数据库,然后在该数据上存放一些测试数据,模拟备份打包为tar.gz文件。最后在VM_190_147_centos这台服务器上把打包的数据库通过docker镜像恢复出来。

1、通过docker构建mysql5.7数据库

1、拉取镜像

[root@aliyun205 ~]# docker pull mysql:5.7.24

2、常见目录

[root@aliyun205 ~]# mkdir -p /opt/mysql3306/{conf,logs,data}

3、启动容器

[root@aliyun205 ~]# docker run -it -d -p 3306:3306 --name=mysql --mount type=bind,src=/opt/mysql3306/conf,dst=/etc/mysql --mount type=bind,src=/opt/mysql3306/logs,dst=/var/log/mysql --mount type=bind,src=/opt/mysql3306/data,dst=/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456  mysql:5.7.24
e3560ae32aec1ad87b336f8aef0a2bab3c7b75fa182f0d1882846921de85de66

【说明】我们使用--mount挂载点的方式指定目录,对这些挂载点说明

(1)--mount type=bind,src=/opt/mysql3306/conf,dst=/etc/mysql 将主机当前目录下的conf挂载到容器的/etc/mysql;

(2) --mount type=bind,src=/opt/mysql3306/logs,dst=/var/log/mysql将主机当前目录下的logs目录挂载到容器的/var/log/mysql;

(3)--mount type=bind,src=/opt/mysql3306/data,dst=/var/lib/mysql 将主机当前目录下的data目录挂载到容器的/var/lib/mysql;

(4)-e MYSQL_ROOT_PASSWORD=123456 指定数据库的初始化密码。

【参数说明:】
(1)-e MYSQL_USER="woniu"  :添加woniu用户;
(2)-e MYSQL_PASSWORD="123456":设置添加的用户密码;
(3)-e MYSQL_ROOT_PASSWORD="123456":设置root用户密码;
(4)--character-set-server=utf8:设置字符集为utf8;
(5)--collation-server=utf8_general_cli:设置字符比较规则为utf8_general_cli。
(6)--privileged=true:容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限;
(7)-v /docker/mysql/conf/my.cnf:/etc/my.cnf:映射配置文件

2、备份数据

1、模拟数据

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` int(11) NOT NULL,
  `name` varchar(50) NOT NULL,
  `age` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('1', '张三', '10');
INSERT INTO `user` VALUES ('2', '李四', '20');
INSERT INTO `user` VALUES ('3', '王五', '30');

2、这里模糊docker挂掉了

[root@aliyun205 ~]# docker stop  mysql
mysql

3、进入/opt/mysql3306目录,使用tar -zcvf命令打包,压缩包就是我们备份的数据
 

[root@aliyun205 opt]# cd /opt/mysql3306/
[root@aliyun205 mysql3306]# tar -zcvf backup.tar.gz ./

3、恢复数据

VM_190_147_centos这台服务器上已经有了相同版本的docker镜像,且我们把对应目录为/data/mysql3306/,并把上一步骤转给你备份文件方在该目录。

[root@VM_190_147_centos ~]# cd /data/mysql3306/
[root@VM_190_147_centos mysql3306]# ll
total 7072
-rw-r--r-- 1 root root 7239684 Dec  7 10:17 backup.tar.gz

在/data/mysql3306目录下解压缩备份文件

[root@VM_190_147_centos mysql3306]# tar -zxvf backup.tar.gz 
[root@VM_190_147_centos mysql3306]# ll
total 7084
-rw-r--r-- 1 root    root     7239684 Dec  7 10:17 backup.tar.gz
drwxr-xr-x 2 root    root        4096 Dec  7 10:06 conf
drwxr-xr-x 6 polkitd ssh_keys    4096 Dec  7 10:14 data
drwxr-xr-x 2 root    root        4096 Dec  7 10:06 logs

启动容器

[root@VM_190_147_centos ~]# docker run -it -d --name=mysql -p 3306:3306 --mount type=bind,src=/data/mysql3306/conf,dst=/etc/mysql --mount type=bind,src=/data/mysql3306/logs,dst=/var/log/mysql --mount type=bind,src=/data/mysql3306/data,dst=/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.24
fe231cfb5ef36b2e5d5dd019c8d8b734d6d236d47877216b6a38e6de37db0393

检查数据是否存在

root@VM_190_147_centos ~]# docker ps
[root@VM_190_147_centos ~]# docker exec -it mysql bash
root@fe231cfb5ef3:/# mysql -uroot -p123456
mysql> use wzy;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select * from user;
+----+------+------+
| id | name | age  |
+----+------+------+
|  1 | ??   |   10 |
|  2 | ??   |   20 |
|  3 | ??   |   30 |
+----+------+------+
3 rows in set (0.00 sec)

猜你喜欢

转载自blog.csdn.net/u013089490/article/details/84870704