栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Docker 学习笔记 - 进阶一

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Docker 学习笔记 - 进阶一

Docker 学习笔记 - 进阶一
  • 1. docker复杂安装--mysql主从复制
    • 1.1 MySQL主从复制的原理
    • 1.1 主数据库搭建 128 服务器
      • 1.1.1 新建主数据库容器实例3306
      • 1.1.2 进入/mydata/mysql-master/conf目录下新建my.cnf
      • 1.2.3 修改完成后重启master 数据库:
      • 1.2.4 进入mysql-master容器
        • 1.2.4.1 密码有问题
        • 1.2.4.2 重置密码流程
      • 1.2.5 master容器实例内创建数据同步用户
    • 1.2 从数据库搭建 130 服务器

课程来自于尚硅谷周阳老师的 docker 教程
链接地址: https://www.bilibili.com/video/BV1gr4y1U7CY?p=1

1. docker复杂安装–mysql主从复制 1.1 MySQL主从复制的原理

MySQL主从复制是一个异步的复制过程,主库发送更新事件到从库,从库读取更新记录,并执行更新记录,使得从库的内容与主库保持一致。
参考资料: https://blog.csdn.net/linkingfei/article/details/102774992

1.1 主数据库搭建 128 服务器 1.1.1 新建主数据库容器实例3306
# 密码自己写
docker run -p 3306:3306 --name mysql-master 
-v /mydata/mysql-master/log:/var/log/mysql 
-v /mydata/mysql-master/data:/var/lib/mysql 
-v /mydata/mysql-master/conf:/etc/mysql/conf.d 
-e MYSQL_ROOT_PASSWORD=*** 
-d mysql:8.0.27

注意: mysql8 的 配置文件位置在 /etc/mysql/conf.d
参考资料修改: https://blog.csdn.net/qq_37181910/article/details/118905118

1.1.2 进入/mydata/mysql-master/conf目录下新建my.cnf

新增内容:

[mysqld]
## 设置server_id,同一局域网中需要唯一
server_id=101 

## 指定不需要同步的数据库名称
binlog-ignore-db=mysql  

## 开启二进制日志功能
log-bin=mall-mysql-bin  

## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M  

## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed  

## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7  

## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
##设置字符编码为utf8mb4
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4

指令:

[root@vm001 mysql-master]# cd /mydata/mysql-master/conf
[root@vm001 conf]# ls
[root@vm001 conf]# vim my.cnf
[root@vm001 conf]# cat my.cnf
1.2.3 修改完成后重启master 数据库:
docker restart mysql-master
1.2.4 进入mysql-master容器 1.2.4.1 密码有问题
docker exec -it mysql-master /bin/bash
mysql -uroot -p

但是,输入密码后出现访问被拒绝错误:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
1.2.4.2 重置密码流程

解决问题参考资料: https://blog.csdn.net/Csdn_xiansheng/article/details/121562340
第一步:跳过验证:修改MySQL安装目录下的my.cnf 配置文件,使登录时跳过权限检查

 vim /mydata/mysql-master/conf/my.cnf
 # 以下为 my.cnf 需要添加的内容
 [mysqld]
 skip_grant_tables

第二步:配置登录密码

[root@vm001 conf]# docker exec -it mysql-master /bin/bash
root@b827f495a09c:/# mysql -uroot -p
# 此时直接按enter键进入即可
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 7
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

mysql> show databases;
mysql> use mysql;
mysql> update user set plugin='mysql_native_password' where user='root';
#刷新权限表,不能省略
mysql>  flush PRIVILEGES;
#设置密码
mysql>  alter user 'root'@'localhost' IDENTIFIED BY '123456';
#再次刷新权限表
mysql>  flush PRIVILEGES;
#退出数据库
mysql> exit

第三步:删去跳过权限语句并重启服务
将my.cnf文件中加入的跳过权限语句删除或加#号注释。重启服务,使用修改后的密码登录即可

vim /mydata/mysql-master/conf/my.cnf 

# skip-grant-table
1.2.5 master容器实例内创建数据同步用户
# 创建 slave 用户,密码123456
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
# 给予reader同步权限
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

FLUSH PRIVILEGES;
1.2 从数据库搭建 130 服务器
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/840279.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号