本文内容主要来源:官方文档中文版第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;
记录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;