在不停止主服务器下配置从服务器

mysql version:5.1.56
master:192.168.110.2
slave:192.168.110.10

在master上赋予权限
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.110.10' IDENTIFIED BY 'slavepass';
备份你需要复制的数据库
mysqldump -u -p -h127.0.0.1 --master-data  test  >test.sql
配置从服务器,确保分配一个唯一的ID号并启动服务器
server-id=2

replicate-do-db=test  需要同步的数据库,如果没有定义,则同步所有
log-bin=mysql-bin

master-host=192.168.110.2
master-user=repl
master-password=slavepass
在从服务器上执行test.sql
在从服务器上执行slave start
如果没有配置master-host/master-user/master-password
需执行
CHANGE MASTER TO
                ->    MASTER_HOST='master_host_name',                ->    MASTER_USER='master_user_name',                ->    MASTER_PASSWORD='master_pass',                ->    MASTER_LOG_FILE='recorded_log_file_name', 在test.sql中提供              ->    MASTER_LOG_POS=recorded_log_position;      在test.sql中提供就OK了

注:这里最主要的是--master-data参数,这个会记录当前master的二进制日志名和偏移量
问题:当备份的数据库很大并且有持续的数据写入时会不会出错?

例如当前备份数据库4G,持续写入。二进制日志名 mysql-bin.000016 偏移量 12456
此时使用mysqldump备份数据库,记录二进制日志名和偏移量,由于有数据写入,会不会有些备份的数据对应的二进制日志名和偏移量就不是记录的,比如是 mysql-bin.000016 12556
此时就会造成复制问题。

解决方法:在备份时加上read lock,但会防止数据的写入

相关阅读:

相关推荐