yum install docker
service docker start
docker pull mysql:8.0
mkdir -p /home/data/mysql/data/master
mkdir -p /home/data/mysql/data/slave
mkdir -p /home/data/mysql/master
mkdir -p /home/data/mysql/slave
cd /home/data/mysql/master
vi master.cnf
cd /home/data/mysql/slave
vi slave.cnf
内容如下
[mysqld]
server-id=1 #任意自然数n,只要保证两台MySQL主机不重复就可以了。
log-bin=mysql-bin #开启二进制日志
#auto_increment_increment=2 #步进值auto_imcrement。一般有n台主MySQL就填n
#auto_increment_offset=1 #起始值。一般填第n台主MySQL。此时为第一台主MySQL
#binlog-ignore=mysql #忽略mysql库【我一般都不写】
#binlog-ignore=information_schema #忽略information_schema库【我一般都不写】
#replicate-do-db=aa #要同步的数据库,默认所有库
docker network create --driver bridge --subnet 172.25.0.0/16 mysql_net
备注:创建桥接网卡 mysql_net 指定自网段为172.25.0.0 如果不指定ip则与docker容器的docker0网卡同网段
(1) master
docker create
--privileged=true #为容器挂载目录添加权限
--name mysqlmaster #容器名为mysqlmaster
-v /home/data/mysql/data/master:/var/lib/mysql #集群配置集中/data/master 挂载到容器/var/lib/mysql
-v /home/data/mysql/master:/etc/mysql/conf.d #配置集中/master 中master.cnf 挂载到 /etc/mysql/conf.d中设置启动
-e MYSQL_ROOT_PASSWORD=root #设置启动密码
--net mysql_net #指定容器连接网络
--ip 172.25.0.3 #指定容器使用ip
-p 3307:3306 mysql:8.0 #指定主机映射到容器端口 即 主机访问centos7 为3307 容器端口为3306
备注:上面#号后需要删除
(2)salve
docker create
--privileged=true
--name mysqlslave
-v /home/data/mysql/data/slave:/var/lib/mysql
-v /home/data/mysql/salve:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root
--net mysql_net
--ip 172.25.0.2
-p 3308:3306 mysql:8.0
备注:同上
docker start mysqlsalve
docker start mysqlmaster
查看运行状态
docker ps -a
查看容器ip
docker network inspect mysql_net
docker exec -it mysqlmaster /bin/bash
使用容器ip登录 并输入密码
mysql -u root -p -h 172.25.0.3
修改root帐号密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
备注:同理进入另一个容器相同操作
SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
GRANT REPLICATION SLAVE ON *.* to 'root'@'%' identified by 'root'; --赋权限给root用户
flush privileges; --刷新权限
show master status;
change master to
master_host='172.25.0.3', --master的ip 不能为127.0.0.1
master_user='root', --master的帐号密码
master_password='root',
master_log_file='mysql-bin.000003', --master 查询的file名 注意上面!
master_port=3306, --master 端口 坑!为容器端口 不是主机端口
master_log_pos=596; --日志文件位置 注意上面!
start slave;
show slave status;
备注:主从同步启动标志 若出现cennecting to master 则有错误 请自己查找
主库创建任何数据,从库随即更新!
祝你成功!