MySQL主从(Master-Slave)复制

本文内容主要来源:官方文档中文版第6章“MySQL中的复制”。本文只记录配置要点。 html

1.主数据库配置(一般在/etc/my.cnf): mysql

[mysqld]中加入如下几条配置: sql

server-id=1(为任意值) shell

log-bin=mysql-bin 数据库

binlog_do_db=你要复制的数据库(其实是要作二进制日志的数据库) 服务器

binlog_ignore_db=mysql(要忽略的数据库) dom

重启MySQL服务器后进入client,建立数据库用户以便“从数据库”链接: spa

GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';
(用户名、密码以及从服务器主机地址可自定义)

而后刷新读写缓冲区并锁定表读写操做: 线程

FLUSH TABLES WITH READ LOCK;
这个时候再另外链接到主机shell(不要关闭当前MySQL链接,不然锁定会解除),开始复制数据库到从数据库(事先要建立同名数据库,也能够使用“ mysqladmin -h 从服务器地址  create 数据库名”进行建立):

mysqldump --opt 要复制的数据库 -p主数据库root密码 -R -B | mysql -h从服务器地址 要复制的数据库名 -p从数据库root密码 日志

复制完后,再切换到MySQL client执行:

SHOW MASTER STATUS;

记录FilePosition的值(binlog的位置),留待后用。接着执行:

UNLOCK TABLES;

如今能够切换到从服务器shell。

2.从服务器配置,数据库配置文件:

一样在my.cnf文件中加入:

server-id=1(为任意值,但不能与主数据库值或其它从数据库值相同)

而后链接client,执行以下命令:

CHANGE MASTER TO MASTER_HOST='主数据库地址',MASTER_USER='repl',MASTER_PASSWORD='slavepass',
MASTER_LOG_FILE='mysql-bin.000024',MASTER_LOG_POS=87167417;

最后的“MASTER_LOG_FILE”和“MASTER_LOG_POS”就是刚才在主机记录的数据。

最后执行命令启动从数据库复制线程:

start slave;
slave start;

参考:http://yahoon.blog.51cto.com/13184/33231

相关文章
相关标签/搜索