MySQL Docker镜像配置主从

来源:互联网 发布:《unity3d视频教程》 编辑:程序博客网 时间:2024/06/05 03:52

MySql Docker 镜像主从配置

1.1  拉取mysql镜像

$docker pull hub.c.163.com/library/mysql:latest

1.2  启动Mysql Docker镜像

启动的时候要配置容器一些参数,要把MySQL数据文件挂载到宿主机上,防止容器因某种原因无法启动,数据丢失,设置MySQL的初始密码这里是必须的不然启动会报错,把MySQL端口映射到宿主机的某一个端口上,给特权,这里是防止MySQL写数据到宿主机的时候出现权限问题,给容器设置一个名字,便于识别

$docker    run  
–d 
–it  
–p 3306:3306
--privileged=true
–name=myql5.7
–v /opt/mysql: /var/lib/mysql
-e MYSQL_ROOT_PASSWORD=123456 <容器ID>

 1.3 进入容器内部,给设置mysql用户对文件夹访问的权限

$docker exec –it <容器id>  /bin/bash

 

$chown –R mysql:mysql /var/lib/mysql

 

1.4 配置主库

## 先进入容器内部把/etc/msyql/my.cnf文件拷贝到宿主机
$docker exec –it <容器id>  /bin/bash
$docker cp <容器id>:/etc/msyql/my.cnf   /tmp/
##在文件my.cnf末尾添加以下配置

 

[mysqld]

##打开二进制文件

log-bin=mysql-bin

## 异步写入文件

sync_binlog=1

##最好使用IP后缀

server_id=2923

##中继日志存放地方

relay_log=/var/lib/mysql/mysql-relay-bin

 

## 再把文件拷贝到容器的/etc/msyql/位置
$docker cp  /tmp/my.cnf  <容器id>:/etc/msyql/my.cnf   

 

这里有个疑问,为什么要拷贝文件到宿主机修改?因为在没联网或者Yum源码没有Vi或者Vim编辑器,如果有可以直接修改即可

 

1.4.1 创建主库用户给备库连接使用

## 进入容器内部
$docker exec –it <容器id>  /bin/bash
## 连接MySQL
$mysql –uroot –p123456
>grant replication slave,replication client on *.* to '新主库用户名' @ '允许访问的IP' identified by '设置用户密码'

 

 

1.5 配置备库

1.5.1 配置my.cnf

和主库配置类似,这里不累述,先从容器中把文件(/etc/mysql/my.cnf) 复制到宿主机添加如下配置,再覆盖以前的文件

[mysqld]

##打开二进制文件

log-bin=mysql-bin

##最好使用IP后缀便于识别

servide-id=2924

##中继日志存放位置

relay_log=/var/lib/mysql/mysql-relay-bin

##便于备库崩溃的时候方便查询错误位置

log_slave_updates=1

##这里开启备库自动重启会出现连接不上主库,原因未知

##skip_slave_start(不用配 置,配置后)

##异步写入master_info,防止崩溃不刷新到磁盘

sync_master_info=1

##异步写入中继日志

sync_relay_log=1

sync_relay_log_info=1

 

1.5.2 设置账号及主库信息

## 进入备库的mysql命令界面

$mysql –uroot –p123456
>change master to master_host='主库IP'
master_user='主库设置的用户' ,
master_password='主库用户密码' ,
master_log_file='<主库查询数据库show master status ,字段File的值>' ,
master_log_pos=<主库查询数据库show master status ,字段Position的值> ;


1.6 测试

1.6.1 测试方案一

在主库里面创建插入数据,看是否已同步到备库,看是否数据一致

 

 

1.6.2 测试方案二

查询备库数据信息

 

$mysql  -uroot –p123456
>show slave status\G;
 


如果出现上面的状态表示主从配置成功

原创粉丝点击