首页 > 数据库 >本地虚拟机centos7通过docker安装主从mysql5.7.21

本地虚拟机centos7通过docker安装主从mysql5.7.21

时间:2023-02-27 14:32:20浏览次数:50  
标签:21 mydata mysql5.7 mastermysql mysql 3306 home docker 虚拟机


1、下载mysql镜像

docker pull mysql:5.7.21

2、在home下建立mydata目录

在/home/mydata/mysql下面建立两个目录 conf与data

3、docker运行起来两个服务器的服务

docker run -p 3306:3306 --name mastermysql -v /home/mydata/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mastermysql -d mysql:5.7.21

docker run -p 3306:3306 --name slavemysql -v /home/mydata/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=slavemysql -d mysql:5.7.21

4、开放下面的防火墙端口以便访问

firewall-cmd --add-port=3306/tcp --permanent

firewall-cmd --reload

firewall-cmd --list-all

5、主要是考虑配置文件,拷贝与使用

docker exec -it mastermysql bash

实际配置文件在/etc/mysql/conf.d里的mysql.cnf

docker top mastermysql 查看容器mastermysql的进程信息

docker inspect mastermysql 查看docker容器更多详尽信息

6、修正主从配置文件

看这个容器的使用的mysql配置文件如下

/etc/mysql/conf.d 这个目录里的mysql.cnf

启动的时候用宿主/home/mydata/mysql/conf/master.cnf的把上面的替换掉就可以了

从服务器修改成slave.cnf

这样只要编辑宿主的两个配置文件就可以了

配置好master.cnf

server-id=1

log-bin=mysql-bin

与slave.cnf

server-id=2

log-bin=mysql-bin

用docker cp 或就直接用mount的

df -g看到的文件系统来进行拷贝 如下

cp /home/mydata/mysql/conf/mysql.cnf /var/lib/docker/overlay2/f6ac448af8a0ab4e78ed7311ef8b4498ecaf45d4596241a4a94f4b7086f88467/merged/etc/mysql/lqy

修改或覆盖配置后docker restart mastermysql 重启

show variables like '%%'; 可以查询mysql所有相关参数值

/etc/mysql/mysql.conf.d/mysqld.cnf 目前只能在这个版本的这个文件进行修改加入主从参数,启动mysql才有效,用下面的查询sql命令可以看是否设置master正常,另外这个版本的数据目录是在

/var/lib/mysql 之前好像搞错了

show variables like '%log_bin%';

show master status;

主mysql

GRANT REPLICATION SLAVE ON *.* to 'backup'@'%' identified by 'backup';

show grants for 'backup'@'%';

从mysql

CHANGE MASTER TO

MASTER_HOST='192.168.199.151',

MASTER_PORT=3306,

MASTER_USER='backup',

MASTER_PASSWORD='backup';

START SLAVE;

show slave status;

好像新的docker启动服务后,上面slave需要重新执行一下,实际生产要考虑自动吧

这样新建的数据库与表数据等都会从主服务器同步到从服务器上了

修改成下面的方式就可以正常使用了

先停掉上面的docker stop mastermysql docker rm mastermysql

docker run -p 3306:3306 --name mastermysql -v /home/mydata/mysql/data:/var/lib/mysql -v /home/mydata/mysql/conf/master.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf -e MYSQL_ROOT_PASSWORD=mastermysql -d mysql:5.7.21

docker run -p 3306:3306 --name slavemysql -v /home/mydata/mysql/data:/var/lib/mysql -v /home/mydata/mysql/conf/slave.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf -e MYSQL_ROOT_PASSWORD=slavemysql -d mysql:5.7.21

标签:21,mydata,mysql5.7,mastermysql,mysql,3306,home,docker,虚拟机
From: https://blog.51cto.com/u_15070324/6088495

相关文章