实时查看docker容器日志
$ docker logs -f -t --tail 100 容器名
错误:Slave_IO_Running: No
原因是:
(1)是mysql的 master 和slave 数据存储 mysql/data/auto.cnf 文件中 server-uuid相同,要修改不相同
server-uuid=9a0a90a7-f091-11e8-a8ab-0242ac120004
(2)master_log_pos=3199 必须与主机一致, 日志位置,必须一致
(3)如果 两边的库与表不一致,如master 上有5个数据库,slave有4个数据库, 当master 上删除第5个数据库,那么slave报错
Slave_SQL_Running: No
并且 slave 关闭,不可用了,要重新创建
----1下载mysql 镜像
docker pull xiaochunping/mysql-master;
docker pull xiaochunping/mysql-slave;
-- 2cnetos docker run ,把my.cnf和data数据引入到属主机
-----------------
master配置文件/home/mysql/etc/master/master.cnf
slave配置文件/home/mysql/etc/slave/slave.cnf
mkdir -p /home/mysql/master-data
mkdir -p /home/mysql/slave-data
master/my.cnf
[mysqld]
##################基础设置##################
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
#log-error = /var/log/mysql/error.log
# By default we only accept connections from localhost
#bind-address = 127.0.0.1
#Mysql服务的唯一编号 每个mysql服务Id需唯一
server-id=1
#数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)
character-set-server = utf8mb4
#数据库字符集对应一些排序等规则,注意要和character-set-server对应
collation-server = utf8mb4_general_ci
#设置client连接mysql时的字符集,防止乱码
init_connect=‘SET NAMES utf8mb4‘
#是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names = 1
##################主从复制设置##################
#开启mysql binlog功能
log-bin=/var/log/mysql/mysql-bin.index
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
slave/my.cnf
[mysqld]
##################基础设置##################
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
#log-error = /var/log/mysql/error.log
# By default we only accept connections from localhost
#bind-address = 127.0.0.1
#Mysql服务的唯一编号 每个mysql服务Id需唯一
server-id=2
#数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)
character-set-server = utf8mb4
#数据库字符集对应一些排序等规则,注意要和character-set-server对应
collation-server = utf8mb4_general_ci
#设置client连接mysql时的字符集,防止乱码
init_connect=‘SET NAMES utf8mb4‘
#是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names = 1
##################主从复制设置##################
#开启mysql binlog功能
log-bin=/var/log/mysql/mysql-bin.index
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
3 启动
docker run \
--name mysql-master \
--privileged=true \
-v /home/mysql/etc/master:/etc/mysql/conf.d \
-v /home/mysql/master-data:/var/lib/mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=root \
-d xiaochunping/mysql-master
docker run \
--name mysql-slave \
--privileged=true \
-v /home/mysql/etc/slave:/etc/mysql/conf.d \
-v /home/mysql/slave-data:/var/lib/mysql \
-p 3307:3306 --link mysql-master:master \
-e MYSQL_ROOT_PASSWORD=root \
-d xiaochunping/mysql-slave
-----------------
-- 3.2快速启动
docker run --name mysql-master -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d xiaochunping/mysql-master
docker run --name mysql-slave -p 3307:3306 --link mysql-master:master -e MYSQL_ROOT_PASSWORD=root -d xiaochunping/mysql-slave
-----------------
3.3// 如果授权给*就不需要查看ip
docker inspect --format='{{.NetworkSettings.IPAddress}}' mysql-master【查看主IP】
docker inspect --format='{{.NetworkSettings.IPAddress}}' mysql-slave【查看从IP】
4 .1登入主容器
docker exec -it mysql-master /bin/bash
4.2登入主数据库
mysql -uroot -proot
grant replication slave on *.* to 'test'@'%' identified by '123456';
flush privileges;
// 查看主的状态
show master status;
5.1登入从容器
docker exec -it mysql-slave /bin/bash
5.2登入从数据库
mysql -uroot -proot
5.3 设置matser 日志记录File和Position对应的值
change master to master_host='master', master_user='test', master_password='123456', \
master_port=3306, master_log_file='mysql-bin.000003', master_log_pos=3199, master_connect_retry=30;
5.4 启动slave
start slave;
5.5查看从的状态
show slave status\G