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