【docker+mysql】基于docker 配置 mysql5.7 主从 master-slave
2017-11-21 05:46
603 查看
mysql5.7,版本不同配置略有不同。
首先需要按照之前介绍的mysql docker镜像 来启动两个mysql的容器。
镜像通过命令拉取:
通过docker-compose.yml来启动容器:
然后:
可以看到两个mysql服务已经启动。
使用终端登录一下:
输入密码123,可以登录,说明启动成功。
接下来就是配置mysql主从部分。
首先进入到master容器内部,修改配置文件,配置文件默认为/etc/mysql/my.cnf
进入:
然后重启mysql:
进入到mysql:
创建从服务器复制使用的账号:
如果现实empty set,说明没有重启,重启以后还是empty set,那么就是配置文件有问题。
这是正常的status,slave服务器需要file和position两个信息,记录下来。
然后处理从服务器。
进入容器内部:
重启。
登录mysql,设置:
然后:
最后查看:
说明配置成功。
最后验证一下:
在主库下创建一个test数据库,再创建新表t,然后插入一条数据:
在从库下查看:
说明配置成功。需要注意的是,这里只是配置了slave会同步master的数据,也就是说往master里写,slave可以读到,但是往slave里写,master读不到,因为没有配置。正常是不允许向slave写的,需要一些额外的配置,这里只是演示一个最最简单的情况。
首先需要按照之前介绍的mysql docker镜像 来启动两个mysql的容器。
镜像通过命令拉取:
docker pull mysql
通过docker-compose.yml来启动容器:
version: '3.1' services: master: image: mysql environment: - MYSQL_ROOT_PASSWORD=123 restart: always ports: - "50001:3306" slave1: image: mysql environment: - MYSQL_ROOT_PASSWORD=123 restart: always ports: - "50002:3306"有两个mysql,master映射到50001端口,slave映射到50002端口,默认的root密码为123,通过环境变量传入。
然后:
docker-compose up -d采用后台方式启动容器。
可以看到两个mysql服务已经启动。
使用终端登录一下:
mysql -uroot -p -h127.0.0.1 -P50001
输入密码123,可以登录,说明启动成功。
接下来就是配置mysql主从部分。
首先进入到master容器内部,修改配置文件,配置文件默认为/etc/mysql/my.cnf
进入:
docker exec -it 2a5a /bin/bash注意修改容器id为自己的,找到相应的文件,修改my.cnf为:
[mysqld] log-bin=mysql-bin server-id=1这是最简单的配置,默认同步全部数据库,id必须全局唯一。
然后重启mysql:
/etc/init.d/mysql restart
进入到mysql:
mysql -uroot -p
创建从服务器复制使用的账号:
create user 'repl'@'%' identified by 'repl';授予复制权限:
grant replication slave on *.* to 'repl'@'%';最后查看master状态:
show master status;
如果现实empty set,说明没有重启,重启以后还是empty set,那么就是配置文件有问题。
这是正常的status,slave服务器需要file和position两个信息,记录下来。
然后处理从服务器。
进入容器内部:
docker exec -it ad51 /bin/bash修改配置文件:/etc/mysql/my.cnf
[mysqld] server-id=2
重启。
登录mysql,设置:
mysql> change master to master_host='master',master_port=3306, master_user='repl',master_password='repl',master_log_file='mysql-bin.000001',master_log_pos=154; Query OK, 0 rows affected, 2 warnings (0.02 sec)也就是主服务器的一些信息。
然后:
start slave;
最后查看:
说明配置成功。
最后验证一下:
在主库下创建一个test数据库,再创建新表t,然后插入一条数据:
create database test;
create table t(id int not null, name varchar(100));
insert into t values(1, 'ly');
在从库下查看:
说明配置成功。需要注意的是,这里只是配置了slave会同步master的数据,也就是说往master里写,slave可以读到,但是往slave里写,master读不到,因为没有配置。正常是不允许向slave写的,需要一些额外的配置,这里只是演示一个最最简单的情况。
相关文章推荐
- 解读mysql主从配置及其原理分析(Master-Slave)
- 解读mysql主从配置及其原理分析(Master-Slave)
- MYSQL5.6.33数据库主从(Master/Slave)同步安装与配置详解 (Master-Linux Slave-windows7)
- 基于MySQL Master Slave同步配置的操作详解
- mysql5.5 master-slave(Replication)主从配置
- linux配置mysql主从--master and slave
- MySQL5.6 数据库主从(Master/Slave)同步安装与配置详解
- mysql5.5 master-slave(Replication)主从配置
- MySQL5.6 数据库主从(Master/Slave)同步安装与配置详解
- MySQL5.6 数据库主从(Master/Slave)同步安装与配置详解
- mysql(master/slave)主从复制原理及配置图文详解
- 解读mysql主从配置及其原理分析(Master-Slave)
- MySQL5.6 数据库主从同步安装与配置详解(Master/Slave)
- MySQL5.6 数据库主从(Master/Slave)同步安装与配置详解
- mysql 5.6.14 主(master)从(slave)复制(也称mysql AB复制)环境配置[基于binlog]
- 解读mysql主从配置及其原理分析(Master-Slave)
- MySQL 5.6 的MASTER – SLAVE 主从实例配置及切换 (一)
- Mysql 5.5 replication 多数据库主从备份Master-Slave配置总结
- 解读mysql主从配置及其原理分析(Master-Slave)
- MySQL主从配置中RESET SLAVE和RESET MASTER的区别详解