目录
一、实现mysql数据的主从复制
1.1、创建主服务器
docker run -p 3307:3306 --name mysql5.7 \
> -v /mydata/mysql5.7/log:/var/mysql \
> -v /mydata/mysql5.7/data:/var/lib/mysql \
> -v /mydata/mysql5.7/conf:/etc/mysql \
> -e MYSQL_ROOT_PASSWORD=root \
> -d mysql:5.7
1.2、修改主机中的配置文件
[client]
## 中文乱码
default_character_set=utf8
[mysqld]
## 中文乱码
collation_server=utf8_general_ci
character_set_server=utf8
##设置server_id,同一局域网中需要唯一
server_id=101
##指定不需要同步的数据库名称
binlog-ignore-db=mysql
##开启二进制日志功能
log-bin=mall-mysql-bin
##设置二进制日志使用内存大小(事务)
binlog_cache_size=1M
##设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed
##二进制日志过期清理时间。默认值为0,表示不自动清请理。
expire_logs_days=7
##跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。##如:1062错误是指一些主:键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
在主机中的配置数据卷
1.3、重启容器
docker restart f86fc8585108
1.4、进入mysql容器
docker exec -it f86fc8585108 /bin/bash
1.5、创建数据同步用户
#创建一个用户
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
#给用户授权
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
1.6、创建从服务器
docker run -p 3308:3306 --name mysql5.7-slave \
> -v /mydata/mysql5.7-slave/log:/var/mysql \
> -v /mydata/mysql5.7-slave/data:/var/lib/mysql \
> -v /mydata/mysql5.7-slave/conf:/etc/mysql \
> -e MYSQL_ROOT_PASSWORD=root \
> -d mysql:5.7
1.7、修改从服务器的主机挂载配置文件
[client]
## 中文乱码
default_character_set=utf8
[mysqld]
## 中文乱码
collation_server=utf8_general_ci
character_set_server=utf8
##设置server_id,同一局域网中需要唯一
server_id=102
##指定不需要同步的数据库名称
binlog-ignore-db=mysql
##开启二进制日志功能
log-bin=mall-mysql-bin
##设置二进制日志使用内存大小(事务)
binlog_cache_size=1M
##设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed
##二进制日志过期清理时间。默认值为0,表示不自动清请理。
expire_logs_days=7
##跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。##如:1062错误是指一些主:键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
##relay_log配置中继日志
relay_log=mall.mysql-relay-bin
##log_slave_updates表示slave将复制事件写入自己的二进制日志
log_slave_updates=1
##slave设置为只读
read_only=1
1.8、重新启动容器
docker restart cf8fee4533e9
1.9、在主服务器中查看同步状态
show master status
2.0、进入从数据库
2.1、在从数据库中配置主从复制
change master to master_host='192.168.200.130',master_user='slave',master_password='123456',master_port=3307,master_log_file='mall-mysql-bin.000003',master_log_pos=154,master_connect_retry=30;
2.2、在从数据库查看主从状态
show slave status \G;
2.3、从数据库开启同步
start slave;