思路
- 创建主服务器
mysql_master
,获取ip地址,编辑mysql配置文件 - 创建从服务器
mysal_slave
,获取ip地址,编辑mysql配置文件 - 主服务器的
mysql
中创建slave
用户用于主从复制 - 查看主服务器二进制日志文件的状态信息。记录
Position
参数 - 改变
mysql_slave
的master
- 启动
mysql_slave
的slave
- 查看
slave
状态,主从复制成功
配置docker环境
创建主服务器
1 | docker run \ |
创建从服务器
1 | docker run \ |
命令详解, –name 设置名称,-v设置路径挂载,-p 端口映射,-e 环境变量设置,-d后台运行
修改MySQL配置
1 | 主服务器`mysql`配置文件``/Users/panyian/code/docker/mysql_copy/master/custom.cnf` |
[mysqld]
设置server_id,一般设置为IP,同一局域网内注意要唯一
server_id=100
复制过滤:也就是指定哪个数据库不用同步(mysql库一般不同步)
binlog-ignore-db=mysql
开启二进制日志功能,可以随便取,最好有含义(关键就是这里了)
log-bin=edu-mysql-bin
为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存
binlog_cache_size=1M
主从复制的格式(mixed,statement,row,默认格式是statement)
binlog_format=mixed
二进制日志自动删除/过期的天数。默认值为0,表示不自动删除。
expire_logs_days=7
跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
1 |
|
[mysqld]
设置server_id,一般设置为IP,注意要唯一
server_id=101
复制过滤:也就是指定哪个数据库不用同步(mysql库一般不同步)
binlog-ignore-db=mysql
开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=edu-mysql-slave1-bin
为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存
binlog_cache_size=1M
主从复制的格式(mixed,statement,row,默认格式是statement)
binlog_format=mixed
二进制日志自动删除/过期的天数。默认值为0,表示不自动删除。
expire_logs_days=7
跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
relay_log配置中继日志
relay_log=edu-mysql-relay-bin
log_slave_updates表示slave将复制事件写进自己的二进制日志
log_slave_updates=1
防止改变数据(除了特殊的线程)
read_only=1