Docker mysql主从同步

1、整体环境

此次使用虚拟机,每台虚拟机上安装docker,每个docker又安装了mysql5.7

宿主机系统 centos7
master: 192.168.0.103:3306
slave:   192.168.0.105:3306

2、安装mysql

docker run --dns 8.8.8.8 --dns 8.8.4.4 --name mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123 -d mysql:5.7

注意点:

  1. mysql部署在不同虚机上,端口默认3306即可。
  2. 为了docker容器与虚机相同网络,进行dns或–net:host设置。

启动报错:

解决方案如下:

修改配置文件:

vim /usr/lib/sysctl.d/00-system.conf

追加

 net.ipv4.ip_forward=1

接着重启网络

[root@localhost mytomcat]# systemctl restart network

3、master配置文件配置

进入到容器内

docker exec -it xxxx /bin/bash 

安装vim

apt-get update
apt-get install vim

修改my.cnf文件

[mysqld]
## 同一局域网内注意要唯一
server_id=100  
## 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin

重启mysql

service mysql restart

 master数据库,用户授权

# 进入mysql
mysql -uroot -p
# 输入密码

#执行
GRANT all privileges on *.* TO 'root'@'%' identified by '123' with grant option;

GRANT REPLICATION slave,reload,super on *.* TO 'root'@'192.168.0.%' identified by '123';

FLUSH PRIVILEGES;

查看master状态

4、slave配置文件配置

参照3配置,进入到容器内、安装vim

修改my.cnf文件

[mysqld]
server-id = 2
log-bin=mysql-bin
relay-log = mysql-relay-bin

重启mysql

service mysql restart

slave设置

#进入mysql
mysql -uroot -p

# 从库设置,这里MASTER_LOG_FILE、MASTER_LOG_POS必须与master状态一致。
CHANGE MASTER TO 
MASTER_HOST = '192.168.0.103',  
MASTER_USER = 'root', 
MASTER_PASSWORD = '123',
MASTER_PORT = 3306,
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_LOG_POS=1805,
MASTER_RETRY_COUNT = 60,
MASTER_HEARTBEAT_PERIOD = 10000; 

启动slave

mysql> slave stop;
mysql> slave start;
Query OK, 0 rows affected (0.04 sec)

查询slave状态  /G,将内容竖向显示)

show slave status \G;

 至此,同步完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值