mysql主从复制的过称其实是:将一台服务器的数据复制到其他服务器上并重新执行一遍的。复制过程中一台服务器当作主服务器(Master),一台或多台服务器当作从服务器(SLave).主服务器将更新写入到二进制日志文件,并维护一个索引以跟踪日志循环。这些日志可以记录发送给从服务器的更新,当一个从服务器连接到主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置,从服务器接收从那时起的任何更新,然后封锁并等待主服务器通知新的更新。
整体上分为三个步骤:
1.master将改变记录到日志文件(binary log)中
2.slave复制二进制日志事件(binary log event)到中继日志(relay log)中
3.slave重做中继日志,将改变转化成自己的数据
环境:
系统:centos6.3
Master:10.10.0.224
Slave:10.10.0.226
1.创建备份帐号,只允许从服务器有权限
mysql> grant all privileges on *.* to backup@10.10.0.226 identified by ‘123456‘;
mysql> flush privileges;
2.拷贝数据
停掉mysql服务或者锁表,将master中的数据拷贝到slave中,保证两边数据的一致,并且确保数据同步结束之前禁止在master和slave进行写操作!
mysql> flush tables with read lock; #锁表
mysql> unlock tables; #解锁
3.配置master
# vim /etc/my.cnf
#选择唯一的server-id
server-id = (0--2^32-1)
#启动二进制日志
log-bin = mysql-bin
log-bin-index = mysql-bin.index
# service mysqld restart
# mysql
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 | 3318591 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
4.配置slave
# vim /etc/my.cnf
server_id = 2
log-bin = mysql-bin
log-bin-index = mysql-bin.index
relay-log = relay-log
relay-log-index = relay-log.index
5.连接至主服务器并开始复制数据
mysql> stop slave;
mysql> change master to master_host=‘10.10.0.224‘,master_port=‘3306‘master_user=‘backup‘,
master_password=‘123456‘,master_log_file=‘mysql-bin.000005‘,master_log_pos=360;
mysql> start slave;
mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.10.0.224
Master_User: backup
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000005
Read_Master_Log_Pos: 360
Relay_Log_File: relay-log.000002
Relay_Log_Pos: 251
Relay_Master_Log_File: mysql-bin.000005
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
*************************** 1. row ***************************
show processlist\G;可以查看I/0线程状态
本文出自 “ngames” 博客,请务必保留此出处http://ngames.blog.51cto.com/3187187/1655959
原文地址:http://ngames.blog.51cto.com/3187187/1655959