当前位置:网站首页>Docekr学习 - MySQL8主从复制搭建部署
Docekr学习 - MySQL8主从复制搭建部署
2022-07-25 12:41:00 【嗯嗯**】
主从复制搭建
# 下载镜像
docker pull mysql
# 第一步:启动主MySQL
docker run --name=mysql-master -p 3308:3306 -v /etc/localtime:/etc/localtim -v /www/server/mysql_master-slave/master/data:/var/lib/mysql -v /www/server/mysql_master-slave/master/log:/var/log/mysql -v /www/server/mysql_master-slave/master/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root --privileged=true -d mysql:latest
# 第二步:添加配置文件 /www/server/mysql_master-slave/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,表示不自动清理。
# 旧版5的配置==如果是8记得替换成秒数哦,否则进不去mysqld
#expire_logs_days=7
# 新版8的配置
binlog_expire_logs_seconds=604800
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
# 第三步:重启主MySQL
docker restart mysql-master
# 第四步:主MySQL中创建slave用户 == 使永Navicat或者直接进容器内部运行即可
# 进入主容器mysql:docker exec -it mysql-master mysql -uroot -p
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'slave'@'%';
SELECT plugin FROM `user` where user = 'slave';
# 对于mysql8 这步特别重要,需要修改授权插件,否则从MySQL那边连接不到主MySQL进行同步拉取数据
# 如果是MySQL5则不需要运行这个语句
ALTER USER 'slave'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
# 第五步:启动从MySQL
docker run --name=mysql-slave -p 3309:3306 -v /etc/localtime:/etc/localtim -v /www/server/mysql_master-slave/slave/data:/var/lib/mysql -v /www/server/mysql_master-slave/slave/log:/var/log/mysql -v /www/server/mysql_master-slave/slave/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root --privileged=true -d mysql:latest
# 第六步:添加配置文件 /www/server/mysql_master-slave/slave/conf/my.cnf == 内容如下
[mysqld]
## 设置server._id,同一局域网中需要唯一
server_id=102
#指定不需要同步的数据库名称
binlog-ignore-db=mysql
#开启二进制日志功能,以备Slave作为其它数据库实例的Masterl时使用
log-bin=mall-mysql-slave1-bin
#设置二进制日志使用内存大小(事务)
binlog_cache_size=1M
#设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed
#二进制日志过期清理时间。默认值为0,表示不自动清理。
# 旧版5的配置
#expire_logs_days=7
# 新版8的配置
binlog_expire_logs_seconds=604800
#跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
#如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
# 旧版5的配置
#slave_skip_errors=1062
# 新版8的配置
replica_skip_errors=1062
#relay_log配置中继日志
relay_log=mall-mysql-relay-bin
#log_slave_.updates表示slave将复制事件写进自己的二进制日志
# 旧版5的配置
#log_slave_updates=1
# 新版8的配置
log_replica_updates=1
##slave设置为只读(具有super权限的用户除外)
read_only=1
# 第七步:重启从MySQL
docker restart mysql-slave
# 第八步:查看主MySQL的 master状态
docker exec -it mysql-master mysql -uroot -proot
show master status;
# 第九步:进入从mysql == 设置主MySQL相关的信息
docker exec -it mysql-slave mysql -uroot -proot
# master_log_file、master_log_pos取自 主MySQL的 show master status信息
# 填写主MySQL的端口、ip等信息
change master to master_host='192.168.80.128',master_user='slave',master_password='123456',master_port=3308,master_log_file='mall-mysql-bin.000002',master_log_pos=156,master_connect_retry=30;
# 第十步:查看从MySQL的 slave相关信息 == 从MySQL中运行
# 发现还未开启同步开关
show slave status;
# 第十一步:从库开始打开拉取主库的开关 -- 从MySQL中运行
start slave;
# 第十二步:查看从库的同步开关是否开启
show slave status;
# 第十三步:数据同步测试 == 大功告成
主MySQL:创库、创表、新增数据
从MySQL:查看数据是否同步过来

主从复制搭建遇到的问题解决
MY-010095 - 启动失败
2022-07-21 05:10:09+00:00 [Note] [Entrypoint]: Starting temporary server
mysqld: Error on realpath() on '/var/lib/mysql-files' (Error 2 - No such file or directory)
2022-07-21T05:10:09.822859Z 0 [ERROR] [MY-010095] [Server] Failed to access directory for --secure-file-priv. Please make sure that directory exists and is accessible by MySQL Server. Supplied value : /var/lib/mysql-files
2022-07-21 05:10:09+00:00 [ERROR] [Entrypoint]: Unable to start server.

