一、MySQL读写分离主从模式
1. 下载镜像
docker pull mysql
当前最新版本:mysql Ver 8.0.19 for Linux on x86_64 (MySQL Community Server - GPL)
2. 启动主节点并修改配置文件
docker run -it --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql bash
修改/etc/mysql/my.cnf配置文件(还得先apt update更新软件包列表才能安装vim等编辑工具,比较繁琐,所以可以选择先配置好my.cnf文件再docker run -v 挂载进容器)
配置文件 my.cnf 修改如下:
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
# 以上是原有默认配置,add variables如下:
# 在同一个Master-Slave集群里不能有重复id
server-id = 3306
# 不配置默认3306
# port= 3306
# 二进制日志文件存储路径及名称(在docker容器内涉及到权限问题,所以直接写在datadir下)
log-bin = /var/lib/mysql/binlog
# 需要开启binlog的数据库,多个则配置多行binlog-do-db
binlog-do-db = training
# binlog-do-db= db2
# binlog-do-db= db3
# 密码认证方式(加密方式) MySQL 8.0+ 默认是caching_sha2_password
# 如果需要直接连接可以如下改回老版本的mysql_native_password或者create user时identified with mysql_native_password by 针对单个用户
# default_authentication_plugin= mysql_native_password
注:修改完配置文件后需要重启mysql才能生效,一般命令是systemctl restart mysqld,但是在docker容器中没有权限执行systemctl命令,所以选择退出容器后 docker restart
docker exec -it mysql bash
mysql -uroot -p [-hx.x.x.x -P3306]
# 创建用户, @"ip"可以用@"%",不限IP
create user "replica"@"x.x.x.x" identified by "123456";
# 赋予复制权限