您的位置:首页 > 数据库 > MySQL

MySQL主从复制

2017-11-08 00:00 295 查看
MySQL主从复制

一、两台mysql服务器
master 192.168.1.90
slave 192.168.1.70

二、mysql版本号:5.5.28

三、配置
1. 配置Master
查找mysql配置文件: find / -name my.cnf
修改mysql配置文件: vi /etc/my.cnf,在[mysqld]下添加如下配置:
# 日志文件名
log-bin = mysql-bin

# 主数据库端ID号
server-id = 1
重启mysql
service mysqld restart
再去创建用于主从同步的账号
grant replication slave on *.* to 'slave_account'@'%' identified by 'ytkj';
flush privileges;
查看master的状态
show master status;
注:执行完这个步骤后不要再操作主数据库了,防止主数据库状态值变化

2. 配置Slave
查找mysql配置文件: find / -name my.cnf
修改mysql配置文件: vi /etc/my.cnf,在[mysqld]下添加如下配置:
# 从数据库端ID号
server-id = 2
重启mysql
service mysqld restart
执行同步命令,设置主数据库ip,同步帐号密码,同步位置
change master to master_host='192.168.1.90',master_user='slave_account',master_password='ytkj',master_log_file='mysql-bin.000001',master_log_pos=180;
开启同步功能
start slave;
检查从数据库状态
show slave status\G;

四、主从不一致时,怎么重新同步
1. 先停止slave上的同步服务,删除slave上的旧数据
stop slave;
drop database d1;
drop database d2;
2. 对master服务器的数据库加锁,防止对数据库的更新操作
flush tables with read lock;
3. 备份maser上的数据,同时将备份的sql文件传递到slave机器上
mysqldump -u root -p --databases d1 d2 > bak.sql,将bak.sql放在/opt目录下
scp bak.sql root@192.168.1.70:/opt
4. 重置master服务
reset master;
说明:RESET MASTER将删除所有的二进制日志,创建一个.000001的空日志
5. 对master服务器的数据库解锁
unlock tables;
6. 在slave服务器上/opt目录下执行:source bak.sql,将master上备份的数据导入到slave
7. 重置slave服务
reset slave;
说明:RESET SLAVE将清除slave上的同步位置,删除所有旧的同步日志,使用新的日志重新开始,这正是我们想要的
8. 重启slave服务
start slave;
9. 可以在slave上执行:show slave status\G; 查看slave的状态是否正常
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql 主从