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 'xxxx'; 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='xxxx',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的状态是否正常