解决方案 - 改run配置文件的映射配置
//原启动配置 == 遇到上述启动报错问题
docker run --name=mysql-master -p 3308:3306 -v /etc/localtime:/etc/localtim -v /www/server/mysql_master-slave/master/data:/var/lib/mysql -v /www/server/mysql_master-slave/master/log:/var/log/mysql -v /www/server/mysql_master-slave/master/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root --privileged=true -d mysql:latest
//修正后启动配置 == 可正常启动 == 改mysql映射目录
docker run --name=mysql-master -p 3308:3306 -v /etc/localtime:/etc/localtim -v /www/server/mysql_master-slave/master/data:/var/lib/mysql -v /www/server/mysql_master-slave/master/log:/var/log/mysql -v /www/server/mysql_master-slave/master/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root --privileged=true -d mysql:latest
从库连接到主库失败 - 非IP、账号密码问题
Last_IO_Error: error connecting to master 'slave@192.168.80.128:3308' - retry-time: 30 retries: 17 message: Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection.
从机中运行:show slave status
解决方案
-- 在主MySQL机中运行下列SQL == 修改授权插件
-- 修改完后无需重启 主MySQL、从MySQL
SELECT plugin FROM `user` where user = 'slave';
ALTER USER 'slave'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
从机中运行:show slave status
边栏推荐
- mysql有 flush privileges 吗
- 想要做好软件测试,可以先了解AST、SCA和渗透测试
- Azure Devops (XIV) use azure's private nuget warehouse
- 2022.07.24(LC_6125_相等行列对)
- Requirements specification template
- conda常用命令:安装,更新,创建,激活,关闭,查看,卸载,删除,清理,重命名,换源,问题
- More accurate and efficient segmentation of organs-at-risk in radiotherapy with Convolutional Neural
- 7行代码让B站崩溃3小时,竟因“一个诡计多端的0”
- Mid 2022 review | latest progress of large model technology Lanzhou Technology
- [rust] reference and borrowing, string slice type (& STR) - rust language foundation 12
猜你喜欢

零基础学习CANoe Panel(15)—— 文本输出(CAPL Output View )
![[rust] reference and borrowing, string slice type (& STR) - rust language foundation 12](/img/48/7a1777b735312f29d3a4016a14598c.png)
[rust] reference and borrowing, string slice type (& STR) - rust language foundation 12

AtCoder Beginner Contest 261 F // 树状数组

ECCV2022 | TransGrasp类级别抓取姿态迁移

感动中国人物刘盛兰

【Rust】引用和借用,字符串切片 (slice) 类型 (&str)——Rust语言基础12

web安全入门-UDP测试与防御
软件测试流程包括哪些内容?测试方法有哪些?

Substance Designer 2021软件安装包下载及安装教程

2022.07.24 (lc_6124_the first letter that appears twice)
随机推荐
ECCV2022 | TransGrasp类级别抓取姿态迁移
OAuth,JWT ,OIDC你们搞得我好乱啊
【高并发】通过源码深度分析线程池中Worker线程的执行流程
微软提出CodeT:代码生成新SOTA,20个点的性能提升
程序的内存布局
【历史上的今天】7 月 25 日:IBM 获得了第一项专利;Verizon 收购雅虎;亚马逊发布 Fire Phone
2022 年中回顾 | 大模型技术最新进展 澜舟科技
交换机链路聚合详解【华为eNSP】
Selenium use -- installation and testing
Deep learning MEMC framing paper list
全球都热炸了,谷歌服务器已经崩掉了
Monit installation and use
Use vsftpd service to transfer files (anonymous user authentication, local user authentication, virtual user authentication)
[shutter -- layout] stacked layout (stack and positioned)
Kyligence 入选 Gartner 2022 数据管理技术成熟度曲线报告
485通讯( 详解 )
【AI4Code】《CodeBERT: A Pre-Trained Model for Programming and Natural Languages》 EMNLP 2020
卷积核越大性能越强?一文解读RepLKNet模型
Force deduction 83 biweekly T4 6131. The shortest dice sequence impossible to get, 303 weeks T4 6127. The number of high-quality pairs
Use of hystrix