Docker中Mysql主从复制实践总结
2017-07-09 19:42
337 查看
本文是在Dockec环境下对Mysql进行主从复制实践,在ubantu中安装docker相对简单,这里不做赘述。
原理:主从服务器利用MySQL的二进制日志文件,实现数据同步。二进制日志由主服务器产生,从服务器响应获取同步数据库。主服务器(Master)负责网站NonQuery操作,从服务器负责Query操作,用户可以根据网站功能模特性块固定访问Slave服务器,或者自己写个池或队列,自由为请求分配从服务器连接。
设定连接mysql-slave容器的对外端口为3307,mysql-master对外端口为3306。
配置描述:
1. log-bin=mysql-bin #启动MySQ二进制日志系统,注意:如果原来的配置文件中已经有这一行,就不用再添加;
2. server_id=xx #为服务器设定唯一ID,默认是1,一般取IP最后一段;这里我使用容器ip(172.17.0.2)最后一位2;
3. binlog_format=mixed #mysql日志格式;
配置完之后重启mysql服务;
配置完之后重启mysql服务;
以上命令的详细解释,最好百度一下,写太多反到更加更不清思路。
创建完账号后,查看master状态;
记录Fil和Position的值,后续配置slave中会用到!
注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化。
注:黑色部分值为第4环节中的相关配置。
配置完之后启动slave复制服务,命名如下:
检查从服务器复制功能状态,命令如下:
注:
Slave_IO_Running和Salve_SQL_Running都为yes,那么表明可以成功同步了!若其中有一个为no都不行。到此mysq主从配置全部完成!累死我了,花了半个多小时,哈哈!
解决方案1:
原理:主从服务器利用MySQL的二进制日志文件,实现数据同步。二进制日志由主服务器产生,从服务器响应获取同步数据库。主服务器(Master)负责网站NonQuery操作,从服务器负责Query操作,用户可以根据网站功能模特性块固定访问Slave服务器,或者自己写个池或队列,自由为请求分配从服务器连接。
具体操作:
1、 启动两个容器
在Docker中run两个mysql容器,分别命名为mysql-master和mysql-slave作为主服务器和从服务器。利用docker ps -a查看全部容器:设定连接mysql-slave容器的对外端口为3307,mysql-master对外端口为3306。
2、主服务master配置
修改master的mysql配置my.cnf使其支持二进制文件,使用命令 vi /etc/mysql/my.cnf修改内容:[mysqld] log-bin=mysql-bin binlog_format=mixed server-id=2
配置描述:
1. log-bin=mysql-bin #启动MySQ二进制日志系统,注意:如果原来的配置文件中已经有这一行,就不用再添加;
2. server_id=xx #为服务器设定唯一ID,默认是1,一般取IP最后一段;这里我使用容器ip(172.17.0.2)最后一位2;
3. binlog_format=mixed #mysql日志格式;
配置完之后重启mysql服务;
/etc/init.d/mysql restart
3、从服务slave配置
slave操作同2类似修改my.cnf配置,配置如下:[mysqld] log-bin=mysql-bin binlog_format=mixed server-id=3
配置完之后重启mysql服务;
/etc/init.d/mysql restart
4、创建mysql账号并授权给slave服务器
进入master服务,打开mysql服务创建mysql账号用于同步服务,命令如下:GRANT replication slave ON *.* TO 'slave'@'%' IDENTIFIED BY '1234';
以上命令的详细解释,最好百度一下,写太多反到更加更不清思路。
创建完账号后,查看master状态;
记录Fil和Position的值,后续配置slave中会用到!
注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化。
5、配置从服务器slave
进入mysql服务后,输入如下命令进行配置:CHANGE MASTER TO MASTER_HOST='172.17.0.2',MASTER_USER='slave',MASTER_PASSWORD='1234',MASTER_PORT=3306,MASTER_LOG_FILE='**mysql-bin.000001**',MASTER_LOG_POS=**2482**,MASTER_CONNECT_RETRY=10;
注:黑色部分值为第4环节中的相关配置。
配置完之后启动slave复制服务,命名如下:
start slave
检查从服务器复制功能状态,命令如下:
show slave status\G
注:
Slave_IO_Running和Salve_SQL_Running都为yes,那么表明可以成功同步了!若其中有一个为no都不行。到此mysq主从配置全部完成!累死我了,花了半个多小时,哈哈!
6、测试主从复制
在master服务中的mysql服务的abccs库中插入一条数据,然后在slave服务中进行查询即可!7、遇见问题汇总
slave从服务器配置完成后发现Salve_SQL_Running为no,有可能程序可能在slave上进行了写操作,也可能是slave机器重起后,事务回滚造成的.解决方案1:
mysql> stop slave ; mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1; mysql> start slave ;
相关文章推荐
- 以Docker方式实现MySql 主从复制(实践篇)
- 详解Docker方式实现MySql 主从复制(实践篇)
- docker mysql 主从复制实践(亲测可行)
- docker安装mysql主从复制
- 【大型网站技术实践】初级篇:搭建MySQL主从复制经典架构
- mysql主从复制实践之单数据库多实例
- mysql主从复制实践
- lamp系列-MySQL主从复制实践视频讲解(老男孩出品)
- Mysql学习总结(14)——Mysql主从复制配置
- MySQL主从复制原理实践
- 【大型网站技术实践】初级篇:搭建MySQL主从复制经典架构
- mysql 5.7 docker 主从复制架构搭建教程
- 【大型网站技术实践】初级篇:搭建MySQL主从复制经典架构
- Mysql学习总结(33)——阿里云centos配置MySQL主从复制
- MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践
- 基于Docker搭建MySQL主从复制
- MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践
- docker mysql主从复制
- 【大型网站技术实践】初级篇:搭建MySQL主从复制经典架构
- 详解如何利用docker快速构建MySQL主从复制环境