1. 修改数据库配置文件 my.cnf
# vim /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# 服务器的ID, 必须唯一,一般设置自己的IP
server_id=241
# 复制过滤:不需要备份的数据库(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
# 作为从服务器时的中继日志
relay_log=edu-mysql-relay-bin
# log_slave_updates 表示 slave 将复制事件写进自己的二进制日志
log_slave_updates=1
# 主键自增规则,避免主从同步ID重复的问题
auto_increment_increment=2 # 自增因子(每次加2)
auto_increment_offset=1 # 自增偏移(一个填1,另一个填2)
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
修改完成后重启数据库
/etc/init.d/mysqld restart
2. 配置同步账号并开启同步
设置 masterA (假设IP 为 192.168.188.2)
# mysql -uroot -p123456 # 登录mysql,不要照抄,-u后面是账号,-p后面是密码
grant replication slave on *.* to 'repl'@'192.168.188.3' identified by '123456'; // 创建mysql账号repl,只容许指定ip访问,这里设置为MasterB
flush privileges; // 刷新授权表信息
flush tables with read lock; // 锁定数据库表暂时无法写服务;
show master status; // 查看binlog文件值与pos值
stop slave; // 关闭同步
设置 masterB(192.168.188.3)
# mysql -uroot -p123456 # 登录mysql,不要照抄,-u后面是账号,-p后面是密码
grant replication slave on *.* to 'repl'@'192.168.188.2' identified by '123456'; //创建用户,允许MasterA登录本机器
flush privileges; //刷新授权表
stop slave; //关闭同步
show master status; //查看binlog文件值与pos值
change master to master_host='192.168.188.2', master_user='repl', master_password='123456', master_log_file='test01.000001', master_log_pos=664383; //这里注意log_file与pos值都要对应对应A的 show master status;值
start slave; //开启同步
设置 masterA
change master to master_host='192.168.188.3', master_user='repl', master_password='123456', master_log_file='test02.000001', master_log_pos=664343; //这里log_file与pos值写的必须是B上show master status;的值
start slave; //开启同步
unlock tables; //解锁写
3. 查看同步状态
show slave status\G;
主要看以下两个参数,这两个参数如果是Yes就表示主从同步正常
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
引用:https://blog.csdn.net/xiyang_1990/article/details/51420513
网友评论