mysql 主从复制
Posted dphper
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 主从复制相关的知识,希望对你有一定的参考价值。
主从同步设置 配置之前
1 先将 windows防火墙关闭
2 mysql允许远程连接设置
GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘root‘ WITH GRANT OPTION;
flush privileges;
主机(windows)
1 编辑 主机 my.ini 添加
[mysqld]
// 主机id
server-id=1
//二进制文件 mysql-bin是文件
log-bin= "D:/phpstudy/PHPTutorial/MySQL/data/mysql-bin"
//错误记录文件
log-error= "D:/phpstudy/PHPTutorial/MySQL/data/mysql-error"
//主从同步时忽略的数据库
binlog-ignore-db=test1
//(可选)指定主从同步时同步哪些数据库
binlog-do-db=test
2 授权
window授权哪台计算机是自己的从计算机
GRANT REPLICATION slave,reload,super ON *.* TO ‘root‘@‘192.168.1.%‘ IDENTIFIED BY ‘root‘ ;
flush privileges;
3 查看主数据库的状态
show master status;
4 记录 show master status 返回的数据
mysql-bin.000001 | 107 | test
从机(linux)
1 编辑 /ect/my.cnf 添加
[mysqld]
server-id=2
log-bin= mysql-bin
//同步test数据库
replicate-do-db=test
2 授权
授权哪台计算机中的数据库时自己的主要计算机(从机mysql中执行)
CHANGE MASTER TO
MASTER_HOST = ‘192.168.1.101‘,
MASTER_USER = ‘root‘,
MASTER_PASSWORD = ‘root‘,
MASTER_PORT = 3306,
master_log_file = ‘mysql-bin.000001‘,
master_log_pos = 107;
如果报错(以前做过主从) 解决 run stop slave
开启主从同步
开启主从: start slave;
检查从机状态: show slave status;
保证 slave_io_running 和 slave_sql_run 确保都是yes
如果不都是yes看下方的日志 last_io_error
(1)若主从使用了相同的server-id 检查:在主从中分别查看server_id:show variables like ‘server_id‘
set global server_id=2;//修改(改为配置文件中设置的server-id)
(2)显示连接失败
. 查看端口 主从是否一致
. 关闭防火墙 iptables (service iptables stop) 或者开启3306端口 (注意centos7开启3306端口后还连接不上 需要关闭firewalld)
3 同步时出现的问题:
(1) Last_SQL_Error: Error ‘Duplicate entry ‘的问题
这个问题是因为插入重复主键导致从库不工作
解决:
第一种方法:stop slave; set GLOBAL SQL_SLAVE_SKIP_COUNTER=1; start slave;
第二种方法:修改mysql配置文件 /etc/my.cnf 在 [mysqld]下加一行 slave_skip_errors = 1062 ,保存.重启mysql
以上是关于mysql 主从复制的主要内容,如果未能解决你的问题,请参考以下文章