Mysql有很多模式,ndbcluster,主从,主主等等...
Mysql主从模式的好处,可以实现读写分离,提供更大的并发响应,与nginx结合还可以达到负载均衡的作用。
主从时间通过binlog进行数据的同步,以下是数据同步的主要步骤
首先,Master会将改变记录到二进制日志(binary log)中(改变的记录叫做二进制日志事件,binary log events)
然后,slave将master的binary log events拷贝到它自己的中继日志中(relay log)
最后,slave重做中继日志中的事件,将改变反映到自身的数据中。
?
环境:1个Master,1个slave
具体步骤:
1. Master上进行如下配置vi /etc/my.cnf
[mysqld] server-id=1 read-only=0 #0代表支持可读可写 binlog-do-db=test #如果此句注释就是除了禁止同步的数据库,均进行同步 binlog-ignore-db=mysql #禁止同步的数据库
?
2. Slave上进行如下配置vi /etc/my.cnf
server-id=2 binlog-do-db=test #更新的数据库 binlog-ignore-db=mysql #不更新的数据库 read_only=1 #从数据库只读 slave-skip-errors=1064 1146 #该项可以忽略一些不想记录的错误
?
?3. Master上建立帐户并授权给Slave
GRANT REPLICATION SLAVE ON *.* to 'username'@'SlaveIP' identified by 'password';
??? 执行show master status;File下面的例如mysql-bin.000001(需要同步的log文件)? Position 112(偏移量)
?
4. Slave上进行同步
mysql>change master to master_host='MasterIP',master_user='username',master_password='password',master_log_file='mysql-bin.000001',master_log_pos=112; #指定主节点以及同步的log-bin文件和偏移量 mysql>start slave; #启动从节点 show slave status\G #查看slave的状态 注意:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态
?
??