Mysql | Docker搭建MySQL服务 (包括主从复制)
Docker搭建MySQL服务 (读写分离之主库搭建)
提示:前要开启
docker
不知道移步docker
分类入门
- 拉取镜像
docker pull percona:5.7.23
(percona:5.7.23)Orcal 发布的mysql版本 理解为mysql的一个分支就好了
- 检查镜像
docker images
- 新建数据,配置文件存放目录,建立文件映射,后期容易修改配置文件
mkdir /data/mysql/conf -p
mkdir /data/mysql/data
##返回根目录 并对data文件夹加入写权限
chmod 777 data -R
ll
目录这样显示
- 在conf下新建配置文件
my.cnf
,并输入#建议将注释删除 [mysqld] #开启二进制目录文件 log-bin=mysql-bin #服务id不可重复 server-id=1 #解决打印台报错 sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
- 创建容器
docker create --name percona-master01 -v /data/mysql/master01/data:/var/lib/mysql -v /data/mysql/master01/conf:/etc/my.cnf.d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root percona:5.7.23
注意端口号映射
-p 3306:3306
(前面为机器端口号,后面为docker端口号)
- 启动容器
docker start percona-master01 && docker logs -f percona-master01
- Navicat 连接 刚刚的 mysql(主机名是之前设置过hosts映射的,没设置就写ip地址)
- mysql创建用户
--用户名@mysql位置地址
CREATE USER 'zhy'@'%'IDENTIFIED BY 'zhy';
grant replication slave on *.* to 'zhy'@'%';
FLUSH PRIVILEGES;
Navicat 窗口报错解决
-
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
-
docker 重新启动
docker restart 容器名 (后面可选)&& docker logs -f 容器名
-
Navicat
show master status;
查看master状态
日志文件 与 起始位置 -
查看二进制日志和文件
show GLOBAL VARIABLES like 'binlog%';
-
查看server相关的配置信息
show GLOBAL VARIABLES LIKE 'server%';
前面配置过server-id
为1 这里看到说明配置文件生效了
Docker搭建MySQL服务 (读写分离之从库搭建)
- 搭建过程与主库大致相同,配置和文件路径略有区别
- 新建路径
/data/mysql/slave01
在下面创建conf
、data
两个目录 用来映射docker目录 - 对两个文件夹授权
chmod 777 *-R
意义在于任意用户可以写 - 在conf下创建my.cnf
##内容如下
[mysqld]
log-bin=mysql-bin
server-id=2 ##注意从节点不能和主节点id相同
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
- 创建容器
docker create --name percona-slave01 -v /data/mysql/slave01/data/:/var/lib/mysql -v /data/mysql/slave01/conf:/etc/my.cnf.d -p 3317:3306 -e MYSQL_ROOT_PASSWORD=root percona:5.7.23
- 启动容器
docker start percona-slave01 && docker logs -f percona-slave01
- Navicat 连接 设置主从关系
CHANGE MASTER TO
master_host='hadoop102',
master_user='zhy',
master_password='zhy',
master_port=3306,
--与上文种主节点1的 状态查询文件与位置一致
master_log_file='mysql-bin.000005',
master_log_pos=154;
- 启动从服务
START SLAVE;
可以实现主从复制
修改从服务配置 需要停止服务
stop slave;