- 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
MySQL主从复制是一个异步的复制过程,主库发送更新事件到从库,从库读取更新记录,并执行更新记录,使得从库的内容与主库保持一致。
参考资料: https://blog.csdn.net/linkingfei/article/details/102774992
# 密码自己写 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
新增内容:
[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.cnf1.2.3 修改完成后重启master 数据库:
docker restart mysql-master1.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-table1.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 服务器



