使用docker镜像安装mysql
- 下载镜像文件,
docker pull mysql:5.7
。 - 启动容器,
docker run -name mysql -p 3306:3306 -v /var/lib/mysql:/var/lib/mysql -e "MYSQL_ROOT_PASSWORD={rootpassword}" -d mysql:
。- -p表示对外放开的映射端口;
- -e表示环境变量,需要注意的是必须设置root密码模式,模式有三种:MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD和MYSQL_RANDOM_ROOT_PASSWORD。
- -d表示后台运行。
配置主从关系
- 这里定义主数据库IP为192.168.0.1,从数据库IP为192.168.0.2。
- 进入主数据库容器
docker exec -ti mysql bash
,进入数据库mysql -uroot -p
,输入密码后,创建一个从数据库访问的用户create user 'repl'@'192.168.0.2' identified by 'repl123';
,赋予权限grant replication slave on *.* to 'repl'@'192.168.0.2';
,再flush一下flush privileges;
。 - 修改主数据库配置文件,一般为/etc/mysql/my.cnf,本文使用的镜像目录使用
vim /etc/mysql/mysql.conf.d/mysql.cnf
,添加如图配置。
需要注意的是使用镜像启动的容器可能没有vim命令,如果出现该情况,可以使用apt-get update
更新后apt-get install vim
解决。如果update较慢可以参考apt-get更换为国内阿里云源。 - 同样进入从数据库容器修改mysql.cnf文件。需要注意的是这个里的server-id一定要比主数据库的要大。
- 对日志路径赋权限
chown -R mysql:mysql /var/log/mysql
,注意这里如果不赋权限的话会导致重启数据库时启动失败。 - 重启数据库
service mysql restart
,重启数据库会导致docker容器没有执行程序被退出,使用docker start mysql
启动数据库。 - 进入从数据库中执行
change master to master_host='192.168.0.1', master_user='repl', master_log_pos=154, master_log_file='mysql-bin.000001',master_password='repl123';
。master_log_file和master_log_pos的值可以在主数据库执行show master status;
查看。 - 启动从数据库模式
start slave
,查看主从状态show slave status \G
,大功告成。!