本文内容主要来源:官方文档中文版第6章“MySQL中的复制”。本文只记录配置要点。
1.主数据库配置(通常在/etc/my.cnf):
在[mysqld]中加入以下几条配置:
server-id=1(为任意值)
log-bin=mysql-bin
binlog_do_db=你要复制的数据库(实际上是要做二进制日志的数据库)
binlog_ignore_db=mysql(要忽略的数据库)
重启MySQL服务器后进入client,创建数据库用户以便“从数据库”连接:
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;
记录File和Position的值(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
来源:oschina
链接:https://my.oschina.net/u/109451/blog/36435