1.MySQL复制概述
mysql数据库支持同步复制、单向、异步复制,在复制的过程中一个服务器充当主服务器,而一个或多个服务器充当从服务器。
主服务器将更新写入二进制日志文件,并维护文件的索引以跟踪日志循环;这些日志可以记录发送到从服务器的更新。
当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置;从服务器接收从那时起发生的任何更新,然后*并等待主服务器通知新的位置。
注:当进行复制时,所有对复制中的表的更新必须在主服务器上进行;避免用户对主服务器上的表进行的更新与对从服务器上的表进行的更新之间的冲突。
2.MySQL数据复制的原理(3个进程)
MySQL复制基于主服务器在二进制日志bin-log中跟踪所有对数据的更改;因此,复制必须在主服务器上启用二进制日志,每个从服务器接收主服务器已经记录到中继日志relay-log保存的更新,以便从服务器可以对其数据拷贝执行相同的更新。
3.Linux下MySQL主从备份实验(单向备份)
环境准备:
centos6.0 64位
master:10.0.0.101
slave:10.0.0.102
(1)主服务器配置:
#vim /etc/my.cnf
#在[mysqld]标签下添加:
log-bin=mysql-bin #开启binlog日志
server-id=1 #为当前节点设置一个全局唯一的ID号
#重启数据库
service mysqld restart
#创建具有复制权限的数据库账号
mysql> grant replication slave on *.* to ‘slave‘@‘%‘ identified by ‘123456‘;
mysql> flush privileges;
#查看当前的bin-log日志和日志位置
mysql> show master status\G
*************************** 1. row ***************************
File: mysql-bin.000027
Position: 8442935
Binlog_Do_DB:
Binlog_Ignore_DB:
1 row in set (0.00 sec)
(2)从服务器配置
#vim /etc/my.cnf
#在[mysqld]标签下添加:
log-bin=mysql-bin #开启binlog日志
server-id=2 #为当前节点设置一个全局唯一的ID号
#重启数据库
service mysqld restart
mysql> change master to master_host=‘10.0.0.101‘,
-> master_user=‘slave‘,
-> master_password=‘123456‘,
-> master_log_file=‘mysql-bin.000027‘,
-> master_log_pos=8442935;
mysql> start slave;
mysql> show slave status \G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.0.0.101
Master_User: slave
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000027
Read_Master_Log_Pos: 8442935
Relay_Log_File: lfs-relay-bin.000002
Relay_Log_Pos: 253
Relay_Master_Log_File: mysql-bin.000027
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
#Slave_IO_Running和Slave_SQL_Running都为Yes表示成功