ICode9

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

Docker 环境 MySQL8 主从配置

2022-06-23 00:33:09  阅读:232  来源: 互联网

标签:主库 MySQL8 主从 cnf master mysql docker 从库 Docker


一 准备工作

1.安装Docker

2.创建数据及配置存放目录

# 根据自己的习惯设定存放路径
# 创建主库数据存放目录  mkdir -p代表文件不存在即创建
mkdir -p /home/docker/mysql/master/data
# 创建主库配置存放目录
mkdir -p /home/docker/mysql/master/conf
 
# 创建从库1数据存放目录
mkdir -p /home/docker/mysql/slave1/data
# 创建从库1配置存放目录
mkdir -p /home/docker/mysql/slave1/conf

3.要安装mysql8,必须在之前创建的conf文件夹中先创建my.cnf作为mysql8的配置文件

master库和slave库配置文件my.cnf是几乎一样的,只要server-id不一致即可

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
 
secure-file-priv= NULL
 
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

port = 3307 # 主库的端口可以使用默认3306,从库的端口必须和主库不一致
# 服务器唯一ID,默认是1, 要和slave库不同 server-id=1 # 启用二进制日志 log-bin=binlog # 从库追踪主库的日志文件名开头,有些数据库是mysql-bin,有些是binlog,具体可以在主库mysql环境下输入mysql> show master status查看 # 最大连接数 max_connections=10000 # 设置默认时区, # default-time_zone='+8:00' # 0:区分大小写 # 1:不区分大小写 # lower_case_table_names=1

4.docker中安装mysql8

主库命令

sudo docker run --name mysql_master \
-d --network=host \
-v /home/docker/mysql/master/data:/var/lib/mysql \
-v /home/docker/mysql/master/conf/my.cnf:/etc/mysql/my.cnf \
-e MYSQL_ROOT_PASSWORD=111111 \
mysql:8

注释:
第一行:docker启动后的名字
第二行:docker直接使用服务器的网络端口映射
第三行:docker里面的数据映射到服务器本地的路径
第四行:docker里面加载使用的cnf文件映射到服务器本地的路径
第五行:设置docker中mysql的root初始密码
第六行:docker使用的镜像:版本

从库命令

sudo docker run --name mysql_slave1 \
-d --network=host \
-v /home/docker/mysql/slave1/data:/var/lib/mysql \
-v /home/docker/mysql/slave1/conf/my.cnf:/etc/mysql/my.cnf \
-e MYSQL_ROOT_PASSWORD=111111 \
mysql:8

注释:
第一行:docker启动后的名字
第二行:docker直接使用服务器的网络端口映射
第三行:docker里面的数据映射到服务器本地的路径
第四行:docker里面加载使用的cnf文件映射到服务器本地的路径
第五行:设置docker中mysql的root初始密码
第六行:docker使用的镜像:版本

5.测试远程主从数据库连接状况 

进入docker命令:使用docker名称或者id

docker exec -it mysql_master /bin/bash

进入docker后试着进入mysql8,部分数据库可能会出现无法登录的状态,这个需要在上述的mysql配置文件my.cnf 文件中,在[mysqld] ,在其后面添加 skip-grant-tables

同理,从属数据库也是同样的方法测试.

别忘了加入skip-grant-tables后进入mysql重新设置密码后,再flush privileges,之后从my.cnf中再删掉这行skip-grant-tables

6.在主库创建从库访问主库的账户

create user 'myslave'@'%' identified by '111111';
grant replication slave on *.* to 'myslave'@'%';

# *.*代表所有的数据库 

7.查看master机器的状态

SHOW MASTER STATUS

 

File栏下的binlog.000103就是从库要追踪的主库的日志文件

position栏的数字就是追踪的起始位置

8.从库设置master信息

进入从库的docker,再进入mysql环境:

CHANGE MASTER TO
MASTER_HOST='192.168.1.175', # 主库的IP地址
MASTER_USER='mysalve', # 主库设置的从库访问用户名
MASTER_PASSWORD='111111', # 密码
MASTER_LOG_FILE='binlog.000103',
MASTER_LOG_POS=28862;

9.开始同步

# 开始同步
start slave;
 
# 查看同步状态
show slave status \G;

 

 看到两个yes状态就是正常运行状态.

注意:在主库数据在从库进行数据备份,有冷备份和热备份两种,冷备份就是先要锁定主库的数据库,再导出,再导入到从库数据库,这样两个数据库可以保证是在同一个起点,别忘了解锁主库数据,之后主库和从库的数据就完全一致了.

  

 

标签:主库,MySQL8,主从,cnf,master,mysql,docker,从库,Docker
来源: https://www.cnblogs.com/ericyjchung/p/16403733.html

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

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

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

ICode9版权所有