一、linux创建配置文件、文件夹
在/usr/local/先创建software文件夹,再在software下创建mysql文件夹,文件结构如下
二、拷贝my.cnf文件到conf文件夹下
三、查询拉取mysql镜像
docker search mysql
四、拉取mysql镜像到本地(linux)
docker pull mysql
结果:拉取的是最新版本
五、查询镜像检查是否已下载到本地
docker image ls
六、创建运行mysql容器(master)
创建容器并运行
- i:以交互模式运行容器
-
t:为容器重新分配一个伪输入终端
-
name :容器名称
- privileged: 设置容器公开权限(默认为true)
- p :映射端口 linux端口: 容器内置端口(mysql默认端口为3306)
- v : linux挂载文件夹/文件和容器内路径的映射
-
e: 容器的环境变量(设置mysql默认用户名&密码)
-
d: 后台运行容器,并返回容器ID
注意路径要和自己实际情况保持一致
docker run -it \
--name mysql_3306 \
--privileged \
-p 3306:3306 \
-v /usr/local/software/mysql/3306/conf/my.cnf:/etc/mysql/my.cnf \
-v /usr/local/software/mysql/3306/data:/var/lib/mysql \
-v /usr/local/software/mysql/3306/mysql-files:/var/lib/mysql-files \
-e MYSQL_ROOT_PASSWORD=sxq123456 \
-d mysql
七、进入容器
docker exec
- -it:以交互模式运行容器 ,为容器重新分配一个伪输入终端。
- bash: bash(GNU Bourne-Again Shell)是最常用的一种shell(运行在终端的互动程序)。
docker exec -it mysql_3306 bash
八、容器中运行mysql客户端
登录mysql客户端: mysql -u用户名 -p密码
如果登录成功,则docker安装mysql成功。
九、退出容器,防火墙开放端口
退出容器
开放指定端口
firewall-cmd —zone=public —add-port=端口号/tcp —permanent
—zone: public 公开端口
—add-port: 端口号/协议名称
—permanent: 永久开放
firewall-cmd --zone=public --add-port=3306/tcp --permanent
重新加载防火墙
firewall-cmd —reload
十、navicat测试连接
主机地址与ip地址相同,密码为设置的密码。
十一、检查binlog是否开启
mysql> show variables like 'log_%';
on 表示已开启
十二、查看当前mysql容器中的binlog日志文件
切换目录到 / var/lib/mysql,查看日志文件
mysql> quit
Bye
root@1b32ebb973d1:/# cd /var/lib/mysql
root@1b32ebb973d1:/var/lib/mysql#
也可查看binlog.index查看日期情况
root@1b32ebb973d1:/var/lib/mysql# cat binlog.index
./binlog.000001
./binlog.000002
./binlog.000003
./binlog.000004
当前mysql数据库binlog情况
登录mysql客户端: mysql -uroot -p123
使用命令: show master status;
mysql> show master status;
+---------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000004 | 156 | | | |
+---------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
当前显示/var/lib/mysql/日志文件的最后一个文件
十三、搭建mysql(master)服务器
编辑my.cnf
十四、创建与从(slave)服务通信的用户
-- 创建用户--
create user 'slave'@'%' IDENTIFIED WITH mysql_native_password by 'sxq123456';
-- 给用户授权 --
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'slave'@'%';
-- 应用授权 --
flush PRIVILEGES
十五、查询master的状态
show master status
十六、获取master容器ip地址
[root@localhost conf]# docker inspect mysql_3306 |grep IPA
十七、搭建mysql(slave)从服务器3310
重复步骤一和二,文件夹命名为3310
十八、修改3310内的配置文件
重复步骤13,将my.cnf修改为如图下所示
十九、创建运行slave01容器
重复步骤6,如下所示
docker run -it \
--name mysql_3310 \
--privileged \
-p 3310:3306 \
-v /usr/local/software/mysql/3310/conf/my.cnf:/etc/mysql/my.cnf \
-v /usr/local/software/mysql/3310/data:/var/lib/mysql \
-v /usr/local/software/mysql/3310/mysql-files:/var/lib/mysql-files \
-e MYSQL_ROOT_PASSWORD=123 \
-d mysql
二十、防火墙开放3310端口
如步骤九所示,3306改为3310
二十一、navicat测试
重复步骤10,3306改为3310
二十二、配置主从
修改从(slave)服务器与master关联
进入从(slave)容器中,输入命令 change master to 参数 …
change master to
master_host='172.17.0.2',
master_user='slave',
master_password='sxq123456',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=8748;
MASTER_LOG_POS与Position的值一致。
二十三、开启并查询slave
在mysql容器中
start slave;
show slave status \G;
均为yes,则主从配置成功。