安装Mysql
docker pull mysql:5.7
创建运行主(Mysql)容器
docker run --name master -p 3339:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
- –name 为容器指定名称,这里是master
- -p 将容器的指定端口映射到主机的指定端口,这里是将容器的3339端口映射到主机的3306端口
- -e 设置环境变量,这里是指定root账号的密码为123456
- -d 后台运行容器,并返回容器ID
- mysql:5.7: 指定运行的mysql版本
Navicat连接创建主容器的复制账号
//用户名:slave 密码:123456 %为全部ip,可改为指定ip
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
//赋权限给slave用户
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
//刷新权限
FLUSH PRIVILEGES;
//File为日志文件,Position是其位置,后面配置从数据库需要用到
show master status;
配置主Mysql的运行环境
将docker中主mysql的配置文件复制到自建的文件目录下:
docker cp master:/etc/mysql/mysql.conf.d/mysqld.cnf /usr/local/mysql/master/mysqld.cnf
在/usr/local/mysql/master下修改mysqld.cnf
//在 [mysqld] 节点最后加上后保存
log-bin=mysql-bin //使用binary logging,mysql-bin是log文件名的前缀
server-id=1 //唯一服务器ID,非0整数,不能和其他服务器的server-id重复
修改完后,将/usr/local/mysql/master下的配置文件覆盖docker中的配置文件
docker cp /usr/local/mysql/master/mysqld.cnf master:/etc/mysql/mysql.conf.d/mysqld.cnf
重启docker容器
docker restart master
创建运行从容器
docker run --name slave -p 3340:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
配置从Mysql的运行环境
将docker中从mysql的配置文件复制到自建的文件目录下:
docker cp slave:/etc/mysql/mysql.conf.d/mysqld.cnf /usr/local/mysql/slave/mysqld.cnf
在/usr/local/mysql/slave下修改mysqld.cnf
log-bin=mysql-bin
server-id=2
修改完后,将/usr/local/mysql/slave下的配置文件覆盖docker中的配置文件
docker cp /usr/local/mysql/slave/mysqld.cnf slave:/etc/mysql/mysql.conf.d/mysqld.cnf
重启docker容器
docker restart slave
Navicat连接从容器进行配置
change master to
master_host='39.105.203.213', //master的ip 不能为127.0.0.1
master_user='slave', //master的帐号
master_password='123456', //master的密码
master_log_file='mysql-bin.000001', //master 查询的file名,上面查询过
master_port=3339, //master 端口
master_log_pos=76281; //日志文件位置,上面查询过
start slave; // 启动
show slave status; //查看从容器的状态
- Slave_IO_State等于Waiting for master to send event为成功一半了,如果是Connecting to master,测不成功,回头看看是不是配置或者账号密码错了。
- Slave_IO_Running与Slave_SQL_Running都为Yes,且上述也成功了,则 可以开始测试主从复制了。
Mysql读写分离
https://blog.youkuaiyun.com/itzhuangjh/article/details/104367327