Mysql主从复制安装
docker run -p 3307:3306 --name mysql-master \
-v /mydata/mysql-master/log:/var/log/mysql \
-v /mydata/mysql-master/data:/var/lib/mysql \
-v /mydata/mysql-master/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
- 增加配置文件,在/mydata/mysql-master/conf下增加my.cnf,内容如下
[mysqld]
server_id=101
binlog-ignore-db=mysql
log-bin=mall-mysql-bin
binlog_cache_size=1M
binlog_format=mixed
expire_logs_days=7
slave_skip_errors=1062
1.docker exec -it mysql-master /bin/bash
2.登录:mysql -u root -p root
3.创建用户:
crete user 'slave'@'%' identified by '123456'
grant replication slave,replication client on *.* to 'slave'@'%'
docker run -p 3308:3306 --name mysql-slave \
-v /mydata/mysql-slave/log:/var/log/mysql \
-v /mydata/mysql-slave/data:/var/lib/mysql \
-v /mydata/mysql-slave/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7
- 修改从mysql配置,在/mydata/mysql-slave/conf新建my.cnf
[mysqld]
server_id=102
binlog-ignore-db=mysql
log-bin=mall-mysql-slave1-bin
binlog_cache_size=1M
binlog_format=mixed
expire_logs_days=7
slave_skip_errors=1062
relay_log=mall-mysql-relay-bin
log_slave_updates=1
read_only=1
docker restart mysql-slave
show master status
需要记录好master_log_file和master_log_pos的值,在稍后会有作用
docker exec -it mysql-slave /bin/bash
mysql -u root -p 123456
change master to master_host='宿主机ip', master_user='slave', master_password='123456', master_port=3307, master_log_file='mall-mysql-bin.000001', master_log_pos=617, master_connect_retry=30
show slave status \G
start slave
- 再在从数据库中执行show slave status \G;检查是否以同步

- 在主数据库里插入一条记录测试