文章目录
首先,当然是需要有现成的docker环境,如果还没有docker环境,请参考上篇文章,搭建docker环境。 centos7安装docker,教你配置阿里云镜像加速器~
1.拉取镜像
我们使用的mysql版本为5.7.29
docker pull mysql:5.7.29
通过命令查询镜像是否拉取成功
docker images
查询结果如图,即为拉取镜像成功
2.创建mysql主从库对应的配置文件
mkdir /usr/local/mysql/master
mkdir /usr/local/mysql/slave
2.1 主库配置文件
vim /usr/local/mysql/master/my.cnf
配置文件中添加以下内容
[mysqld]
log-bin=mysql-bin
server-id=1 #注意这个id>0且要唯一
按下esc,输入:wq保存退出
2.2 从库配置文件
vim /usr/local/mysql/slave/my.cnf
配置文件中添加以下内容
[mysqld]
log-bin=mysql-bin
server-id=2 #注意这个id>0且要唯一
按下esc,输入:wq保存退出
3. 启动mysql主从库
3.1启动主库
命令有点长,复制执行即可。该行命令中配置主库的端口号为3306,root用户密码为123456,如果有需要可以自行修改。
docker run --restart=always --privileged=true -d -v \
/usr/local/mysql/master/data:/var/lib/mysql -v \
/usr/local/mysql/master/conf.d:/etc/mysql/conf.d \
-v /usr/local/mysql/master/my.cnf:/etc/mysql/my.cnf \
-p 3306:3306 --name master -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.29
3.2 启动从库
命令有点长,复制执行即可。该行命令中配置从库的端口号为3316,root用户密码为123456,如果有需要可以自行修改。
docker run --restart=always --privileged=true -d -v \
/usr/local/mysql/slave/data:/var/lib/mysql -v \
/usr/local/mysql/slave/conf.d:/etc/mysql/conf.d \
-v /usr/local/mysql/slave/my.cnf:/etc/mysql/my.cnf \
-p 3316:3306 --name slave -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.29
4.配置主从复制
打开我们数据库连接用的可视化工具~(ps:不喜欢用命令行)
分别连接我们搭好的主库和从库
4.1主库下执行如下sql
创建slave用户,以便于从库使用该用户连接到主库同步数据
grant all privileges on *.* to 'slave'@'%' identified by 'slave' with grant option;
flush privileges;
来,检查一下用户是否创建成功,并查询一下主库状态
select user,host from mysql.user;
show master status
执行结果如图:
4.2 查询下主库在docker容器内的ip地址
执行该命令查询到主库在docker内的ip地址:
docker inspect --format='{{.NetworkSettings.IPAddress}}' master
执行结果如图:
记录一下该地址哦,等下用到
4.3 在从库下执行如下sql
将刚刚查询到的主库的docker容器内的ip地址替换到主库ip那里,master_log_file对应的值为主库状态查询时对应的File字段的值,
执行这些sql语句
stop slave
change master to master_host='主库ip', master_user='slave', master_password='slave', master_log_file='mysql-bin.000003';
start slave
4.4 查询从库状态
show slave status
如果是这样就说明我们主从复制搭建成功了!
5 测试
我们在主库下可以创建一个数据库test,然后去从库中查询,也能查询出对应的test库。也可以在主库创建表,添加数据等,然后再去从库查询,就发现从库也有一模一样的数据了。
这样我们的主从复制就搭建完成了。