数据库
首页 > 数据库> > Docker 环境 MySQL8 主从配置

Docker 环境 MySQL8 主从配置

作者:互联网

一 准备工作

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