docker实现数据库的主从复制
来源:互联网 发布:cv2.calchist python 编辑:程序博客网 时间:2024/06/03 22:54
1、 docker已经在centos6.5(或者其他操作系统)上安装好
docker -v
Docker version 1.7.1, build 786b29d/1.7.1
2、 拉取镜像
docker pull hub.c.163.com/library/mysql:5.7
docker images #查看是否有镜像列表
3、 启动一个容器
在宿主机路径下新建一个目录用来和docker容器共享数据:
mkdir –p /home/mysql/master-data
启动容器:
docker run \
--name=mysql-master \
-v /home/mysql/master-data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD='123456' \
-d hub.c.163.com/library/mysql:5.7
--name=指定容器名字
-v 宿主机路径:容器内路径
-e 环境变量
-d detach模式
宿主机路径必须事先存在
4、 配置master
如何进入刚刚启动的那个容器?
docker exec -it mysql-master bash
这样就进入到一个装好mysql的容器中了,你可以执行命令试试:
mysql –u root–p
输入密码
show databases;
use mysql;
show tables;
exit;
现在我们要修改下mysql的配置,作为master
cd /etc/mysql/conf.d
在这个目录下修改或者新增master.cnf(用vi命令)
由于mysql官方镜像没有安装vi,我们还需先安装:
apt-get update && apt-get install vim
安装好后,执行:vi master.cnf
输入内容如下:
[mysqldump]
user=root
password='123456'
[mysqld]
max_allowed_packet=8M
lower_case_table_names=1
character_set_server=utf8
max_connections=900
max_connect_errors=600
server-id=1
log-bin=mysql-bin
slow_query_log=1
long_query_time=1
log_error
5、 重启master并授权slave
到宿主机上执行:
docker restart mysql-master
再次进入容器,登录mysql,
(
mysql –u root–p
输入密码
)
执行下列语句:
授权slave可以进行数据的复制:
GRANT REPLICATION SLAVE ON *.* TO 'rep1'@'%' IDENTIFIED BY '123456';
把在任意对象上的复制权限授予来自任何ip的rep1账户,其使用的密码是123456
查看并记录主mysql信息:
mysql> show master status
-> ;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 154| | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
记下file和position的值
6、 到宿主机,启动另一个容器
docker run --name mysql-slave1 \
--link mysql-master:master \
-v /home/mysql/slave1-data/:/var/lib/mysql/ \
-d mysql镜像id
注:--link mysql-master:master \ 链接到主mysql。主mysql的容器地址可以用master表示
7、 配置slave,同第4步,进入到mysql-slave1
cd /etc/mysql/conf.d
vi slave1.cnf输入如下内容:
[mysqldump]
user=root
password='123456'
[mysqld]
max_allowed_packet=8M
lower_case_table_names=1
character_set_server=utf8
max_connections=900
max_connect_errors=600
server-id=2
log-bin=mysql-bin
slow_query_log=1
long_query_time=1
log_error
然后退回到宿主机重启:
docker restart mysql-slave1
这时MySQL的主从服务器都在运行中,需要读者自行保证两边的数据相同。只有当两台服务器的数据都一样的时候,才能建立主从复制连接。
8、
——
在主库执行 : SHOW MASTER STATUS;命令可以取得
对应的字段是 File和Position
配置从库连接主库,登录mysql在从库上执行
mysql> change master to
master_host=’master’,
master_port=3306,
master_user=’rep1’,
master_password=’123456’,
master_log_file='mysql-bin.000003', master_log_pos=437;
最后两项
MASTER_LOG_FILE 和 MASTER_LOG_POS 就是刚才我们在master(show master status)上记录下来的值
在从库启动 slave 线程开始同步
sql>START SLAVE;
在从库 查看同步状态
sql>show slave status;
如果看到 Slave_Io_State字段有:
Waiting for master to send event ...
那就成功了 ! ! !
8、 验证
只要在主服务器数据库插入或修改数据,就可以自动复制到从服务器上了。
- docker实现数据库的主从复制
- 通过docker实现mysql主从复制
- docker安装与实现myql主从复制
- mysql数据库实现主从复制
- MariaDB数据库的中主从复制的配置实现
- docker配置主从复制
- docker+mysql主从复制
- MYSQL数据库主从复制的简单原理及实现方法
- MYSQL数据库主从复制的简单原理及实现方法
- 配置数据库的主从复制
- 数据库主从复制的原理
- mysql数据库的主从复制
- mysql数据库的主从复制
- Docker学习+基于Docker MySQL的主从复制
- mysql主从复制的实现
- mysql主从复制的实现
- Redis主从复制的实现
- mysql主从复制的实现
- jSP中文乱码问题终极解决方案
- android 事件分发机制详解(一)
- 跟随手指的小球_自定义UI组件+onDraw+invalidate+Touch监听
- BZOJ 2561 浅谈最小生成树最小割
- Spark中RDD转换成DataFrame的两种方式(分别用Java和scala实现)
- docker实现数据库的主从复制
- 理解前端数据双向绑定原理——Object.defineProperty()
- Jredis--java使用redis
- oracle 10g的安装6.5
- 校验数据有效性工具类
- 谷歌搜索引擎优化必须知道的三个点
- 38.常用类
- docker官方父镜像制作
- PAM